数据库备份和还原
图形化界面工具 Navicat
-
备份
选中数据库右键–> 转储sql文件—> 结构和数据—> 指定磁盘中sql文件存储的位置。
-
还原
先通过Navicat创建一个数据库(需要和sql文件中的数据库保持同名) —> 右键运行sql文件 — > 浏览磁盘中存储的sql文件,点击运行,最后—>刷新。
doc指令操作
-
备份
在不登录的情况下使用 mysqldump -u登录名 -p登录密码 备份数据库名 > 存储磁盘的位置(绝对路径)
-
还原
登录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 | 从表中添加外键,关联主表中的主键字段 |