一:主键约束(PK)
最显著的特征是主键列名是唯一的,不允许重复。一个表只能有一个主键约束,且主键约束的列不接受空值。
1:在建表时直接设置主键约束:
CREATE TABLE 表名( id int primary key, .....); create table 表名( id int, age int, primary key (id) );
创建student表,且设id为主键
2:在表中给某一列设置主键约束;
alter table 表名 modify 列名 数据类型 primary key; alter table 表名 add primary key(列名);
将student表中的id设置为主键;
3:删除主键;
alter table 表名 drop primary key;
删除student表的主键约束;
二:自增长列
自增长列是数值(int,float,double)类型的,其值是有数据库自动维护的,是永远不会重复的。在MySQL数据库中,自增长列是主键列或者是唯一键列。一个表只能有一个标识列。
注意:当一个表中自增长列和主键列是同一个列名时,添加数据的时候如果不主动设置,会按照自增长列的步长自己添加。
1:在创建表时设置标识列。
create table student ( id int auto_increment, age int, name varchar(20) );
创建student表,且设置id为自增长列且为主键
2:在修改表时设置标识列;
alter table 表名 add 列名 auto_increment;
给student表加自增长列;
3:删除自增长列
alter table 表名 modify column 列名+数据类型
删除student表的自增长列;
4:给标识列设置步长;
set auto_increment_increment=数字;
设置步长(全局),可以通过插入行时手动插入标识列值设置起始值。
如果设置步长会从 1 + 步长 依次递增。 如果表中已有数据,会按照 1 + 步长进行计算,如果这个 值 已有则再加直到没有
5:给标识列设置初始值
法一:create table student ( id int auto_increment, age int, name varchar(20) )auto_increment=初始值; 法二 ALTER TABLE emp AUTO_INCREMENT = 10; alter table 表名称 modify column id int auto_increment;
三:唯一约束(UQ)
唯一约束里面,设置为唯一约束的列可以为空值,但是不能重复。且一张表可以存在多个唯一约束。在唯一约束中,当创建和表结构一样的表时候,如果是….like..,则连约束条件这些都一样,如果是as,则只是复制了结构,没有复制约束条件这些。唯一约束创建后会自动创建一个唯一索引
1:在表中添加唯一约束的语法结构;
alter table 表名 add constraint uq_namme unique(列名); 或 alter table 表名称 ADD unique(列名称);
在student表中,给student的name添加唯一约束;
2:在创建表时,添加唯一约束;
CREATE TABLE `table_name` ( `id` int NOT NULL, `name` varchar(20) UNIQUE, # 唯一约束 );
3:删除唯一约束;
ALTER TABLE 表名 ADD UNIQUE(列名);
四:默认约束(DF);
为列中的值设置默认值,default ….,如果已经定了值,默认值就无效了
创建表时,不写默认值都默认 NULL (在无非空约束的情况下)
默认约束能和主键约束可以同时存在
默认约束不能和 AUTO_INCREMENT 同时使用
1:默认约束的语法
创建表时 CREATE TABLE `table_name` ( `id` int DEFAULT NULL,# 默认约束 `name` varchar(20) unique, ); 表中设置默认约束 alter table 表名称 modify column 列名 列类型 default 默认值; 删除默认约束 alter table 表名称 modify column 列名 列类型; -- 将默认值改为 NULL ALTER TABLE 表名 ALTER 列名 DROP DEFAULT; -- 删除了默认值,新增时必须有值
五:非空约束;
1:非空约束的语法
创建表时 CREATE TABLE `table_name` ( `id` int NOT NULL, # 非空约束 `name` varchar(20), ); 在表中添加 alter table 表名称 modify column 列名 列类型 not null; 删除 alter table 表名称 modify column 列名 列类型 [null];