精华内容
下载资源
问答
  • 创建主键约束的三种方式
    千次阅读
    2021-03-04 01:09:45

    主键约束:唯一,不重复,不能为空  primary key

    一个表中有且只有一个主键约束

    1.创建表的同时创建主键约束

    格式一:

    create table 表名(

    列名1  数据类型 primary key,

    列名2 数据类型

    );

    主键约束名字的写法: PK_列名

    格式二:

    create table 表名(

    列名1 数据类型,

    列名2 数据类型,

    constraint  主键约束的名字  primary key(列名1)

    );

    格式三:

    create table 表名(

    列名1 数据类型,

    列名2 数据类型,

    primary key(列名1)

    );

    2.针对已经存在的表,添加主键约束

    格式一:

    alter table 表名 modify 列名 数据类型 primary key;

    格式二:

    alter table 表名 add primary key(列名);

    格式三:

    alter table 表名 add constraint 主键约束的名字 primary key(列名);

    3.删除主键约束

    格式:alter table 表名 drop primary key;

    更多相关内容
  • mysql中创建主键三种方式 方式一 给uid设置主键 ** CREATE TABLE user( uid INT PRIMARY KEY, uname VARCHAR(10), address VARCHAR(20) ) ** 方式二 给uid设置主键 **CREATE TABLE user( uid INT, uname...

    mysql中创建主键的三种方式

    方式一

    给uid设置主键

    **
    CREATE TABLE user(
       uid INT PRIMARY KEY,
       uname VARCHAR(10),
       address VARCHAR(20)
    )
    **
    

    方式二

    给uid设置主键

    **CREATE TABLE user(
       uid INT,
       uname VARCHAR(10),
       address VARCHAR(20),
       PRIMARY KEY(uid)
    )
    **
    

    方式三

    给uid设置主键

    CREATE TABLE user(
     uid INT,
     uname VARCHAR(10),
     address VARCHAR(20)
    )
    ALTER TABLE user ADD PRIMARY KEY(uid);
    
    

    联合主键创建方式

    给uid和uname设置联合主键

    CREATE TABLE user(
    	uid INT,
    	uname VARCHAR(10),
    	address VARCHAR(20),
    	PRIMARY KEY(uid,uname)
    )
    
    

    删除主键约束

    ALTER TABLE USER DROP PRIMARY KEY;
    
    

    这一点知识是Mysql的基础,但是容易忘记,所以写下笔记,希望能帮助到你,

    展开全文
  • Oracle创建主键三种方式

    万次阅读 2021-03-05 10:11:58
    Oracle中创建主键,可以有几种方式。第一,在建表的时候同时指定主键,SQL> create table t_pk_01 (id number, constraint pk_id...

    Oracle中创建主键,可以有几种方式。

    第一种,在建表的时候同时指定主键,

    SQL> create table t_pk_01 (id number, constraint pk_id_01 primary key(id));
    Table created.
    

    创建主键约束的同时,他会自动创建一个唯一索引,

    SQL> select table_name, constraint_name, constraint_type from user_constraints where table_name='T_PK_01';
    TABLE_NAME                     CONSTRAINT_NAME                C
    ------------------------------ ------------------------------ -
    T_PK_01                        PK_ID_01                       P
    
    
    SQL> select table_name, index_name, uniqueness from user_indexes where table_name='T_PK_01';
    TABLE_NAME                     INDEX_NAME                     UNIQUENES
    ------------------------------ ------------------------------ ---------
    T_PK_01                        PK_ID_01                       UNIQUE
    

    第二种,创建表,再alter table增加主键约束,

    SQL> create table t_pk_02 (id number);
    Table created.
    
    
    SQL> alter table t_pk_02 add constraint pk_id_02 primary key (id);
    Table altered.
    

    我们从10046来看下alter table到底做了什么,

    SQL> alter session set events '10046 trace name context forever, level 12';
    Session altered.
    
    
    SQL> alter session set tracefile_identifier='bisal';
    Session altered.
    
    
    SQL> alter table t_pk_02 add constraint pk_id_02 primary key (id);
    Table altered.
    
    
    SQL> alter session set events '10046 trace name context off';
    Session altered.
    
    
    SQL> select distinct(m.sid),p.pid,p.tracefile from v$mystat m,v$session s,v$process p where m.sid=s.sid and s.paddr=p.addr;
           SID        PID   TRACEFILE
    ---------- ----------- -------------------------------------------------------------------------------
           189         22   /u01/app/oracle/diag/rdbms/dcm/DCM/trace/DCM_ora_18653_bisal.trc
    

    从trace我们能看到,对T_PK_02加了share模式锁,指定nowait,先创建的约束,然后创建了唯一索引,

    ...
    LOCK TABLE "T_PK_02" IN SHARE MODE  NOWAIT
    ...
    alter table t_pk_02 add c
    ...
    update con$ ...
    ...
    insert into con$ ...
    ...
    CREATE UNIQUE INDEX "BISAL"."PK_ID_02" on "BISAL"."T_PK_02"("ID") NOPARALLEL
    

    第三种,分开创建主键约束和主键索引。

    主要有两个场景。

    (1) 当使用CTAS创建表时,

    SQL> create table t_pk_03 as select * from t_pk_01;
    Table created.
    

    主键约束并未带过来,

    SQL> select table_name, constraint_name, constraint_type from user_constraints where table_name='T_PK_03';
    no rows selected
    
    
    SQL> select table_name, index_name, uniqueness from user_indexes where table_name='T_PK_03';
    no rows selected
    

    此时如果表中存在很多的数据,直接使用方法2,可能会带来两个问题,

    1. 创建唯一索引的用时。

    2. 唯一索引允许包含空值,因为主键约束不允许空值,还需要判断字段是否为空的用时。

    对(1),从trace,我们可以看到,默认创建唯一索引的时候,并未指定online,因此用时取决于数据量。

    对(2),如果字段设置NOT NULL,应该不需要判断,如果没设置,则需要判断字段中是否含空值,还是取决于表的数据量。

    因此,可以选择先在线创建唯一索引,再增加主键约束,从trace能看到,此时增加主键约束的过程中,不会再操作索引,

    SQL> create unique index pk_id_03 on t_pk_03(id) online;
    Index created.
    
    
    SQL> alter table t_pk_03 add constraint pk_id_03 primary key (id);
    Table altered.
    

    (2) 往往在生产环境,数据表空间和索引表空间是分开的,如果采用第一种和第二种的方式,主键索引会创建在执行用户的默认表空间,很可能是数据表空间,因此分开创建,还可以在创建索引的时候,指定tablespace,明确索引表空间,

    SQL> create unique index pk_id_03 on t_pk_03(id) tablespace xxx;
    Index created.
    

    近期更新的文章:

    小白学习MySQL - 数据库软件和初始化安装

    小白学习MySQL - 闲聊聊

    Redis和Sentinel的安装部署和配置

    “火线”和“零线”

    通过索引提升SQL性能案例一则

    如何手动添加jar包到maven本地库?

    1元股权转让的一点思考

    如何打造一个经常宕机的业务系统?

    Linux恢复误删文件的操作

    Linux的scp指令使用场景

    Oracle处理IN的几种方式

    如何搭建一支拖垮公司的技术团队?

    IP地址解析的规则

    MySQL的skip-grant-tables

    国产数据库不平凡的一年

    Oracle要求顺序的top数据检索问题

    日常工作中碰到的几个技术问题

    了解一下sqlhc

    Oracle的MD5函数介绍

    Oracle 19c的examples静默安装

    sqlplus登录缓慢的解决

    VMWare 11安装RedHat Linux 7过程中碰到的坑

    COST值相同?是真是假?

    Oracle 11g的examples静默安装

    同名的同义词和视图解惑

    v$和v_$的一些玄机

    文章分类和索引:

    公众号700篇文章分类和索引

    展开全文
  • 《Oracle创建主键三种方式》曾说了创建主键三种方式,对第三种方式的作用,提到了这个原因,往往在生产环境,数据表空间和索引表空间是分开的,如果采用第一和第二方式,主键索引会创建...

    Oracle创建主键的三种方式》曾说了创建主键的三种方式,对第三种方式的作用,提到了这个原因,

    往往在生产环境,数据表空间和索引表空间是分开的,如果采用第一种和第二种的方式,主键索引会创建在执行用户的默认表空间,很可能是数据表空间,因此分开创建,还可以在创建索引的时候,指定tablespace,明确索引表空间,

    bisal,公众号:bisal的个人杂货铺Oracle创建主键的三种方式

    经过TigerLiu老师的提醒,描述有误,其实是用第一种和第二种方式,都可以指定独立的索引表空间,如下所示。

    第一种,直接在定义中,增加using index tablespace xxx,

    SQL> create table t01 (id number, constraint pk_id_01 primary key(id) using index tablespace index_tbs);
    Table created.
    

    索引会创建在指定的表空间中,

    SQL> select table_name, index_name, tablespace_name, uniqueness from user_indexes where table_name='T01';
    TABLE_NAME                INDEX_NAME                TABLESPACE_NAME                UNIQUENES
    ------------------------- ------------------------- ------------------------------ ---------
    T01                       PK_ID_01                  INDEX_TBS                      UNIQUE
    

    第二种,alter table主键的时候,同样增加using index tablespace,

    SQL> create table t01 (id number);
    Table created.
    
    
    SQL> alter table t01 add constraint pk_id_t01 primary key (id) using index tablespace index_tbs;
    Table altered.
    
    SQL> select table_name, index_name, tablespace_name, uniqueness from user_indexes where table_name='T01';
    TABLE_NAME                INDEX_NAME                TABLESPACE_NAME                UNIQUENES
    ------------------------- ------------------------- ------------------------------ ---------
    T02                       PK_ID_T01                 INDEX_TBS                      UNIQUE
    

    其实Oracle的官方手册,就提到了创建主键约束/唯一约束时,可以指定表空间,如下是11g的《SQL Language Reference》,

    但是有些限制,

    并给出了示例,

    CREATE TABLE promotions_var3
        ( promo_id         NUMBER(6)
        , promo_name       VARCHAR2(20)
        , promo_category   VARCHAR2(15)
        , promo_cost       NUMBER(10,2)
        , promo_begin_date DATE
        , promo_end_date   DATE
        , CONSTRAINT promo_id_u UNIQUE (promo_id, promo_cost)
             USING INDEX (CREATE UNIQUE INDEX promo_ix1
                ON promotions_var3 (promo_id, promo_cost))
        , CONSTRAINT promo_id_u2 UNIQUE (promo_cost, promo_id) 
             USING INDEX promo_ix1);
    

    的确能在create table的同时,创建索引,如下所示,

    SQL> create table t01 (id number, constraint pk_t01_id primary key(id) using index
      2  (create unique index idx_pk_t01_id on t01(id) online tablespace index_tbs));
    Table created.
    

    有一点值得注意,文中提到了,使用using index的时候,不能指定并行,

    You cannot specify the parallel_clause of index_attributes.

    一开始我理解错了,其实他指的是,using index子句不能指定parallel,

    会提示parallel是个未实现的特性,

    SQL> create table t01 (id number, constraint pk_t01_id primary key(id) using index parallel 16 (create unique index idx_pk_t01_id on t01(id) online tablespace index_tbs);
                                                                                       *
    ERROR at line 1:
    ORA-03001: unimplemented feature
    

    但是不能阻止create index指定并行,

    SQL> create table t01 (id number, constraint pk_t01_id primary key(id) using index
      2  (create unique index idx_pk_t01_id on t01(id) parallel 16 online tablespace index_tbs));
    Table created.
    

    可以看到,确实指定了并行,

    SQL> select table_name, index_name, tablespace_name, uniqueness, degree
      2  from user_indexes where table_name='T01';
    TABLE_NAME      INDEX_NAME      TABLESPACE_NAME UNIQUENES DEGREE
    --------------- --------------- --------------- --------- ---------------
    T02             IDX_PK_T01_ID   INDEX_TBS       UNIQUE    16
    

    一个创建主键的操作就会有这么多种语法格式,从这个案例看,只能说自己要学习的还很多,“由点及面”的过程,确实很艰难,继续积累了。

    近期更新的文章:

    Oracle优化器的“短路”

    小白学习MySQL - MySQL会不会受到“高水位”的影响?

    MySQL行转列的小需求

    Oracle的greatest和least函数

    我的股市生涯

    Oracle创建主键的三种方式

    非Oracle Linux下Oracle 19c CDB数据库安装

    案例纠正一则

    小白学习MySQL - 数据库软件和初始化安装

    小白学习MySQL - 闲聊聊

    Redis和Sentinel的安装部署和配置

    “火线”和“零线”

    通过索引提升SQL性能案例一则

    如何手动添加jar包到maven本地库?

    1元股权转让的一点思考

    如何打造一个经常宕机的业务系统?

    Linux恢复误删文件的操作

    Linux的scp指令使用场景

    Oracle处理IN的几种方式

    如何搭建一支拖垮公司的技术团队?

    IP地址解析的规则

    MySQL的skip-grant-tables

    国产数据库不平凡的一年

    Oracle要求顺序的top数据检索问题

    日常工作中碰到的几个技术问题

    了解一下sqlhc

    Oracle的MD5函数介绍

    Oracle 19c的examples静默安装

    sqlplus登录缓慢的解决

    VMWare 11安装RedHat Linux 7过程中碰到的坑

    COST值相同?是真是假?

    Oracle 11g的examples静默安装

    文章分类和索引:

    公众号700篇文章分类和索引

    展开全文
  • 数据库---主键约束

    千次阅读 2018-05-07 17:35:39
    1、设置主键约束(1)、方式一:创建表时,在字段在描述处声明指定字段为主键;CREATE TABLE 表名( 字段 类型(长度) PRIMARY KEY, 字段 类型(长度));CREATE TABLE STUDENT( STU_ID INT PAIMARY KEY, STU_NAME VARCHAR...
  • mysql怎么去除主键约束

    千次阅读 2021-01-18 22:47:10
    ~# lsb_release -aNo LSB modules 2021-01-16 17:48:17 一般变量使用我们都是放在函数里面,这里开发需求,要在SQL直接使用变量,方便查找一些问题,比如时间变量,要根据时间进行筛选这里有三种方法可以实现1.psql...
  • 设置表字段的主键约束(PRIMARY KEY,PK) 主键是表的一个特殊字段,能唯一标识该表中的每条信息。主键和记录的关系,如同身份证和人的关系。主键用来标识每个记录,每个记录的主键值都不同。身份证用来表明人的身份...
  • 目录一、约束1.1 主键约束1.1.1 简介1.1.2 添加主键约束1.1.2 删除主键约束1.2 唯一约束1.2.1 简介1.2.2 添加唯一约束1.1.3 删除唯一约束1.3 非空约束1.4 默认约束 一、约束 1.1 主键约束 1.1.1 简介 在设计表中给...
  • 大家好啊,我是大田。 今天来看看MySQL其中三种约束。 约束的作用: 对表中的数据进行限制,...2)语法格式:3方法添加主键约束 # 方式1CREATETABLEemp2(eid INT PRIMARY KEY, -- 设置主键 唯一 非空ename V...
  • MySQL创建主键

    2021-02-02 10:34:41
    MySQL InnoDB 存储引擎是必须要有一...创建主键三种方式:在建表语句字段后指定 PRIMARY KEY 关键字设置主键,这种方式只能定义主键为一个字段的情况,如下所示:CREATE TABLE `t_user` (`id` int(11) NOT NULL A...
  • 主键约束创建表时,添加主键约束,并且完成主键自增长auto_increment 主键约束:删除自动增长 主键约束:添加自动增长 1.4 约束种类--唯一约束 唯一约束:在创建表时,添加唯一约束 唯一约束:删除唯一约束 ...
  • 【简答题】1 、零件的成型原理可分为哪类?各举几个例子说明. 2 、机械加工方法有哪些?其适用范围是什么? 3 、切削加工的工作原理及机床刀具名称. 4 、电火花加工的原理与应 5、电解加工的应用有哪些【单选题】采用...
  • MYSQL数据库约束类型

    2021-01-19 04:58:42
    主键约束(primary key)主键约束要求主键列的数据唯一,并且不能为空。主键分为两类型:单字段主键和多字段联合主键。1.单字段主键写法创建列表数据时create table a(​name char(9) primary key,​age int);创建...
  • 主键的特点和三种创建方式

    千次阅读 2016-12-20 16:27:37
    -- 第一添加主键方式 CREATE DATABASE javaee20; USE javaee20; CREATE TABLE student( ...-- constraint 约束 主键的第二添加方式 -- 图书的类别表category CREATE TABLE category( id
  • 细说 MySQL 创建表的三种方法

    千次阅读 多人点赞 2021-08-15 21:38:02
    MySQL 则实现了三种创建表的方法,支持自定义表结构或者通过复制已有的表结构(CREATE TABLE ... LIKE 以及 CREATE TABLE ... SELECT)来创建新表,本文给大家分别介绍一下这些方法的使用和注意事项。
  • 主要是介绍并添加四种约束,运用通俗易懂方法,让大家快速掌握约束!!!
  • MySQL讲义第10讲——完整性约束主键(PRIMARY KEY)约束 主键(primary key)是指表中的一个字段或多个字段的组合,其值能够唯一区分表中的每个行。主键用来表示一个特定的行。如果一个表没有定义主键,当对表进行...
  • 外键列和参照列必须创建索引,如果外键列不存在索引,mysql将自动创建索引。 一、SQL语句创建数据表并设置主外键关系 create table demo.ChineseCharInfo ( ID int not null auto_increment, Hanzi varchar(10) ...
  • 我们有两种方式可以创建数据表的和定义主键:SSMS界面直接创建、T-SQL语句。 1.SSMS界面创建表 (1).登陆你的数据库,点开右键”表”—-》新建—-》表。 (2).列名就是该列名称,数据类型就是前文所讲的数据类型。允许...
  • postgresql 约束主键、外键

    千次阅读 2020-05-28 15:34:44
    由于工作需要,近期在学习postgresql数据库方面的东西...要创建一个表,我们要用到CREATE TABLE命令。在这个命令中 我们需要为新表至少指定一个名字、列的名字及数据类型。例如: CREATE TABLE products ( product...
  • 内容导航两个字段联合唯一 表级约束约束的联合主键约束 primary key PK Java(打卡第七十一二天) 最近忙于数电实验,如果有关于verilog方面的问题,欢迎交流学习 先简单查询一下之前的内容,查询city表前200的...
  • Oracle主键约束创建,添加和删除

    千次阅读 2014-07-04 18:10:58
    Oracle主键约束的创建,添加和删除  2010-06-27 10:40:16| 分类:learning...1、创建表的同时创建主键约束 一、无命名 create table accounts ( accounts_number number primary key, accounts_balance number
  • MySQL约束

    2022-01-16 19:57:52
    主键约束1.1 添加单列主键1.2添加多列主键(联合主键)1.3通过修改表结构添加主键1.4删除主键约束二. 自增长约束2.1 指定自增字段初始值2.2 delete和truncate在删除后自增列的变化. 非空约束3.1添加非空约束3.2...
  • 2022/2/26 一、约束 ...主键约束:primary key 4.外键约束:foreign key 1.非空约束:not null USE db1; -- 创建表时添加非空约束 CREATE TABLE stu( id INT, NAME VARCHAR(20) NOT NULL -- nam...
  • 接下来就分别看看这三种方式的处理办法。 IGNORE 使用ignore当插入的值遇到主键(PRIMARY KEY)或者唯一键(UNIQUE KEY)重复时自动忽略重复的记录行,不影响后面的记录行的插入, 创建测试表 CREATE TABLE Tignore...
  • 如果你想给表中多个字段设置主键的时候,那在建表的时候,必须同时创建,如果当初建表的时候,只创建了一个主键,但是后来你还想往里边在设置一个主键,那是不允许的,创键多个主键时必须要同时创建
  • Mysql外键约束的几建立方式与区别

    千次阅读 2017-06-01 17:38:40
    *Mysql外键约束的几建立方式与区别*一.理论解释 外键约束的概念大概可以理解为对一张表的数据进行操作修改时受到另一张表相关联数据的影响。 ① 建立外键的语法大致如下:Foreign key (【外键名】) references...
  • MySQL创建表和约束条件(四)

    千次阅读 多人点赞 2019-11-15 14:09:16
    上一章简单介绍了 MySQL的数据类型(),如果没有看过,请观看上一章 一. 创建表 上一章时,我们学习了 MySQL的数据类型, 就像Java 知道了 int,string 之后,就该学习类了, 现在,我们知道了数据类型,就该去学习...
  • 1.table普通创建 mysql>use web; #选择要使用的数据库 mysql>create t...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 62,756
精华内容 25,102
关键字:

创建主键约束的三种方式