精华内容
下载资源
问答
  • 主键(PRIMARY KEY)”的完整称呼是“主键约束”。...主键约束即在中定义一个主键来唯一确定中每一行数据的标识符。主键可以是中的某一列或者多列的组合,其中由多列组合的主键称为复合主键主键应该...

    “主键(PRIMARY KEY)”的完整称呼是“主键约束”。MySQL 主键约束是一个列或者列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可以强制表的实体完整性。那么在MySQL中如何添加主键约束?下面本篇文章就给大家介绍一下。

    479033c43277c1e719aabfe7a595166f.png

    主键约束即在表中定义一个主键来唯一确定表中每一行数据的标识符。主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。主键应该遵守下面的规则:

    ● 每个表只能定义一个主键。

    ● 主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在两行数据有相同的主键值。这是唯一性原则。

    ● 一个列名只能在复合主键列表中出现一次。

    ● 复合主键不能包含不必要的多余列。当把复合主键的某一列删除后,如果剩下的列构成的主键仍然满足唯一性原则,那么这个复合主键是不正确的。这是最小化原则。

    1、在创建表时添加主键约束

    在 CREATE TABLE 语句中,主键是通过 PRIMARY KEY 关键字来指定的。

    在定义列的同时指定主键,语法规则如下: PRIMARY KEY [默认值]

    例:在 test_db 数据库中创建 tb_emp 1 数据表,其主键为 idmysql> CREATE TABLE tb_emp1

    -> (

    -> id INT(11) PRIMARY KEY,

    -> name VARCHAR(25),

    -> deptId INT(11),

    -> salary FLOAT

    -> );

    Query OK, 0 rows affected (0.37 sec)

    mysql> DESC tb_emp1;

    +--------+-------------+------+-----+---------+-------+

    | Field | Type | Null | Key | Default | Extra |

    +--------+-------------+------+-----+---------+-------+

    | id | int(11) | NO | PRI | NULL | |

    | name | varchar(25) | YES | | NULL | |

    | deptId | int(11) | YES | | NULL | |

    | salary | float | YES | | NULL | |

    +--------+-------------+------+-----+---------+-------+

    4 rows in set (0.14 sec)

    在定义完所有列之后,指定主键的语法格式为:[CONSTRAINT ] PRIMARY KEY [字段名]

    示例:在 test_db 数据库中创建 tb_emp 2 数据表,其主键为 idmysql> CREATE TABLE tb_emp2

    -> (

    -> id INT(11),

    -> name VARCHAR(25),

    -> deptId INT(11),

    -> salary FLOAT,

    -> PRIMARY KEY(id)

    -> );

    Query OK, 0 rows affected (0.37 sec)

    mysql> DESC tb_emp2;

    +--------+-------------+------+-----+---------+-------+

    | Field | Type | Null | Key | Default | Extra |

    +--------+-------------+------+-----+---------+-------+

    | id | int(11) | NO | PRI | NULL | |

    | name | varchar(25) | YES | | NULL | |

    | deptId | int(11) | YES | | NULL | |

    | salary | float | YES | | NULL | |

    +--------+-------------+------+-----+---------+-------+

    4 rows in set (0.14 sec)

    2、在创建表后添加主键约束

    创建表后,可以在修改数据表时添加主键约束,语法规则为:ALTER TABLE ADD PRIMARY KEY();

    示例:修改数据表 tb_emp3,将字段 id 设置为主键mysql> ALTER TABLE tb_emp3

    -> ADD PRIMARY KEY(id);

    Query OK, 0 rows affected (0.94 sec)

    Records: 0 Duplicates: 0 Warnings: 0

    mysql> DESC tb_emp3;

    +--------+-------------+------+-----+---------+-------+

    | Field | Type | Null | Key | Default | Extra |

    +--------+-------------+------+-----+---------+-------+

    | id | int(11) | NO | PRI | NULL | |

    | name | varchar(30) | YES | | NULL | |

    | deptId | int(11) | YES | | NULL | |

    | salary | float | YES | | NULL | |

    +--------+-------------+------+-----+---------+-------+

    4 rows in set (0.12 sec)

    3、设置复合主键

    也可以在创建表时添加复合主键,此时主键由多个字段联合组成,语法规则如下:PRIMARY KEY [字段1,字段2,…,字段n]

    示例:创建数据表 tb_emp4,假设表中没有主键 id,为了唯一确定一个员工,可以把 name、deptId 联合起来作为主键mysql> CREATE TABLE tb_emp4

    -> (

    -> name VARCHAR(25),

    -> deptId INT(11),

    -> salary FLOAT,

    -> PRIMARY KEY(id,deptId)

    -> );

    Query OK, 0 rows affected (0.37 sec)

    mysql> DESC tb_emp4;

    +--------+-------------+------+-----+---------+-------+

    | Field | Type | Null | Key | Default | Extra |

    +--------+-------------+------+-----+---------+-------+

    | name | varchar(25) | NO | PRI | NULL | |

    | deptId | int(11) | NO | PRI | NULL | |

    | salary | float | YES | | NULL | |

    +--------+-------------+------+-----+---------+-------+

    3 rows in set (0.14 sec)

    展开全文
  • plsql developer怎么设置主键自动递增?没有设置主键auto increment 的功能,需要自己白那些序列和触发器实现主键自动递增,具体教程一起看看吧。示例:创建表menu:[sql]create table menu( menuId number(10) not ...

    plsql developer怎么设置主键自动递增?没有设置主键auto increment 的功能,需要自己白那些序列和触发器实现主键自动递增,具体教程一起看看吧。

    示例:

    创建表menu:

    [sql]

    create table menu( menuId number(10) not null primary key,

    name varchar2(40) not null,

    id_parent number(10) not null,

    url varchar2(300) null);

    创建序列menu_autoinc_seq:

    [sql]

    create sequence menu_autoinc_seq

    minvalue 1

    maxvalue 99999999

    start with 1

    increment by 1

    nocycle

    nocache

    order;

    创建触发器menu_autoinc_tg:

    [sql]

    create or replace trigger menu_autoinc_tg

    before insert on menu for each row

    begin

    select menu_autoinc_seq.nextval into :new.menuId from dual;

    end menu_autoinc_tg;

    其中end语句可以写成end;

    在Command window进行创建数据库对象的时候,如果使用到了多行语句,可在结束后另起一行输入/

    测试:

    [sql]

    insert into menu values('','个人事务',0,'indi.php');

    insert into menu values('','公共事务',0,'public.php');

    展开全文
  • 编写创建表sql代码;2.设置联合主键;3.执行代码,发现出现错误;4.解决方案:给id自增列加UNIQUE唯一索引;5.代码执行成功;6.联合主键创建成功。7.SQL示例代码:USE testCREATE TABLE `test_table` (`id` INT(...

    mysql 中有时候会遇到多个字段来表示数据的唯一性,那么这里就会用到组合主键了。

    相关mysql视频教程推荐:《mysql教程》

    1.编写创建表sql代码;

    75e60cdec904c138b77e4d9188465d48.png

    2.设置联合主键;

    040155396077ab30124a1d70a6ffa50e.png

    3.执行代码,发现出现错误;

    1de36c33fc7ac5c1aedc9b3a312252f7.png

    4.解决方案:给id自增列加UNIQUE唯一索引;

    4704d82483bd02802ba7ea850bc41144.png

    5.代码执行成功;

    4784740e8df5a8f550fc1c988172bed1.png

    6.联合主键创建成功。

    5a786126f7f934531a1d8cfe28e8b25f.png

    7.SQL示例代码:USE test

    CREATE TABLE `test_table` (

    `id` INT(11) NOT NULL AUTO_INCREMENT UNIQUE COMMENT '自增',

    `realName` VARCHAR(50) CHARACTER SET gbk DEFAULT NULL COMMENT '真实姓名',

    `area_id` VARCHAR(50) CHARACTER SET gbk DEFAULT NULL COMMENT '地区编号',

    `enter_time` INT(11) DEFAULT NULL COMMENT '录入时间',

    `mark` VARCHAR(60) CHARACTER SET gbk DEFAULT NULL COMMENT '备注',

    PRIMARY KEY (`realName`,`area_id`)

    ) ENGINE=MYISAM AUTO_INCREMENT=1133 DEFAULT CHARSET=gbk;

    展开全文
  • 表设置主键和自增可以通过sql的方式,也可以使用工具navicat图形化的方式设置主键洱和自增。1、打开navicat工具,连接上mysql服务器,选择完数据库之后,选择一个右击选择设计(这里为了演示测试,随便选择一个...

    279d4c98ac53db99bbc8183d5dfc3465.png

    mysql数据库创建一张表之后,为了有一个标识某一条记录,一般都会有一个唯一id,这个id可以设置为主键和自增的方式,这样在插入新的记录的时候,都会随着之前的id自动递增。为表设置主键和自增可以通过sql的方式,也可以使用工具navicat图形化的方式设置主键洱和自增。

    1、打开navicat工具,连接上mysql服务器,选择完数据库之后,选择一个表右击选择设计表(这里为了演示测试,随便选择一个表即可)

    c5cb62f2f6072879045c60f9d663e255.png

    2、在设计表页面,可以看到当前表的所有字段信息,我们选择的学生表有一个id字段,目前该表没有主键字段

    b4c8f9f4198c4f68e6f82d1394e62d68.png

    3、如图,在最后一列右击选择主键,即可将该字段设置为主键,也可以直接点击鼠标左键,可以快速添加和取消主键

    3c4413c247ff6ddd644541349d1f1465.png

    4、设置完主键之后,可以看到一把锁的标识,并且有一个1字,因为一个表可以给多个字段添加主键,则为联合主键,这样就显示为主键1,主键2等

    5dcd87b2ded09576d1647c861754b5b3.png

    5、主键设置完成之后,还没有自增,选择id字段之后,在下方,如图,勾选自动递增,这样id在每次插入记录之后都会自增一个值

    b0792651c25ecbd4bd81d3b75d42b217.png

    展开全文
  • 方法一: create table test_a ( id serial, name character varying(128), constraint pk_test_a_id primary key( id) ); 方法二: ...create table test_b( ...这两种方法用的是pg的serial...方法三:先创建主键表 cre.
  • 今天在改别人的一个代码中发现一个问题,要创建一个uuid类型的主键 CREATE TABLE `product` ( `id` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '', `productNum` VARCHAR(50) NOT ...
  • 解决思路:由于mysql不带sequence,所以要手写的,创建一张储存sequence的(tb_sequence),然后手动插入一条数据 ,最后背景:由于项目需要,必须用mysql设置主键自增长,而且想用字符串的。经过上网查找并且实验...
  • 展开全部你们的想法是不是,想在建时为id指定uuid,然后每次插入数据e5a48de588b662616964757a686964616f31333433626465都会自动为每一条数据生成uuid呢?就像auto_increment主键自增一样呢?我只想说 you are too...
  • 1.新创建一张设置id为主键 例如,创建的表名为:uf_receive_pay 2.设置ID的主键自增,通过Sequence实现 创建Sequence CREATESEQUENCE uf_receive_pay_Seq INCREMENTBY1--每次加几个STARTWITH1--从1开始计数...
  • 2、索引的类型:在平时创建的索引中,可以将索引大体分为两类:①、聚簇索引(主键索引) ②、非聚簇索引(二级索引)二级索引根据索引中的字段个数可以分为:①、单字段索引 ②、联合索引 / 复合索引(多个字段...
  • 1. 创建表create table Student(StudentOID varchar(50), ... 创建表时指定主键create table MyCustomer (CustomerID int Identity(100,1) Primary Key,CompanyName nvarchar(50))//设置主键后,在控制台上"Keys","I...
  • oracle设置主键自增

    千次阅读 2018-11-13 09:35:40
    最近写一个简单的功能,根据以往的是身份证被设置为唯一标识,...--设置主键以及主键自增长-- --如果是对于已经建好的,想增加主键约束,则类似语法:alter table test add constraint pk_id primary key(id);  ...
  • 这样做并不会出现什么不好的情况,因为InnoDB会自动帮你创建一个不可见的、长度为6字节的row_id,而且这个row_id是由InnoDB维护全局的dictsys.row_id,每次插入一条数据时都会让全局row_id加一(未定义主键会使用...
  • 转载: 自增这个问题,是从其他数据库转过来的开发者最常见的问题。 1好像不能用,建议的还是:2,创建序列,然后手动调用 序列名.nextVal() ...如果是对于已经建好的,想增加主键约束,则类似语法:...
  • plsql developer怎么设置主键自动递增?没有设置主键auto increment 的功能,需要自己白那些序列和触发器实现主键自动递增,具体教程一起看看吧。示例:创建表menu:[sql]create table menu( menuId number(10) not ...
  • 展开全部创建数据库时就是有主键创建主键,但是之间的关系没有联系,要建数据库关系图只e69da5e887aa62616964757a686964616f31333365653739有主键没有外键时不行的。建外键的前提是此外键必须是另外一个的...
  • 满意答案有时候我们在测试网站的时候,删除测试数据导致id不是从0开始,那如果想id是从0开始怎么办呢?mysql默认自增ID是从1开始了,但当我们如果有插入或使用...通常的设置自增字段的方法,创建表格时添加:crea...
  • 可以通过 创建外键的方式, 在 父 与 子之间, 创建一个关联关系。例如:-- 创建测试主. ID 是主键.CREATE TABLE test_main (id INT NOT NULL,value VARCHAR(10),PRIMARY KEY(id));-- 创建测试子.CREATE ...
  • @Entity @Table(name = "contract") public class Contract ...当我的contractNo定义成String类型是创建表数据的时候会报错,定义成int、Long、Integer类型就不会,要怎么设置才能创建varchar类型的数据表数据
  • 每张表都有主键,如果创建表的时候没设置主键,会采取以下方式:1.是否有非空唯一索引,如果有,选为主键2.如果没有非空唯一索引,则InnoDB存储引擎自动创建一个6字节的指针在1的情况下主键的选择是根据定义索引的顺...
  • 下面说下如何利用navicat for mysql 创建表的一个简单例子。1、首先创建一个数据库,就叫userdemo吧2、在新建的数据库上创建一个表,如下图。表的第一列叫userid,设置主键不为空,并且自动增加。3、通过添加栏位给...
  • mysql主键约束主键(PRIMARY KEY)的完整称呼...1、在创建表设置主键约束在 CREATE TABLE 语句中,通过 PRIMARY KEY 关键字来指定主键。在定义字段的同时指定主键,语法格式如下: PRIMARY KEY [默认值]例 1在 test...
  • 1,创建表时加入的约束a)非空约束,not nullb)唯一约束,uniquec)主键约束,primary keyd)外键约束,foreign key1,非空约束,针对某个字段设置其值不为空,如:学生的姓名不能为空drop table if existst_student;...
  • 主键约束(1)创建表时定义完整性约束(2)修改表的主键3.外键约束(1)参照完整性(2)设置外键的原则:(3)对已有的表添加外键(4)在创建表时创建外键4.检查约束5.唯一性约束1.非空约束在前面的数据表定义过程中,每个字段都...
  • 1.创建表的语法形式create table 表名 (属性名 数据类型 [完整性约束条件]);create table example0(id int,name varchar(20),sex boolean);2.设置表的主键Create table 表名(属性名 数据类型 primary key)create ...
  • 以前经常会碰到这样的问题,当我们删除了一条自增长列为1的记录以后,再次插入的记录自增长列是2了。我们想在插入一条自增长列为1的记录是做不到的。我们可以通过设置SET ... 2 --step1:创建表 3 create tab...
  • 为此,您需要将AUTO_INCREMENT设置为1000-altertableyourTableNameAUTO_...让我们首先创建一个-mysql>createtableDemoTable639(StudentIdintPRIMARYKEY,StudentStartIdintAUTO_INCREMENT,StudentNameVAR...

空空如也

空空如也

1 2 3 4 5
收藏数 96
精华内容 38
关键字:

创建表怎么设置主键