SQL
select 字段 from 表名 where … group by… having… order by…
SQL的执行顺序:
第一步:执行FROM
第二步:WHERE条件过滤
第三步:GROUP BY分组
第四步:执行SELECT投影列
第五步:HAVING条件过滤
第六步:执行ORDER BY 排序
关键字
查询 select 删除 delete
增加 insert 修改 update
约束
NOT NULL 非空约束
UNIQUE 唯一约束
PRIMARY KEY 主键
FOREIGN KEY 外键
CHECK 检查约束
DEFAULT 默认值
条件查询
条件查询需要用到where语句,where必须放到from语句表的后面
支持如下运算符
运算符 | 说明 |
---|---|
= | 等于 |
<>或!= | 不等于 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
between … and …****. | 两个值之间 |
is null | 为null |
and | 并且 |
or | 或者 |
in | 包含,相当于多个or |
not | not可以取非,主要用在is 或in中 |
like | like称为模糊查询,支持%或下划线匹配%匹配任意个字符下划线,一个下划线只匹配一个字符 |
集合运算
交集 INTERSECT
两个集合的交集是由既属于集合A和集合B的所有元素组成的集合
--求出分数大于70的记录和学生序号为5的记录的交集
SELECT * FROM selection WHERE score >70 INTERSECT
SELECT * FROM selection WHERE student_id =5
减集 lEXCEPT
两个集合的差集(A-B)是由属于A,但不属于B的元素组成的集合(顺序很重要)
--求出分数大于70的记录和学生序号为5的记录的减集
SELECT * FROM selection WHERE score >70 EXCEPT
SELECT * FROM selection WHERE student_id =5
合并 union(合并集合)(可以相加) 不允许重复
select * from 表A where age = 18 union select * from 表A where age = 19
分页 limit m,n //m从哪一条开始读 n读取几条
select * from 表A limit 0,5;
--从0开始,读取5条数据
聚合函数
SUM()总数 AVG()平均数
MAX()最大值 MIN()最小值
COUNT()计数
group by 搭配集合函数永远的神。如需判断条件使用having
WHERE过滤→分组→聚合函数→having过滤
子查询
子查询就是指的在一个完整的查询语句之中,嵌套若干个不同功能的小查询,从而一起完成复杂查询的一种编写形式
select * from 表A where age in(select age from 表B)
主要使用三种操作符:IN、ANY、ALL
any 表示与子查询中的每个元素进行比较
in 表示和子查询中的元素相同比较
all 大于all 就是大于查询中的最大值 小于all就是小于查询中的最小值
多表查询
带有 where 条件 相当于内连接 但不是内连接
表A和表B都有aid
select * from 表A a,表B b where a.aid=b.aid
内连接
-- join on 内连接 inner join 等同于 join
SELECT * FROM 表1 JOIN 表2 ON 表1.字段1 比较运算子 表2.字段1 AND
ON 表1.字段2 比较运算子 表2.字段2) OR ON 表1.字段3 比较运算子 表2.字段3)
外连接
左连接 left join on 右连接 right join on
-- 假设在 city 列上联接 authors 表和 publishers 表。
-- 使用左向外联接
SELECT a.au_fname, a.au_lname, p.pub_name FROM authors a LEFT OUTER JOIN publishers p ON a.city = p.city
-- 使用右向外联接
SELECT a.au_fname, a.au_lname, p.pub_name FROM authors a RIGHT OUTER JOIN publishers p ON a.city = p.city
SQL语句
-- 创建数据库如果boot不存在
create database if not exists boot
-- 展示数据库
show databases
-- 删除数据库
drop database boot
-- 使用数据库
use boot
-- 查看当前数据库
select database()
-- 查看当前数据库版本
select version()
-- 查看其他数据库中的表
show table from mysql
-- 创建数据库表
create table temp(
id int NOT NULL PRIMARY KEY,
name varchar(32) NOT NULL
)
-- 删除数据库表
drop table temp
-- 插入数据
insert into temp values(1, 'zhangsan')
-- 查询数据
select * from temp
-- 去重 DISTINCT
select distinct * from temp
-- 某条件查询表中数据
select * from temp where age>18
-- 修改数据
update temp set name='lisi'
-- 删除表中特定数据
delete from temp where name = 'lisi'
-- 更改显示行的名称(虚拟的)
select id '你说呢' from temp
-- between...and 在什么中间
select * from temp where sal between 1600 and 3000
-- group by 分组 by后跟分组的条件 如需判断条件使用having
select * from temp group by name;
-- having 和where类似
select * from temp group by name having age>18;