DQL数据查询语言

一、基础查询

1、语法

select  查询列表

from  表名;

2、特点

①、查询列表可以是字段、函数、常量、表达式一个或多个的组合

②、查询结果是一个虚拟表

3、示例

#1、查询单个字段
SELECT 字段 FROM 表名;

#2、查询多个字段
SELECT 字段1,字段2... FROM 表名;

#3、查询所有字段
SELECT * FROM 表名;

#4、查询常量值
SELECT 常量值;

#5、查询函数
SELECT 函数(实参); #mysql的函数都有返回值

#6、查询表达式
SELECT 1024*1024;  #不支持的运算符有++、--、+=、三目运算符等

/*7、起别名
  ①、as  
  ②、空格
  别名可以加单双引号也可以不加
*/

#8、去重
SELECT DISTINCT 字段名 FROM 表名; #只能distinct单个字段

/*9、+
只能做运算,不能做字符拼接
  ①、数值+数值:直接运算
  ②、字符+数值:如果字符可以转换为数值则做加法运算;否则转换为0再运算
  ③、null+数值或字符:结果都为null
*/

#10、concat 字符拼接
SELECT CONCAT(str1,str2,...);

#11、ifnull函数
SELECT IFNULL(`manager_id`,0)FROM `employees`; #如果字段或表达式为null则返回指定值

/*12、isnull函数
ifnull的变形,如果字段或表达式为null则返回1*/
SELECT ISNULL(`manager_id`),`manager_id` FROM `employees`;

二、条件查询

1、语法

select  字段名

from  表名

where 筛选条件;

2、 筛选条件的分类

①、条件运算符

<>兼容于!=

<=>安全等于:为了特殊对待NULL

②、逻辑运算符

&& and

|| or

!not

③、模糊查询

like :通常和通配符搭配,%任意多个字符包括0个    _任意单个字符   escape转义字符

in  

between and

is null / is not null

 三、排序查询

1、语法

select  查询列表

from  表名

where 查询条件

order by 排序列表 asc/desc;

2、特点 

①、可以不写asc/desc,默认是asc升序

②、可以嵌套排序

 四、分组查询

1、语法

select  分组函数,分组列表

from  表名

where 分组前筛选

group by 分组列表

having 分组后筛选

order by 排序列表 asc/desc;

2、特点  

 ①、两类筛选条件
数据源位置关键字
分组前筛选原始表group by的前面where
分组后筛选筛选后的结果集group by的后面having

分组函数一定出现在分组后筛选

②、group by 后面可以跟单个字段分组、多个字段分组、表达式或函数

五、连接查询

1、含义

  当查询中出现多个表中的字段,就需要对多个表进行连接,如果不进行有效链接,就会出现笛卡尔乘积现象。

2、分类

内连接:等值连接、非等值连接、自连接

外连接:左外连接、右外连接、全外连接

交叉连接

3、语法

内连接:

 ①、等值连接

select 查询列表

from 表1 别名,表2 别名

where 表1.key = 表2.key       (如果给表起了别名就必须使用别名,使用原来的表名编译器会不认识)

【and 筛选条件

group by 分组字段

having 分组后筛选

order by 排序字段 】;

②、不等值连接

select 查询列表

from 表1 别名,表2 别名

where 不等值连接条件;

③、自连接

select 查询列表

from 表 别名1,表 别名2   (同一张表,其实就是完全相同的两张表根据连接条件进行连接

where 连接条件;

以上是sql92语法,新的sql99与sql92还是有一丁点的区别:

select 查询列表

from 表1 别名

inner join 表2 别名 on 连接条件

【inner join 表3 别名 on 连接条件

where 分组前筛选

group by 分组字段

having 分组后筛选

order by 排序】

 外连接:

sql92是不支持的,只有sql99支持

①、左外连接

select 查询列表

from 主表

left 【outer】 join 从表

on  连接条件

【where 分组前筛选

group by 分组字段

having 分组后筛选

order by 排序】

②、右外连接

select 查询列表

from 从表

right 【outer】 join 主表

on 连接条件

③、全外连接

select 查询列表

from 主表1

full 【outer】 join 主表2

on 连接条件

外连接与内连接的差别在于:符合连接条件的从表与内连接一样,不符合连接条件的主表的能连接到,但值为NULL。

 交叉连接:

也是只有sql99支持

select 查询列表

from 表1

cross join 表2;

查询结果为两个表的笛卡尔乘积

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

small_planet

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

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

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

打赏作者

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

抵扣说明:

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

余额充值