mysql-建表约束
主键约束
可以唯一确定表中的一条记录。
唯一 + 非空。
联合主键
由多个字段组成。
create table user2( id INT, name VARCHAR(20), password VARCHAR(20), primary key(id,name) );
只要主键值加起来不重复即可,也就是有一个不同就可以
主键不可以重复,任何一个字段都不可以为空
自增约束
可以和主键约束一起使用。
CREATE TABLE user3( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) );
INSERT INTO user3(name) VALUES('张三'); INSERT INTO user3(name) VALUES('张三'); INSERT INTO user3(name) VALUES('张三');
发现会自动生成id
如果在键表的时候,忘记创建主键约束了
则添加语句:(修改表结构,添加主键)
alter table user4 add primary key(id);
或者使用 midify 修改字段,添加约束。(这样操作比较少,了解一下)
alter table user4 modify id int primary key;
运行:
通过这条语句删除:
alter table user4 drop primary key;
运行:
外键约束
涉及到两个表:父表、子表(主表、副表/从表??)。
学生表是父表,班级表是主表,父表里的东西要参照主表,主表里面不存在的,父表无法添加。
主表中的记录被副表引用,是不可以被删除的。
唯一约束
约束修饰的字段的值不可以重复
即无法重复添加'zhangsan'。
CREATE TABLE user5( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) );
添加语句:(或者直接在上面的代码内添加 unique(name) )(或者直接在20的括号后面加 unique )
alter table user5 add unique(name);
或者:
alter table user5 modify name varchar(20) unique;
运行:
如果一下子添加两个,也就是unique(name,id),表示的是组合在一起不重复,那么Key那边会变成MUL
如何删除唯一约束?(需找到unique对应的字段)
alter table user5 drop index name;
非空约束
修饰的字段不能为空(NULL)
create table user9( id int, name varchar(20) NOT NULL );
运行:
默认约束
当我们插入字段的时候,如果没有传值,就会使用默认值。
create table user10( id int, name varchar(20), age int default 10 );
运行:
插入一个元素:
insert into user10(id,name) value(1,'zhangsan');
发现:即使没有插入年纪,也会有默认年纪显示。
外键约束