数据库的备份与还原和数据库的约束

数据库备份和还原
图形化界面工具 Navicat
  1. 备份

    选中数据库右键–> 转储sql文件—> 结构和数据—> 指定磁盘中sql文件存储的位置。

  2. 还原

    先通过Navicat创建一个数据库(需要和sql文件中的数据库保持同名) —> 右键运行sql文件 — > 浏览磁盘中存储的sql文件,点击运行,最后—>刷新。

doc指令操作
  1. 备份

    在不登录的情况下使用 mysqldump -u登录名 -p登录密码 备份数据库名 > 存储磁盘的位置(绝对路径)

  2. 还原

    登录mysql,创建同名的数据库,然后使用当前创建的数据库 use 创建数据库名

    然后 source 磁盘中sql文件存储的位置

数据库表的约束

概述

​ 对表中的数据进行限定,保证数据的有效性,完整性和正确性。一个表一旦添加了约束,那么不正确的数据将无法添加进来,所以一般约束在创建表设定字段的时候添加上。

主键约束

主键:一般是用来唯一标识数据库表中的某一条记录,不能为空。

通常情况下,一般会给表添加一个id字段,用作唯一标识,设置为主键。主键一般是提供给数据库操作使用的(查询,修改,删除等等),主键不能重复,也不能为空。
比如:一个人的身份证号,一个人的手机号,一个学生的学号,一个员工的工号。

语法:

使用关键字: primary key

操作:
create table user (
	id int primary key,-- 添加主键约束
	account varchar(15), -- 帐号
	password varchar(255), -- 密码
	username VARCHAR(10), -- 姓名
	phone VARCHAR(20), -- 手机号
	gender VARCHAR(1), -- 性别
	age int(3) -- 年龄
)
select * from user;
-- 非法数据插入 唯一 不重复
insert into user VALUES(7,'0008','123456','小花',12312312312,'女',19);
-- 非法数据插入 NULL
insert into user VALUES(null,'0008','123456','小花',12312312312,'女',19);
删除主键

alter table user drop PRIMARY key;

添加主键

alter table user add PRIMARY KEY(id);

主键自增

如果希望在添加表记录时,不设定表中主键值,系统会自动该主键添加子增值。

​ 语法:auto_increment 表示自动增长。

-- 主键自增,添加值
insert into user VALUES(null,'0008','123456','小花',12312312312,'女',19);

修改自增的起始值为100

alter table user auto_increment = 起始值;

唯一约束

概念:字段值唯一,不允许重复。

关键字:unique

语法:字段名 字段数据类型 unique

操作:

-- 创建一张角色表
create table role (
	id int PRIMARY KEY auto_increment, -- 主键约束
	rolename varchar(10) UNIQUE -- 角色唯一约束
)
-- 插入数据
insert into role values(null,'CEO');
insert into role values(null,'manager');
insert into role values(null,'CTO');

-- 查询
select * from role;
insert into role values(null,null);

​ 备注:如果插入的是null,表明是没有数据,不存在数据重复问题,可以重复插入

非空约束

概念:记录中的某个字段不能为null

语法:字段名 字段数据类型 not null

操作:

-- 创建一张部门表
create table department (
	id int PRIMARY key auto_increment, -- id主键
	departnemtname VARCHAR(10) not null -- 不能为空
)
-- 添加数据
insert into department values(null,'总裁办');
insert into department values(null,'财务部');
insert into department values(null,'人事部');
insert into department values(null,'研发部');
insert into department values(null,'销售部');
-- 查询
select * from department;
-- 
insert into department values(null,null);
默认值:

​ 概念:当没有给字段赋值,系统会赋上一个指定的默认值

​ 语法:字段名 字段数据类型 default 默认值

​ 操作:

-- 创建一张表 员工 employee
create table employee (
	id int PRIMARY key auto_increment,
	username VARCHAR(10) not null,
	gender VARCHAR(1) DEFAULT '男',
	age int
)
-- 添加
insert into employee(id,username,age) values(null,'小孙',20);
-- 查询
select * from employee;
-- 覆盖默认值
insert into employee(id,username,gender,age) values(null,'小丽','女',20);

备注:如果给表中的某个字段既添加了非空约束又添加了唯一约束,那么该字段是不是主键呢?

不是

一般情况下,一张表中只能有一个主键。

外键约束

语法:constraint 外键约束名称 foreign key(外键的字段名称) references 主表表名(主键字段名)

添加删除外键

创建表时,添加外键:

create table 表名(...... 外键列 constraint 外键名称 foreign key (外键列名称) references 主表名称(主列名称);

删除外键:

alter table 表名 drop foreign key 外键名称;

创建表后,添加外键:

alter table 从表表名 add constraint 外键名称 foreign key (外键列名称) references 主表名称(主键字段名);

级联操作

注意:

​ 在从表中,修改关联主表中不存在的数据,是不合法的。

​ 在主表中,删除从表中已经存在的主表信息,是不合法的。直接删除主表(从表中有记录数据关联) 会报删除失败

概念:在修改或者删除主表的主键时,同时它会更新或者删除从表中的外键值,这种动作我们称之为级联操作。

语法:

​ 更新级联:on update cascade 级联更新 只能是创建表的时候创建级联关系。当更新主表中的主键,从表中的外键字段会同步更新

​ 删除级联:on delete cascade 级联删除 当删除主表中的主键时,从表中含有改字段的记录值会同步删除。

添加/删除级联操作

语法:alter table 表名 add constraint 外键名称 foreign key (外键列名称) references 主表名称(主列名称) on update cascade on delete cascade;

约束总结

约束名关键字描述
主键primary key唯一,不为空
默认default插入数据,该字段没有赋值系统会自动赋指定的默认值
非空not null该字段不能为null
唯一unique该字段在整个表中只能出现一次
外键foreign key从表中添加外键,关联主表中的主键字段
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值