mysql貌似版本变化很大。。。跟着4月的教程视频尝试,结果很多都和视频上说的不一样
1.六大约束
not null 非空
default 默认值
primary key 主键
unique 唯一
check (网上说mysql中没有= =,然而我试了可以。。。) check(sex ='男' or sex='女') ,可以用逗号隔开放在列定义的后面单独定义,也可以在对应列后面用空格隔开。
foreign key 外键,可以用逗号隔开放在列定义的后面单独定义,也可以在对应列后面用空格隔开。
CREATE TABLE table1( t_id INT PRIMARY KEY, t_card_id INT UNIQUE NOT NULL, t_name VARCHAR(20) CHECK(t_name != 'aaa'), t_sex VARCHAR(1) DEFAULT '男', t_account_id VARCHAR(20) REFERENCES userinfo(uid) #在对应列后面定义外键,视频上说也可以 #网上说用t_account_id VARCHAR(20) FOREIGN KEY REFERENCES userinfo(uid) 试了不行- -估计版本问题 );
CREATE TABLE table1( t_id INT PRIMARY KEY, #如果两个primary key 则表示两个组合起来是主键 t_card_id INT UNIQUE NOT NULL, #假如可以为null,unique中可以插入两个null值,有的教程说不可以两个null会提示重复= = t_name VARCHAR(20) CHECK(t_name != 'aaa'), t_sex VARCHAR(1) DEFAULT '男', t_account_id VARCHAR(20), #外键,CONSTRAINT fk_table1_userinfo FOREIGN KEY (t_account_id) REFERENCES userinfo(uid) #在后面单独定义外键 );
两个null值的属性在关联查询时不会判定相等。
SHOW INDEX FROM 表名
查看索引,主键和外键会自动生成索引。
修改列约束:直接用modify修改字段就可以 比如添加唯一约束 alter table 表名 modify column 列名 int unique
修改表约束:alter tbale 表名 add contraint 比如添加唯一约束 alter table 表名 add constraint 【约束名】 unique(列名)
2.自增长
auto_increment
CREATE TABLE table4( t_id INT PRIMARY KEY AUTO_INCREMENT, t_card_id INT REFERENCES table2(t_card_id) )AUTO_INCREMENT = 0; #可以通过这种方式修改初始值,不然默认从1开始, 每个表只能有一个自增列,类型只能是数值型