表与表的关系
多对一 一对多 多对多(需要第三个表) 一对一
多对多
例如学生和老师 注意创建第三个表将他们联系在一起
CREATE TABLE Student(
sid INT PRIMARY KEY,
sname VARCHAR(10)
);
CREATE TABLE Teache(
tid INT PRIMARY KEY,
tname VARCHAR(10)
);
CREATE TABLE stu_tea_rel(
tid INT,
tname INT
);
ALTER TABLE stu_tea_rel ADD CONSTRAINT FOREIGN KEY(tid) REFERENCES Student(sid);
ALTER TABLE stu_tea_rel ADD CONSTRAINT FOREIGN KEY(tname)REFERENCES Teache(tid);
多表查询
多表查询分三种:
1. 合并结果集;UNION、UNION ALL
celect * from A UNION celect * from B 注意:UNION 取并集 加ALL的话 取所有 两个表选择后 的列数与类型需要一致
2. 链接查询
内连接 [INNER]JOIN ON join是链接 On表示条件 on只能同在主外键链接
外连接 OUTER JOIN ON 当需要查看数值为NULL的数据时使用
左外连接 LEFT[OUTER]JOIN 以左边的表为基准 此时若左边的表的数据有NULL 则不会显示这一条
右外连接 RIGHT[OUTER]JOIN 以右边的表为基准 此时若右边的表的数据有NULL 则不会显示这一条
全外连接 FULL JOIN (MySQL 不支持)
多张表查询时候 多个join 多个on
自然链接 NATURAL JOIN
3. 子查询
多表链接查询
SELECT s.sid,s.sname,t.tname FROM Student s,Teache t WHERE s.sid=t.tid;--两个表一起查询 注意加条件 否则会卡迪尔积
自然链接
自然链接与内连接相似 但是NATURAL 关键字 加入后 自动去掉两个表中类型与值相同的部分 相当于去掉了内链接的 On + 条件部分
子查询(多个SELECT语句)
第二个select出现在where后面 当做条件 即选择后的部分作为了一个结果
自连接
所谓自连接就是自己与自己链接 需要起别名(类似于JAVA中的对象) 当需要的信息在一张表中的时候使用
注意 当判断一个或者多个变量是否在一个集合中的时候 用关键字 in 例如:a,b IN (a,b,,c,)
Mysql中的函数
Mysql 数据库的备份与恢复
- 备份
生成SQL脚本 将数据导出 方法:cmd mysqldump -u 用户名 -p 数据库名 > 导出路径
注意 脚本文件中不包含创建数据库的语句 恢复数据的时候手动创建
- 恢复数据
首先登陆数据库 USE进入一个数据路
SOURCE + 脚本存在路径
注意脚本中有数据库的名字 使用 mysql -u 名字 -p 数据库<要执行的脚本的时候 注意库的名字