首页 > 数据库 >sql-DQL基础语句总结

sql-DQL基础语句总结

时间:2024-07-25 21:06:50浏览次数:14  
标签:语句 函数 查询 分组 sql DQL 筛选 连接

一·基础查询

1.语法
SELECT * | {[DISTINCT] column | expression [alias],...}
FROM table;
select 查询列表 from 表名;
注意:
(1)SELECT:标识选择哪些列
(2)FROM:标识从哪个表中选择
2、特点
(1)查询列表可以是:表中的字段、常量值、表达式、函数。
(2)查询的结果是一个虚拟的表格。

二·条件查询

1、语法
SELECT * | {[DISTINCT] column | expression [alias],...}
FROM table
[WHERE condition(s)];
select
查询列表(3)
from
表名 (1)
where
筛选条件 (2);
注:此处的(1),(2),(3)为执行顺序

筛选条件分类:
● 按条件表达式筛选
○ 简单条件运算符: >、<、=、!= (<>)、>=、<=
● 按逻辑表达式筛选
○ 逻辑运算符: &&(and)、|| (or)、!(not)
○ &&(and):两个条件都为true,结果为true,反之为false
○ ||(or):只要有一个条件为true,结果为true,反之为false
○ !(not):如果连接的条件本身为false,结果为true,反之为false
● 模糊查询
○ like、between and、in、is null
○ like
■ 特点:一般和通配符搭配使用。
● 通配符:
○ % 任意多个字符,包含0个字符
○ _ 任意单个字符
○ between and
■ 使用between and可以提高语句的简洁度
■ 包含临界值
■ 两个临界值不要调换顺序
○ in 判断某个字段的值是否属于in列表中的某一项
■ 使用in提高语句简洁度
■ in列表的值类型必须一致或兼容
○ is null
■ =或者<> 不能用于判断null值
■ is null 或 is not null 可以判断null值

三·排序查询

1、语法
引入:select * from employees;查看薪资排序、出生年月日排序;
select 查询列表 (3)
from 表名 (1)
[where 筛选条件] (2)
order by 排序列表 [asc | desc] (4)
2、特点:
1、asc代表的是升序,desc代表的是降序,如果不写,默认是升序。
2、order by 子句中可以支持单个字段、多个字段、表达式、函数、别名
3、order by 子句一般是放在查询语句的最后面,limit子句除外

四·常见函数

1、概念
概念:将一组逻辑语句封装在方法提中,对外暴露方法名。类似于python中的方法
好处:
1)隐藏了实现细节
2)提高代码的重用性
调用:select 函数名(实参列表) [ from 表名];
2、特点:
1)叫什么(函数名称)
2)干什么(函数功能)
分类:
1)单行函数
如:concat、ifnull、length
包含:字符函数、数学函数、日期函数、其他函数、流程控制函数-if函数、流程控制函数-case结构
2)分组函数
功能:做统计使用又称统计函数(聚合函数、组函数)。

五·分组函数

1、概念
功能:用作统计使用,又称为聚合函数或统计函数或组函数
分类:
(1)sum 求和
(2)avg 平均值
(3)max 最大值
(4)min 最小值
(5)count 计算个数
特点:
(1)sum、avg一般用于处理数值型,max、min、count可以处理任何类型
(2)以上分组函数都忽略null值
(3)可以和distinct搭配实现去重的运算
(4)一般使用count(*)做统计函数
(5)和分组函数一同查询的字段要求是group by后的字段

六·分组查询

1、概念
语法:
SELECT column, group_function(column)
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[ORDER BY column];

select 分组函数,列(要求出现在group by的后面)
from 表明
[where 筛选条件]
group by 分组的列表
[order by 子句]
特点:
1、分组查询中的筛选条件分为两类
数据源 位置 关键字
分组前筛选 原始表 group by子句的前面 where
分组后筛选 分组后的结果集 group by子句的后面 having
(1)分组函数做条件肯定是放在having子句中
(2) 能用分组前筛选的,就优先考虑使用分组前筛选
2、group by 子句支持单个字段分组,多个字段分组(多个字段之间用逗号隔开没有顺序要求),
表达式或函数(用的较少)
3、也可以添加排序(排序放在整个分组查询的最后)

七·链接查询

概念:又称多表查询,当查询的字段来自多个表时,就会用到连接查询。
分类:
(1)按年代分类:
sql92标准:仅仅支持内连接
sql99标准(推荐):支持内连接+外连接(左外、右外)+交叉连接
(2)按功能分类:
内连接:
等值连接
非等值连接
自连接
外连接:
左外连接
右外连接
全外连接
交叉连接

八·子查询

1、概念
含义:出现在其他语句中的select语句,称为子查询或内查询;外部的查询语句,称为主查询或外查询
分类:
按子查询出现的位置:
select后面
仅仅支持标量子查询
where或having后面
标量子查询 (单行)
列子查询 (多行)
行子查询
exists后面(相关子查询)
表子查询
按结果集的行列数不同:
标量子查询(结果集只有一行一列)
列子查询(结果集只有一列多行)
行子查询(结果集有一行多列)
表子查询(结果集一般为多行多列)

九·分页查询

概念
应用场景:当要显示的数据,一页显示不全,需要分页提交sql请求
语法:
select 查询列表 (7)
from 表名 (1)
[
join type join 表2 (2)
on 连接条件。(3)
where 筛选条件 (4)
group by 分组字段 (5)
having 分组后的筛选 (6)
order by 排序的字段 (8)
]
limit [offset] ,size; (9)
其中:
offset 要显示条目的起始索引(起始索引从0开始)
size 要显示的条目个数

十·union联合查询

概念
union联合(合并):将多条查询语句的结果合并成一个结果
语法:
查询语句1
union
查询语句2
union
...
应用场景:要查询的结果来自于多个表,且多个表没有直接的连接关系,但查询的信息一致时。
特点:
1、要求多条查询语句的查询列数是一致的。
2、要求多条查询语句的查询的每一列的类型和顺序最好一致。
3、union关键字默认去重,如果使用union all可以包含重复项。

各位学完知识点后,可以去百度搜索力扣[https://leetcode.cn/search/?q=sql]进行MySQL的强化训练,也可以找私信森森要对应知识点的例题和练习,我会不定期的去更新相关知识点,觉得有用的给个关注叭

标签:语句,函数,查询,分组,sql,DQL,筛选,连接
From: https://www.cnblogs.com/xu-sy122/p/18324141

相关文章

  • MySQL基础练习20题,看看你的sql基础man不man
    数据获取表的数据信息(sql文件)放在这个链接里了,提取码:52xz,需要的自行提取。数据来自网上的练习,已经给小伙伴们总结好了。https://pan.baidu.com/s/11YMWaXtZb9K60cpOuYTwag将数据导入到mysql中大家可以直接在navicat运行该脚本,就可以直接导入数据了,如果遇到问题很可能是编码......
  • 【C++】选择结构- 嵌套if语句
    嵌套if语句的语法格式:if(条件1) {        if(条件1满足后判断是否满足此条件){条件2满足后执行的操作}        else{条件2不满足执行的操作}}下面是一个实例#include<iostream>usingnamespacestd;intmain4(){ /* 提示用户输入一个高考分数......
  • 基于javaweb+mysql数据库实现的宠物领养|流浪猫狗网站
    《基于javaweb+mysql数据库实现的宠物领养网站》该项目含有源码、文档等资料、配套开发软件、软件安装教程、项目发布教程等使用技术:前端使用技术:JSP,HTML5,CSS3、JavaScript等后台使用技术:Servlet、Jdbc等数据库:Mysql数据库项目功能介绍:本系统为基于jsp+mysql的宠物领养......
  • 流程控制语句结构
    分支结构:多个分支选择其中一个分支执行分支结构:根据条件选择性的执行某些代码1、条件判断:if...else系列2、选择结构:switch...case系列顺序结构:从上到下,从左到右依次执行跳转语句1.break语句break语句可以用在switch语句中,用于退出switch语句,是程序从switch结构后面的第......
  • JavaSE核心技术——3 流程控制语句结构
    一、顺序结构程序由上向下运行。二、分支结构1.if语句三种格式:2.switch-case注意:1.switch(表达式)中表达式的值必须是下述几种类型之一:byte,short,char,int,枚举(jdk5.0),String(jdk7.0);2.break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺......
  • 数据库(MySQL)-DQL数据查询语言
        DQL(DataQueryLanguage数据查询语言)的用途是查询数据库数据,如select语句。其中,可以根据表的结构和关系分为单表查询和多表联查。单表查询    单表查询:针对数据库中的一张数据表进行查询全字段查询    语法:select字段名from表名#推荐s......
  • 腾讯云 Debian12 安装MySQL8亲测可用
    今天刚好需要部署一台服务器,网上查了资料,折腾很久,还是很多问题,现在把我的安装过程以及遇到问题的解决方案记录下来,供大家借鉴!1、更新系统sudoaptupdate2、下载软件包wgethttps://repo.mysql.com/apt/debian/pool/mysql-apt-config/m/mysql-apt-config/mysql-apt-con......
  • ### 流程控制语句结构
    流程控制语句结构顺序结构顺序结构是程序中最基本的结构,代码按照从上到下的顺序逐条执行。分支结构if-elseif语句用于基于条件表达式的真假来执行不同的代码块。f-else语句在条件表达式为假时提供了另一种执行路径。if-elseif-else语句可以处理多个条件分支。swit......
  • mysql查询今天、昨天、本周、本月、上一月 、今年数据
    原文链接:https://www.cnblogs.com/cnsdhzzl/p/12724580.html--今天select*from表名whereto_days(时间字段名)=to_days(now());--昨天SELECT*FROM表名WHERETO_DAYS(NOW())-TO_DAYS(时间字段名)<=1--本周SELECT*FROM表名WHEREYEARWEEK(date_format......
  • Sqli-labs-master的21—25通关教程
    目录Less-21('闭合)查询数据库名查询数据库中的表查询表中字段名查询表中数据Less-22("闭合)查询数据库名查询数据库中的表查询表中字段名查询表中数据Less-23查询数据库名查询数据库中的表查询表中字段名查询表中数据Less-24(二次注入)Less-25查询数据库名......