SQL个人总结

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 * FROM1 JOIN2 ON1.字段1 比较运算子 表2.字段1 AND 
ON1.字段2 比较运算子 表2.字段2) OR ON1.字段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;

猜你喜欢

转载自blog.csdn.net/QIYIBK/article/details/120716766