mysql 约束

常见约束

/*

NOT NULL:非空

该字段的值是必填的,如果不设置该约束,该字段默认是可以为空

default:默认

该字段有默认值

**CHECK:检查,**mysql语法支持,但效果不支持

该字段值可以加以限制,比如年龄可以控制在0-120之间

primary key:主键

该字段值不可以重复

1、不可以为空

2、一个表中只能有一个主键,但是可以多个字段做组合主键

unique:唯一约束

该字段值不可以重复

1、可以为空

2、一个表中可以有多个唯一键,可以有组合唯一键

foreign key:外键

用于限制多表的关系

1、从表的该字段值必须来自于主表的关联列的值

2、从表和主表的关联列的类型必须一样

3、主表的关联列必须是主键

4、在从表中设置外键

5、一个表中可以添加多个外键

6、插入数据时,先插入主表

删除数据时,先删除从表

分类:

位置 支持

列级约束 列的后面 除了外键

表级约束 表的后面 除了非空和默认

*/

#一、★★★★★★★★★★★创建表时添加约束 ★★★★★★★★★★★ √

#CREATE TABLE表名(

#字段名字段类型列级约束,

#字段名字段类型列级约束,

#表级约束

#1.添加列级约束

use girls

drop table if exists stuinfo

create table stuinfo(

  id int not null unique,

  stuname varchar(20) unique,

  gender char default'男',

  age int unsigned check(age between 0 and 120)

)

desc stuinfo

#插入默认值

insert into stuinfo(id,stuname,gender,age) values(1,'bod','女',20)

#唯一和主键

SELECT * from stuinfo

insert into stuinfo VALUES(2,null,default,200)

#2.表级约束

DROP table if exists stuinfo

create table stuinfo(

  id int not null,

  stuname varchar(20),

  gender char default'男',

  age int unsigned,

  gredeid int,

  primary key(id,stuname),

  constraint up unique(age),

  constraint fk_stuinfo foreign key(gredeid) references grade(id)



)

CREATE TABLE grade(

id INT PRIMARY KEY,

gradename VARCHAR(20)

)

SELECT * from stuinfo

DROP TABLE IF EXISTS stuinfo;

CREATE TABLE stuinfo(

id INT ,

stuName VARCHAR(20),

gender CHAR,

age INT UNSIGNED,

gradeid INT

);

#1.添加非空

ALTER TABLE stuinfo MODIFY COLUMN gender CHAR NOT NULL;

#2.添加默认

alter table stuinfo modify column age int unsigned default 18

desc stuinfo

#3.添加主键

#①方式一:列级约束的做法

alter table stuinfo modify column id int primary key;

#②方式二:表级约束的做法

DROP TABLE IF EXISTS stuinfo;

CREATE TABLE stuinfo(

id INT ,

stuName VARCHAR(20),

gender CHAR,

age INT UNSIGNED,

gradeid INT

)

DESC stuinfo

alter table stuinfo  add primary key(id)

#4.添加唯一

#①方式一:列级约束的做法

alter table stuinfo modify column stuname varchar(20) unique

#②方式二:表级约束的做法

alter table stuinfo add constraint u_stuinfo unique(stuname)

alter table stuinfo add constraint u_id primary key(id)

#5.添加外键

alter table stuinfo ADD constraint stuinfo_grade foreign key(gradeid) references grade(id)

##三、★★★★★★★★★★★修改表时删除约束 ★★★★★★★★★★★

#1.删除非空(删除就是重新修改)

alter table stuinfo modify column gender char

SELECT * from stuinfo

#2.删除默认

alter table stuinfo modify column age int unsigned

#3.删除主键

alter table stuinfo modify column in int;

alter table stuinfo drop primary key

#4.删除唯一

alter table stuinfo modify column stuname varchar(20)

alter table stuinfo drop index uq_stuinfo

#查看指定表的所有索引

show index from stuinfo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值