mysql - 约束

Posted 不咬人的兔子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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开始, 每个表只能有一个自增列,类型只能是数值型

 

 

以上是关于mysql - 约束的主要内容,如果未能解决你的问题,请参考以下文章

mysql 错误代码1217 MYSQL外键约束检查失败,删除或修改主表记录失败 怎么解决啊

部分代码片段

linux中怎么查看mysql数据库版本

NestedScrollView、LinearLayout 超出约束过度滚动

从mysql的片段中加载ListView

连接MySQL出现错误:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)(代码片段