SQL查询

SQL查询

一、 基础查询

1. 特点

  • 1.查询列表可以是表中的字段、常量值、表达式、函数
  • 2.查询的结果是一个虚拟的表格,不是真实存在的(临时性的)

2. 语法

  • select 查询列表 from 表名

3. 查询方法

1.查询表中的单个字段:select 查询的字段 from 表名;

2.查询表中多个字段:用逗号隔开

3.查询表中所有字段:方法一:同2点所有字段

方法二:select * from 表名 (*按原始表的顺序输出)

4.查询常量值 :select 常量值 ;(数值 ’字符‘)

5.查询表达式:select 表达式;

6.查询函数:select 函数;

7.起别名

- 优点:

	- 1.便于理解
	- 2.如果所要查询的字段有重名的情况,使用别命可以区分开来

- 语法

	- 方式一:

		- 单个:select 所查字段 as 起别名;
		- 多个:起完一个后面加  “ ,” ;       select 所查字段 as 起别名,select 所查字段 as 起别名;

	- 方式二:

		- 使用空格:

			- select 所查字段 所起别名,所查字段 所起别名 from 表名;

- 若是别命中有特殊符号如空格,# 时 用引号

8.去重

- select distinct 所查询的字段 from 表名

9 “+”号的用法(在mySQL中仅仅是运算,没有拼接)

- 1.select 数值+数值;
- 2.select 字符型+数值;其中一方为字符型,试图将字符型转换成数值,若转换成功,则继续做加法运算;若转换失败,则将字符型数值转换成0;
- 3.select null+数值;只要其中一方为null,则结果为null;

10.concat 拼接

- select concat('字符',‘字符’,‘字符’) as 别命;

11.select ifnull(有可能为null的部分,设置的返回的值) 【as 别命 from 表名】

二、 条件查询

1.语法

  • select 查询列表 from 表名 where 筛选条件

2.条件分类

1.按条件表达式筛选

 条件运算符:> < = <>(不等于) >= <=

2.按逻辑表达式筛选

逻辑运算符:and(&&)   or(||)     not(!)

3.模糊查询

like

	- 1.一般和通配符搭配使用                                     
	- 通配符:%  任意多个字符,包含0个字符   
	         _任意单个字符      
	         %包含固定字符%
	   
between   and

	- 例子

		- select * from 表名 where 数值列 >= 100 and 数值列 <=120;
		- select * from 表名 where 数值列 between 100 and 120;

	- 优点

		- 提高语句的简洁度

	- 注意点

		- 1.包含临界值
		- 2.两个临界值不能调换顺序

 in

	- 例子

		- select 查询列表1,查询列表2 from 表名 where 查询列表2 = '指定数据' or 查询列表2 = ‘指定数据’ or 查询列表2 = ‘指定数据’;
		- select 查询列表1,查询列表2 from 表名 where 查询列表2 in ( '指定数据' ,  ‘指定数据’ ,  ‘指定数据’);

	- 含义

		- 判断某字段的值是否属于in 列表中的某一项

	- 特点

		- 1.提高语言的简洁度

	- 注意点

		- 1.in 列表的值类型必须统一或兼容
		- 2.in (  );其中不支持通配符

is null

	- 例子

		- select 查询列表 from 表名 where 查询列表 is null;

	- 安全等于<=>

		- select 查询列表 from 表名 where 查询列表 <=> null;

三、排序查询
1.语法
select 查询列表
from 表名
【where 筛选条件】
order by 排序列表 【asc升序(可省略)||desc降序】

四、分组查询
1.语法

select 分组函数 ,列表(要求出现在group by 后面)                                                              
from 表名      
【where 筛选条件】                                  
group by 分组的列表           
【order by 子句】                    

2.注意

查询列表必须特殊,要求是分组函数 和group by 后出现的字段

3.特点

1>分组查询的筛选条件分为两类
                      数据源             位置                关键字  
	分组前筛选         原始表          group by 前面          where
	分组后筛选      分组后结果集       group by 后面          having
		
		
    注意点
		分组函数做条件肯定是放在having子句中
		能用分组前筛选的优先考虑使用分组前筛选

2>group by 子句支持单个字段分组,多个字段分组(多个字段之间用逗号隔开没有顺序要求),表达式或函数(用的比较少)

3>也可以添加排序(排序放在分组查询的最后)

五、连接查询
1.含义
又称多表查询,当查询的字段来自于多个表时,就会用到连接查询

2.笛卡尔乘积现象
表1 有m行 ,表2 n行 ,结果有m*n行
原因是没有有效的连接

3.分类

1.按年代分
	1>sql92标准(仅仅支持内连接)
			内连接
				1.等值连接
					1)多表等值连接的结果为多表的交集部分
					2)n表连接,至少需要n-1个连接条件
					3)多表的顺序没有要求
					4)一般需要为表起别命
					5)可以搭配排序、分组、筛选等使用
				2.非等值连接
					between and
				3.自连接
				    自己和自己做笛卡尔积

2>sql99标准(支持内连接+外连接(左外+右外,无全外连接)+交换连接)
		
			语法
				select 查询列表                                               
                from 表1 别命 【连接类型】                          
                join 表2 别命                                                      
                on 连接条件                                             
               【where 筛选条件】                                
               【group by 分组】                                  
               【having 筛选条件】                                
               【order by 排序】

2.按功能分
	1.内连接(inner)
		分类
			1.等值连接 
				特点
					可以添加分组、筛选、排序
					inner可以省略
					筛选条件放在where后面,连接条件放在on后面,提高分离性,便于阅读
					inner join 连接和sql92语法中的等值连接效果是一样的,都是查询交集
			2.非等值连接
				between and
			3.自连接
				自己和自己做笛卡尔积
				
	2.外连接
		分类
			1.左连接( left【outer】)
				left join左边的是主表
			2.右连接( right【outer】
				right join右边的是主表
			3.全外连接( full【outer】
			
		特点
			1.外连接的查询结果为主表中的所有记录,如果从表中有和它匹配的,则显示匹配的值;如果从表中没有和它匹配的,则显示null;外连接查询结果=内连接结果+主表中有而从表中没有的记录
			2.左外和右外交换两个表的顺序,可以实现同样的效果
			3.全外连接=内连接的结果+表1中有但表2中没有的+表2中有但表1中没有的
			
	3.交叉连接( cross )
		笛卡尔乘积

六、子查询
1.概念
当一个查询语句中又嵌套了另一个完整的select语句,则被嵌套的select语句称为子查询,外部的查询语句称为主查询或外查询

2.分类

按子查询出现的位置分
	1.select后面
		要求子查询的结果为单行单列(标量子查询)
	2.from后面
		要求子查询的结果可以为多行多列
	3.where或having后面
		要求子查询的结果必须为单列
	4.exists后面
		要求子查询结果必须为单列(相关子查询)

3.特点

1.在条件中,必须放在条件的右侧
2.一般放在小括号中
3.子查询优先于主查询
4.单行子查询对应了 单行操作符:>  <  >=  <= = <>
5.多行子查询对应了 多行操作符: any/some   all in
	1)in 
		判断某字段是否在指定列表内
			x  in(1,3,5,7)
	2)any/some
		判断某字段值是否满足其中任意一个
			x=any(1,3,5,7,9)
	3)all
		判断某字段的值是否满足里面所有的
			x>all(1,3,5,7,9)

七、分页查询
1.应用场景
当页面上的数据,一页显示不全,则需要分页显示。分页查询的sql命令请求数据库服务器,服务器响应查询到的多条数据,前台页面

2.语法

select 查询列表 
from 表1 别名
 join 表2 别名 
 on 连接条件 
 group by 分组 
 having 分组后筛选 
 order by 排序列表 
 limit 起始条目索引,显示的条目数

3.特点

1.起始条目索引默认是0
l2.imit后面支持两个参数,参数1 起始条目索引   参数2 条目数

八、联合查询
1.概念
当查询结果来自于多张表,但多张表之间没有关联,这时候往往使用联合查询,也称为union查询

2.语法

select 查询列表 
from 表1 
where 筛选条件 
union  select 查询列表 from 表1 where 筛选条件

3.特点

1.多条待联合的查询语句的查询列数必须一致,查询类型、字段意义最好一致
2.union实现去重查询
2.union all 实现全部查询,包含重复项。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SSK2580

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值