浏览器标题切换
浏览器标题切换end

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');

 

 发现:即使没有插入年纪,也会有默认年纪显示。

 

 

外键约束

 

posted @ 2020-04-17 14:43  抓水母的派大星  阅读(206)  评论(0编辑  收藏  举报