sql查询操作,分组,分页,连接,嵌套查询

sql查询操作

分组查询

group by…having…
select 查询列名 from 表名 group by 分组列名 having 条件

分页查询

查询第十条数据到20条数据
select * from 表名 limit 10,20
从第几条查询多少条
select * from 表名 limit (页码-1)*每页条数,每页条数

连接查询

格式:SELECT * FROM A a xxx JOIN B b ON a.xx = b. xx;
JOIN左侧的表称为左表,右侧的表称为右表,ON后边是连接的条件。
全连接 CROSS JOIN,查询俩张表中的所有组合,在开发中毫无用处

内连接 INNER JOIN… ON
查询俩张表共有的部份
SELECT * FROM stuff s INNER JOIN department d ON s.dep_id = d.id

左外连接 LEFT OUTER JOIN … ON
左外连接时,左表是主表,右表是从表,通过ON条件连接后,主表的所有记录都会被查询出来,而从表只会显示符合ON条件的记录,查不到的数据以null填充。
SELECT * FROM department d LEFT OUTER JOIN stuff s ON s.dep_id = d.id

左内连接LEFT JOIN … ON
这种连接用得比较少,它以左表为主表,查询出自身独有的那部分记录,从表的数据以null表示
SELECT * FROM department d LEFT JOIN stuff s ON s.dep_id = d.id WHERE s.dep_id IS NULL

嵌套查询

工作方式:先处理内查询,由内向外处理
eg:select name,age from person where age > ( select age from person where name = ‘孙权’ )

in关键字用于where子句中用来判断查询的表达式是否在多个值的列表中。返回满足in列表中的满足条件的记录。
select name from person where countryid in ( select countryid from country where countryname = ‘魏国’ )

some在sql中的逻辑运算符号,如果在一系列比较中,有些值为True,那么结果就为True。some的语法是:
select name from person where countryid = some       
用等号和以下查询到的值比较,如果与其中一个相等,就返回 ( select countryid from country where countryname = ‘魏国’ )

all是sql中的逻辑运算符好,如果一系列的比较都为true,那么结果才能为true。
select name from person where countryid > all   --当countryid大于以下返回的所有id,此结果才为True,此结果才返回 ( select countryid from country where countryname = ‘魏国’ )

exists是sql中的逻辑运算符号。如果子查询有结果集返回,那么就为True。exists代表“存在”的意义,它只查找满足条件的那些记录。一旦找到第一个匹配的记录后,就马上停止查找。

SELECT * FROM Person WHERE exists ( SELECT 1 --SELECT 0 SELECT NULL
返回结果都一样,因为这三个子查询都有结果集返回,因此总是True SELECT * FROM Person照常执行 )

很久之前的代码,如有错误还请告知!如有用还请多多关注点赞

©️2020 CSDN 皮肤主题: 黑客帝国 设计师:上身试试 返回首页