约束
1.定义
对表中数据限定保证数据正确性、有效性、完整性。
2.分类
主键约束primary key
含义:非空且唯一,表中记录的唯一标识。一个表只能有一个字段为主键。
-- 创建表时添加主键并完成主键自动增长
create table stu2(id int primary key auto_increment);
-- 创建完表后添加主键并完成主键自动增长
alter table stu2 modify id int primary key auto_increment;
-- 删除主键
alter table stu2 drop primary key;
数值类型自动增长:auto_increment
-- 删除主键自动增长
alter table stu2 modify id int;
非空约束not null
值不能为null
-- 创建表添加非空约束
CREATE TABLE stu (name VARCHAR(20) NOT NULL);
-- 创建完表之后添加非空约束
alter table stu modify name varchar(20) not null;
-- 删除name的非空约束
alter table stu modify name varchar(20);
唯一约束unique
值不能重复
-- 创建表添加唯一约束
create table stu1(phone_number varchar(20) unique);
-- mysql中唯一约束限定的列的值可以有多个null
-- 创建完表之后添加唯一约束
alter table stu1 modify phone_number varchar(20) unique;
-- 删除唯一约束
alter table stu1 drop index phone_number;
外界约束foreign key
-- 创建表时添加外键约束
create table 表名(
...
外键列
constraint 外键名 foreign key (外键列名)
reference 主表名(主表列名)
);
-- 创建完表添加外键约束
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (外键列名)
REFERENCES department 主表名(主表列名);
-- 删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名;
-- 级联更新ON UPDATE CASCADE
-- 级联删除ON DELETE CASCADE
数据库的设计
- 多表之间的关系
- 数据库设计范式
数据库的备份和还原
- 命令行语法
- 备份:
mysqldump -u用户名 -p密码 数据库名 > 保存的路径 - 还原:
登录数据库
创建数据库
使用数据库
执行文件 source 文件路径
- 图形化工具SQLyog
实例
-- 创建表添加非空约束
CREATE TABLE stu (
id INT,
NAME VARCHAR(20) NOT NULL
);
-- 创建完表之后添加非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;
-- 删除name的非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20);
SELECT * FROM stu;
-- 创建表添加唯一约束
CREATE TABLE stu1(
id INT,
phone_number VARCHAR(20) UNIQUE-- 添加唯一约束
);
-- mysql中唯一约束限定的列的值可以有多个null
-- 创建完表之后添加唯一约束
ALTER TABLE stu1 MODIFY phone_number VARCHAR(20) UNIQUE;
-- 删除唯一约束
ALTER TABLE stu1 DROP INDEX phone_number;
SELECT * FROM stu1;
-- 创建表时创建主键并完成主键自动增长
CREATE TABLE stu2(
id INT PRIMARY KEY AUTO_INCREMENT,-- 给id添加主键约束
NAME VARCHAR(20)
);
-- 创建完表后添加主键并完成主键自动增长
ALTER TABLE stu2 MODIFY id INT PRIMARY KEY AUTO_INCREMENT;
-- 删除主键
ALTER TABLE stu2 DROP PRIMARY KEY;
-- 删除主键自动增长
ALTER TABLE stu2 MODIFY id INT;
SELECT * FROM stu2;
-- 部门表,一方,主表
CREATE TABLE department(
id INT PRIMARY KEY AUTO_INCREMENT,
dep_name VARCHAR(20),
dep_locationion VARCHAR(20)
);
-- 员工表,多方,从表
CREATE TABLE employee(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20),
age INT,
dep_id INT,-- 外键对应主表的主键
CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department(id)-- 创建表时添加外键约束`information_schema`
);
-- 添加部门
INSERT INTO department VALUES(NULL,'研发部','广州'),(NULL,'销售部','深圳');
-- 添加员工
INSERT INTO employee(NAME,age,dep_id) VALUES ('张三',20,1);
INSERT INTO employee(NAME,age,dep_id) VALUES ('李四',21,1);
INSERT INTO employee(NAME,age,dep_id) VALUES ('王五',20,1);
INSERT INTO employee(NAME,age,dep_id) VALUES ('老王',20,2);
INSERT INTO employee(NAME,age,dep_id) VALUES ('大王',22,2);
INSERT INTO employee(NAME,age,dep_id) VALUES ('小王',18,2);
SELECT * FROM employee;
SELECT * FROM department;
-- 创建完表添加外键约束,设置级联更新,设置级联删除
ALTER TABLE employee ADD CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id)
REFERENCES department(id)ON UPDATE CASCADE ON DELETE CASCADE;
-- 删除外键约束
ALTER TABLE employee DROP FOREIGN KEY emp_dept_fk;