数据库多表查询基础语句汇总

多表间的关系
添加外键
alter table 表 add [CONSTRAINT] [外键名称] foreign key(字段) references 表(字段);
或者
alter table 表 add foreign key(列) references 表(列);
eg:给商品表添加外键
alter table t_product add foreign key(cno) references t_category(cid);

删除外键
ALTER TABLE 表 drop foreign key 外键名称;

外键的级联
在修改和删除主表的主键时,同时更新或删除副表的外键值,称为级联操作
ON UPDATE CASCADE – 级联更新,主键发生更新时,外键也会更新
ON DELETE CASCADE – 级联删除,主键发生删除时,外键也会删除

交叉查询
select a.列,a.列,b.列,b.列 from a,b ;
select a.,b. from a,b ;
–或者
select * from a,b;

  • 交叉查询其实是一种错误.数据大部分是无用数据,叫笛卡尔积.
  • 假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}。可以扩展到多个集合的情况。

内连接查询
隐式内连接
隐式里面是没有inner关键字的
select [字段,字段,字段][*] from a,b where 连接条件 (a表里面的主键 = b表里面的外键)

显示内连接
显示里面是有inner关键字的
select [字段,字段,字段][*] from a [inner] join b on 连接条件 [ where 其它条件]

外连接
左外连接
以join左边的表为主表,展示主表的所有数据,根据条件查询连接右边表的数据,若满足条件则展示,若不满足则以null显示.
可以理解为:在内连接的基础上保证左边表的数据全部显示
select 字段 from a left [outer] join b on 条件

右外连接
以join右边的表为主表,展示右边表的所有数据,根据条件查询join左边表的数据,若满足则展示,若不满足则以null显示
可以理解为:在内连接的基础上保证右边表的数据全部显示
select 字段 from a right [outer] join b on 条件

子查询
SELECT 查询字段 FROM 表 WHERE 列 =(子查询);

子查询结果是单例多行,结果集类似于一个数组,父查询使用IN运算符
SELECT 查询字段 FROM 表 WHERE 列 in (子查询);

子查询的结果是多行多列的情况
SELECT 查询字段 FROM (子查询) 表别名 WHERE 条件;

事务
事务的作用
保证一组操作全部成功或者失败

手动开启一个事务
- 方式一: 手动开启事务的方式 【掌握】
start transaction;开启事务
 commit;提交    	
 rollback;回滚
 
- 方式二: 设置MYSQL中的自动提交的参数【了解】
查看MYSQL中事务是否自动提交
show variables like '%commit%';
设置自动提交的参数为OFF
set autocommit = 0;-- 0:OFF  1:ON

数据的备份和还原
备份格式
mysqldump -u用户名 -p密码 数据库 > 文件的路径

还原格式
SOURCE 导入文件的路径;
注意:还原的时候需要先登录MySQL,并选中对应的数据库
发布了10 篇原创文章 · 获赞 0 · 访问量 164

猜你喜欢

转载自blog.csdn.net/zhai314341197/article/details/104757953
今日推荐