mysql - 约束

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开始, 每个表只能有一个自增列,类型只能是数值型

 

 

posted @ 2019-11-04 10:57  不咬人的兔子  阅读(128)  评论(0编辑  收藏  举报