【MySQL学习笔记】2.约束、数据库备份和还原

约束

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

数据库的设计

  1. 多表之间的关系
  2. 数据库设计范式

数据库的备份和还原

  1. 命令行语法
  • 备份
    mysqldump -u用户名 -p密码 数据库名 > 保存的路径
  • 还原
    登录数据库
    创建数据库
    使用数据库
    执行文件 source 文件路径
  1. 图形化工具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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值