数据库MySQL-建表约束

MySQL建表约束

主键约束

能够唯一确定一张表中的一条记录,也就是通过给某个字段添加约束,就可以使得该字段不重复且不为空

create table user(
	id int primary key,
	name varchar(20)
);

在这里插入图片描述

联合主键:只要联合的主键值不全重复即可。

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('李四');

结构:
在这里插入图片描述
表内容:没有指定id的情况下,其自动补值增长。
在这里插入图片描述

唯一约束

约束修饰的字段的值不可以重复。

CREATE TABLE user5(
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(20)
);

运行 DESCRIBE user5;
±------±------------±-----±----±--------±---------------+
| Field | Type | Null | Key | Default | Extra |
±------±------------±-----±----±--------±---------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
±------±------------±-----±----±--------±---------------+

新增name为唯一约束:

ALTER TABLE user5 ADD UNIQUE(name);

运行 DESCRIBE user5;
±------±------------±-----±----±--------±---------------+
| Field | Type | Null | Key | Default | Extra |
±------±------------±-----±----±--------±---------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | UNI | NULL | |
±------±------------±-----±----±--------±---------------+
测试:插入数据

INSERT INTO user5(name) VALUES ('cc');

运行 SELECT * FROM user5; 查看结果:
±—±-----+
| id | name |
±—±-----+
| 1 | cc |
±—±-----+
再次插入INSERT INTO user5(name) VALUES (‘cc’);
出现:ERROR 1062 (23000): Duplicate entry ‘cc’ for key ‘name’

另一种添加唯一约束方式

CREATE TABLE user5(
    id INT ,
    name VARCHAR(20)unique(id,name)//表示两个键不都重复,类似联合主键
);

非空约束

create table user9(
id int,
name varchar(20) not null
);

在这里插入图片描述

默认约束

当插入字段值时,若没有传值,就会使用默认值。

create table user10(
id int,
name varchar(20),
age int default 10
);

在这里插入图片描述

外键约束

设计到两个表: 主表,副表
1.主表中没有的数据值,不能在副表中使用。
2.主表中的记录被副表引用,是不可以删除此记录的。
–班级表

CREATE TABLE classes(
    id INT PRIMARY KEY ,
    name VARCHAR(20) 
);

在这里插入图片描述

–学生表

CREATE TABLE student(
   id INT PRIMARY KEY,
   name VARCHAR(20),
    class_id int,
    FOREIGN KEY (class_id) REFERENCES classes(id)
);

在这里插入图片描述
给班级表插入值
INSERT INTO CLASSES VALUES (1,‘一班’);
INSERT INTO CLASSES VALUES (2,‘二班’);
INSERT INTO CLASSES VALUES (3,‘三班’);
在这里插入图片描述
给学生表插值
insert into student values(1001,‘张三’,1);
insert into student values(1002,‘张三’,2);
insert into student values(1003,‘张三’,3);
insert into student values(1004,‘张三’,4);
第4个由于外键约束插入失败。
在这里插入图片描述

修改表结构

添加主键

ALTER TABLE user4 add PRIMARY KEY(id);

删除主键

ALERT TABLE user4 DROP PRIMARY KEY;

把某个属性设置为主键

使用modify

ALTER TABLE user4 MODIFY id INT PRIMARY key;

总结

添加:alter … add…
修改:alter… modify…
删除:alter…drop…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值