MYSQL约束规则的添加和修改总结

MYSQL的约束规则:primary key、foreign key、unique、check(mysql不能很好的支持)、default、not null

primary key:主键约束,可以唯一的表示每一行,不能为null,当是组合主键时,两列组合起来唯一标识某一行,若其中单独一列可以标识一行,则不符合组合主键的规则。

用法:

创建时添加主键:

CREATE TABLE tb_test0
(
id int(11) primary key,
name varchar(10)
);

CREATE TABLE tb_test1
(
id int(11) ,
name varchar(10),
constraint pk_id primary key(id)
);

 

因为主键在表中只有一个,所以可以不需要约束名pk_id;

创建后添加主键:

alter table tb_test
add primary key(id);

删除主键约束:

alter table tb_test
drop primary key;

foreign key:外键约束,可以有多个外键,用于连接父表的主键。需要先创建父表

创建时添加外键:

mysql> CREATE TABLE tb_dept1
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(22) NOT NULL,
    -> location VARCHAR(50)
    -> );

mysql> CREATE TABLE tb_emp6
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(25),
    -> deptId INT(11),
    -> salary FLOAT,
    -> CONSTRAINT fk_emp_dept1
    -> FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
    -> );

创建后添加外键:

mysql> ALTER TABLE tb_emp2
    -> ADD CONSTRAINT fk_tb_dept1
    -> FOREIGN KEY(deptId)
    -> REFERENCES tb_dept1(id);

需要创建外键名fk_tb_dept1,用于删除操作;

删除外键:

mysql> ALTER TABLE tb_emp2
    -> DROP FOREIGN KEY fk_tb_dept1;

Unique:唯一约束,唯一,与主键区别,可以为null。

创建表时添加:

和primary key一样的

创建表后添加:

mysql> ALTER TABLE tb_dept1
    -> ADD CONSTRAINT unique_name UNIQUE(name);

删除:

mysql> ALTER TABLE tb_dept1
    -> DROP INDEX unique_name;

check:检查约束,MYSQL支持的不好,添加check约束后没什么效果,可以用枚举或者触发器来实现check检查约束。

创建表时添加:

mysql> CREATE TABLE tb_emp7
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(25),
    -> deptId INT(11),
    -> salary FLOAT,
    -> CHECK(salary>0 AND salary<100),
    -> FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
    -> );

创建表后添加:

sql> ALTER TABLE tb_emp7
    -> ADD CONSTRAINT check_id
    -> CHECK(id>0);

删除:

修改表时删除检查约束的语法规则如下:

ALTER TABLE <数据表名> DROP CONSTRAINT <检查约束名>;

MYSQL好像不支持删除。

not null和default约束规则:

不需要规则名字,建表时直接添加在每一项的后面,不能单独添加。

使用alter table tb_test change column col1 col1_new int(11) not null default 1

使用alter table tb_test change column col1 col1_new int(11) null default null

使用alter table tb_test alter column col1 set default 1

使用alter table tb_test alter column col1 set default null

使用alter table tb_test alter column col1 drop default 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值