1.多表查询
select 字段列表 from 表1, 表2....;
注意:多表查询会产生笛卡尔积,
笛卡尔积:笛卡尔乘积是指在数学中,两个集合(A集合和B集合)的所有组合情况。
1.多表查询的分类
连接查询
内连接;
内连接:相当于查询A、B交集部分数据
隐式内连接:
select 字段列表 from 表1 , 表2 where 条件 ... ;
显式内连接:
select 字段列表 from 表1 [ inner ] join 表2 on 连接条件 ... ;
外连接:左外连接、右外连接;
左外连接:查询左表所有数据(包括两张表交集部分数据)
select 字段列表 from 表1 left [ outer ] join 表2 on 连接条件 ... ;
右外连接:查询右表所有数据(包括两张表交集部分数据)
select 字段列表 from 表1 right [ outer ] join 表2 on 连接条件 ... ;
注意:右外连接和左外连接可以相互替换;
子查询
简述:SQL语句中嵌套select语句,称为嵌套查询,又称子查询。
select * from t1 where column1 = ( select column1 from t2 ... );
子查询外部的语句可以是insert / update / delete / select 的任何一个,最常用的是 select。
-
标量子查询(子查询结果为单个值[一行一列])
-
列子查询(子查询结果为一列,但可以是多行)
-
行子查询(子查询结果为一行,但可以是多列)
-
表子查询(子查询结果为多行多列[相当于子查询结果是一张表])
事务
概述:事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。
-
原子性(Atomicity):事务是不可分割的最小单元,要么全部成功,要么全部失败。
-
一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
-
隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
-
持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。
索引
概述:帮助数据库高效获取数据的数据结构;
优点:
-
提高数据查询的效率,降低数据库的IO成本。
-
通过索引列对数据进行排序,降低数据排序的成本,降低CPU消耗。
缺点:
-
索引会占用存储空间。
-
索引大大提高了查询效率,同时却也降低了insert、update、delete的效率。
结构
索引利用的是B+Tree结构,
语法
创建索引
create [ unique ] index 索引名 on 表名 (字段名,... ) ;
查看索引
show index from 表名;
删除索引
drop index 索引名 on 表名;