设为首页 加入收藏

TOP

【知了堂学习笔记】SQL查询基础语句(单表查询、多表查询)(三)
2017-10-10 08:54:58 】 浏览:10144
Tags:学习 笔记 SQL 查询 基础 语句 单表

ORDER BY COUNT(*) DESC        -- 6 二次分组

LIMIT 1                                         -- 7 限定行数 肯定是你执行完之后最终的结果的 行数   

                                                    -- 7步顺序千万不能搞错

 

2、多表查询

 

2.1、相关子查询

子查询必须依赖于主查询 ,子查询单独运行会报错,依赖于主查询的结果

 

select嵌套  只能返回单行单列

每次主查询 执行一次,子查询也会执行一次,最终执行N+1次,效率低下,如果主查询没有提供数据,子查询无法执行

语法:select 列名1,列名2,(select 列名 from 表名 where 条件) from 表名

例:SELECT s_name,(SELECT c_name FROM t_class WHERE c_id=s_classid) FROM t_student

 

2.2 非相关子查询

from 嵌套   必须要给嵌套的子查询表起别名,可返回多行多列数据

子查询对主查询没有依赖  子查询只会执行一次,只会在from的时候才执行,性能较高,能独立运行,只是给主查询提供条件值

语法:select 列名1 ,列名2,.... from (select 列名 from 表名 [where 条件] )  [where 条件]

例:查询性别为女 并且姓名为张三的

SELECT * FROM (SELECT * FROM t_student WHERE s_sex='') AS t1

WHERE t1.s_name='张三';

 

where 嵌套  执行2次,子查询可以单独运行,不依赖主查询,只是给主查询提供条件值

语法:select 列名1,列名2, .... from 表名 where 列名 关系运算符 (select 列明 from 表名 where 条件)

例:查询一班的学生有哪些

SELECT * FROM t_student WHERE s_classid=(SELECT c_id FROM t_class WHERE c_name='一班')

 

in 多条值

例:查询一班的学生有哪些

语法:select 列名1,列名2,.... from 表名 where 列名 in (select 列明 from 表名 where 条件)

SELECT * FROM t_student WHERE s_classid in (SELECT c_id FROM t_class WHERE c_name='一班')

any all 必须跟子查询 不能单独使用

 

all 任意值

语法:select 列名1,列名2, .... from 表名 where 列名 关系运算符 all (select 列明 from 表名 where 条件)

例:查询分数高于任意一个张三的所有学生  -- 使用all

SELECT * FROM t_student WHERE s_score>ALL(SELECT s_score FROM t_student WHERE s_name='张三')

 

any

语法:select 列名1,列名2, .... from 表名 where 列名 关系运算符 any (select 列明 from 表名 where 条件)

例:查询分数高于任意一个张三的所有学生

SELECT * FROM t_student WHERE s_score>ANY( SELECT s_score FROM t_student WHERE s_name='张三');

还可以使用MIN

SELECT * FROM t_student WHERE s_score>(SELECT MIN(s_score) FROM t_student WHERE s_name='张三');

子查询不管怎么变,都只有三种,在where中嵌套一个,form 一个,select一个

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇redis事务 下一篇SQL Server 服务器主体拥有一个或..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目