MySQL的语法规范
学习DQL语言之前我们需要先了解MySQL的语法规范
- 不区分大小写
- 使用“;”结尾
- 各子句一般分行写
- 关键字不能缩写也不能分行
- 注释:单行注释: #注释文字; 单行注释:– 注释文字;多行注释:/* 注释文字 */
DQL语言
一、简单查询
语法:
select 查询列表 from 表名;
查询列表可以是 单个字段、多个字段、常量值、表达式、函数。 如果要去除重复则使用:distinct函数 去别名:用as取别名,也可省略用空格 查询的表格是一个虚拟的表格 注意: 如果查询的是表中的所有字段,则查询列表可以使用“*”来代替
二、条件查询 语法:
select 查询列表 from 表名 where 筛选条件;
注意: where子句后跟条件 条件运算符:>,<,=,!=/<>,>=,<= 逻辑运算符:&&,||,!或 and, or,not 模糊查询 : like 模糊查询,占位符:_ :单个字符,% :多个任意字符 between and 两个临界值之间的所有数据,包括两个临界值 in 判断某段的值是否属于in列表中的某一项 is null/is not null 判断字段值是否为null
三、分组查询 语法:
select 要查询的东西 from 表 where 条件 order by 排序的字段|表达式|函数|别名 【asc|desc】
注意: asc 升序,默认的 desc 降序 排序分类: 1.按单个字段进行排序 2.按多个字段排序 3.按表达式排序 4.按别名排序 5.按函数排序 如果有多个排序条件,则当之前的条件值一样时,才会判断第二条件
四、常见函数 1.字符函数
名称 | 作用 |
---|
concat | 拼接字符 | substr | 截取子串 | upper | 转换成大写 | lower | 转换成小写 | trim | 去前后指定的空格和字符 | ltrim/rtrim | 去左/右边空格 | replace | 替换 | lpad/rpad | 左/右填充 | instr | 返回子串第一次出现的索引 | length | 获取字节个数 |
2.数学函数
名称 | 作用 |
---|
round | 四舍五入 | rand | 随机数 | floor | 向下取整 | ceil | 向上取整 | mod | 取余 | truncate | 截断 |
3.日期函数
名称 | 作用 |
---|
now | 当前系统日期+时间 | curdate | 当前系统日期 | curtime | 当前系统时间 | str_to_date | 将字符转换成日期 | date_format | 将日期转换成字符 |
4.流程控制函数 if函数
if(表达式,值1,值2)
满足表达式1则显示值1,否则显示值2
case函数 使用一:
case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句1
...
when 常量n then 要显示的值n或语句n
【else 要显示的值n+1或语句n+1】
end
使用二:
case
when 条件一 then 要显示的值1或语句1
...
when 条件n the 要显示的值n或语句n
【else 要显示的值n+1或语句n+1】
end
五、分组函数
名称 | 作用 |
---|
count | 计算个数 | max | 计算最大值 | min | 计算最小值 | sum | 计算和 | avg | 计算平均值 |
注意: 使用count函数时一般选择非空的列:主键 以上五个分组函数都忽略null值,除了 count(*) sum和avg一般用于处理数值型,max、min、count可以处理任何数据类型 都可以搭配distinct使用,用于统计去重后的结果 count的参数可以支持: 字段、常量值
六、分组查询 语法:
select 查询的字段,分组函数
from 表
group by 分组的字段
特点: 1、可以按单个字段分组 2、和分组函数一同查询的字段最好是分组后的字段 3、可以按多个字段分组,字段之间用逗号隔开 4、可以支持排序 5、having后可以支持别名 常见面试题 where 和 having 的区别? 1. where 在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来 2. where 后不可以跟聚合函数,having可以进行聚合函数的判断。
七、多表连接查询 1.内连接 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个字符长度,但建议越少越好
2.外连接 左外连接语法:
select 字段列表
from 表1
left [outer] join 表2 on 条件
...
注意: 左外连接查询的是左表所有数据以及其交集部分 右外连接语法:
select 字段列表
from 表1
right [outer] join 表2 on 条件
...
注意: 右外连接查询的是右表所有数据以及其交集部分
3.子查询 概念: 查询中嵌套查询,称嵌套查询为子查询 特点: 1、子查询都放在小括号内 2、子查询可以放在from后面、select后面、where后面、having后面,但一般放在条件的右侧 3、子查询优先于主查询执行,主查询使用了子查询的执行结果 4、子查询根据查询结果的行数不同分为以下两类: ① 单行子查询 结果集只有一行 一般搭配单行操作符使用:> < = <> >= <= 非法使用子查询的情况: a、子查询的结果为一组值 b、子查询的结果为空 ② 多行子查询 结果集有多行 一般搭配多行操作符使用:any、all、in、not in in: 属于子查询结果中的任意一个就行 any和all往往可以用其他查询代替
4.分页查询 语法:
select 字段|表达式,...
from 表
where 条件
group by 分组字段
having 条件
order by 排序的字段
limit 起始的条目索引,条目数;
** 特点:** 1.起始条目索引从0开始 2.limit子句放在查询语句的最后 3.公式:select * from 表 limit (page-1)*sizePerPage,sizePerPage
5.联合查询 语法:
select 字段|常量|表达式|函数 from 表 where 条件 union 【all】
select 字段|常量|表达式|函数 from 表 where 条件 union 【all】
select 字段|常量|表达式|函数 from 表 where 条件 union 【all】
.....
select 字段|常量|表达式|函数 from 表 where 条件
特点: 1、多条查询语句的查询的列数必须是一致的 2、多条查询语句的查询的列的类型几乎相同 3、union代表去重,union all代表不去重
关于DQL语言的大概归纳就到这里了!
|