SQL语言之DQL

DQL全称是Data Query Language,即数据查询语言,主要是查询数据库中表的记录。

一.简单查询:

1.基础查询:SELECT子句和FROM子句

由SELECT和FROM构成。

SELECT 字段1[,字段2,字段3,...]
FROM1[,表2,表3...]

SELECT字句用于筛选显示列数据,FROM子句用于选择表

SELECT子句中可以使用*表达查询所有的字段

SELECT子句可以加DISTINCT去重;

2.基础查询用法

1.查询单个字段
    select 字段名(列名)from 表名 ;
2.查询多个字段
    select 字段名1,字段名2... from 表名 ;
3.查询所有字段
    select * from 表名 ;
4.查询常量值
    selcet 常量值 ;
5.查询表达式
    select 100*98 ;
6.查询函数
    select 函数名() ;

二.条件查询:

使用 WHERE 子句来指定查询条件,从 FROM 子句的中间结果中选取适当的数据行,达到数据过滤的效果。

SELECT 字段1[,字段2,字段3,...]
FROM 表1[,表2,表3...]
WHERE 条件1
AND 条件2
……

条件语句:

分类:
1.按条件表达式筛选(>,<,>=,<=,=,!=/<>)
2.按逻辑表达式筛选(&& || !)--- (and or not)
3.模糊查询
      like                        判断是否相似
      between and        判断是否在给定区间
      in                          判断在集合中
      is null                   判断是否为空

 三、排序查询:

将查询的结果集按照指定的字段升序或降序显示。

select  要查询的东西
from  表
where  条件
order by 排序的字段|表达式|函数|别名 【asc|desc】

 排序方式:
     ASC:升序,默认的
     DESC:降序

排序分类:
    1.按单个字段进行排序
    2.按多个字段排序
    3.按表达式排序
    4.按别名排序
    5.按函数排序

四、分组查询:

将查询结果按照1个或多个字段进行分组,字段值相同的为一组其实就是按照某一列进行分类。

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

特点:
    1、可以按单个字段分组
    2、和分组函数一同查询的字段最好是分组后的字段
    3、可以按多个字段分组,字段之间用逗号隔开
    4、可以支持排序
    5、having后可以支持别名

 where 和 having 的区别?
     1. where 在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不                满足结果,则不会被查询出来
     2. where 后不可以跟聚合函数,having可以进行聚合函数的判断。 

五.多表连接查询 :

连接查询是关系数据库中最主要的查询,主要包括内连接、外连接和交叉连接等。通过

接运算符可以实现多个表查询。 连接是关系数据库模型的主要特点,也是它区别于其它

型 数据库管理系统的一个标志。

内连接:

SQL92语法:

SELECT 查询列表
FROM 表名1 别名1 ,表名2 别名2 
WHERE 连接条件 				
AND 筛选条件				
GROUP BY 分组列表			
HAVING 分组后筛选条件		  
ORDER BY 排序列表	

SQL99语法:

select 字段列表 
from 表名1 
[inner] join 表名2 on 条件
where 筛选条件
group by 分组条件
having 分组后的筛选条件
order by 排序字段

注意:
    1. 使用表名前缀在多个表中区分相同的列
    2. 在不同表中具有相同列名的列可以用表的别名加以区分
    3. 如果使用了表别名,则在select语句中需要使用表别名代替表名
    4. 表别名最多支持32个字符长度,但建议越少越好

外连接:

左外连接:

select 字段列表 
from 表1 
left [outer] join 表2 on 条件
...

 左外连接查询的是左表所有数据以及其交集部分

右外连接:

select 字段列表 
from 表1 
right [outer] join 表2 on 条件
...

 右外连接查询的是右表所有数据以及其交集部分    

六.子查询:

查询中嵌套查询,称嵌套查询为子查询

1、子查询都放在小括号内
2、子查询可以放在from后面、select后面、where后面、having后面,但一般放在条件的右侧
3、子查询优先于主查询执行,主查询使用了子查询的执行结果
4、子查询根据查询结果的行数不同分为以下两类:
        ① 单行子查询
            结果集只有一行
            一般搭配单行操作符使用:> < = <> >= <= 
            非法使用子查询的情况:
                   a、子查询的结果为一组值
                b、子查询的结果为空
           ② 多行子查询
            结果集有多行
            一般搭配多行操作符使用:any、all、in、not in
            in: 属于子查询结果中的任意一个就行
            any和all往往可以用其他查询代替

七.分页查询 

应用场景:

当需要展示数据量过大,不适合直接展示,需要分页提交sql请求

select 字段|表达式,...
from 表
where 条件
group by 分组字段
having 条件
order by 排序的字段
limit 起始的条目索引,条目数;

特点:
    1.起始条目索引从0开始

    2.limit子句放在查询语句的最后

    3.公式:select * from  表 limit (page-1)

八.联合查询

将多条查询语句的结果合并成一个结果

select 字段|常量|表达式|函数 from 表 where 条件 union 【all】
select 字段|常量|表达式|函数 from 表 where 条件 union 【all】
select 字段|常量|表达式|函数 from 表 where 条件 union 【all】
.....

 特点:
    1、多条查询语句的查询的列数必须是一致的
    2、多条查询语句的查询的列的类型几乎相同
    3、union代表去重,union all代表不去重

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值