一:添加列级约束: USE students; DROP TABLE stuinfo( id INT PRIMARY KEY, #主键 stuName VARCHAR(20) NOT NULL UNIQUE, #非空 gender CHAR(1) CHECK(gender='男' OR gender='女'), #检查 seat INT UNIQUE, #唯一 age INT DEFAULT 18, #默认约束 majorid INT REFERENCES major(id) #外键 );
CREATE TABLE mahor( id INT PRIMARY KEY, majorName VARCHAR(20) );
1:查看stuinfo中的所有索引,包括主键、外键、唯一 SHOW INDEX FROM stuinfo;
2:添加表级约束 语法:[constraint 约束名] 约束类型(字段名); DROP TABLE IF EXISTS stuinfo; CREATE TABLE suuinfo( id INT, stuname VARCHAR(20), gender CHAR(1), seat INT, CONSTARINT pk PRIMARY KEY(id), #主键 CONSTARINT uq UNIQUE(seat), #唯一键 CONSTARINT ck CHECK(gender = '男' OR gender = '女'), #检查 CONSTARINT fk_stuinfo_major FPREIGN KEY(majorid) REFERENCES major(id) #外键 );
通用写法: CREATE TABLE IF NOT EXISTS stuinfo( id INT PRIMARY KEY, stuname VARCHAR(20), sex CHAR(1), age INT DEFAULT 18, seat INT UNIQUE, majorid INT, CONSTRAINT fk_stuiofo_major FOREIGN KEY(majorid) REFERENCES major(id) );
二:修改表时添加约束 1:添加列级约束 alter table 表名 modify colum 字段名 字段类型 新约束;
2:添加表级约束 alter table 表名 add 【constraint 约束名】 约束类型(字段名) 【外键的作用】;
-------------------------------------------------------------------- DROP TABLE IF EXISTS stuidfo; CREATE TABLE stuinfo( id INT, stuname VARCHAR(20), gender CHAR(1), seat INT, age INT, majorid INT ); DESC stuinfo;
#1.添加非空约束 ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL;
#2.添加默认约束 ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18;
#3.添加主键 #①列级约束 ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY; #②表级约束 ALTER TABLE stuinfo ADD PRIMARY KEY(id);
#4.添加唯一 #①列级约束 ALTER TABLE stuinfo MODIFY COLUMN seat INT UNIQUE; #②表级约束 ALTER TABLE stuinfo ADD UNIQUE(seat);