MySQL基础学习: 第二章 DQL语句

一、MySQL中的DQL语句

DQL主要指的是SELECT语句。SELECT用于检索从一个或多个表中选择的行,并且可以包括UNION操作和子查询。从MySQL 8.0.31开始,也支持INTERSECT和EXCEPT操作。本章主要对SELECT语句的用法进行逐一的介绍,语法如下:

SELECT
    [ALL | DISTINCT | DISTINCTROW ]
    [HIGH_PRIORITY]
    [STRAIGHT_JOIN]
    [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
    [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr [, select_expr] ...
    [into_option]
    [FROM table_references
      [PARTITION partition_list]]
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]]
    [HAVING where_condition]
    [WINDOW window_name AS (window_spec)
        [, window_name AS (window_spec)] ...]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC], ... [WITH ROLLUP]]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
    [into_option]
    [FOR {UPDATE | SHARE}
        [OF tbl_name [, tbl_name] ...]
        [NOWAIT | SKIP LOCKED]
      | LOCK IN SHARE MODE]
    [into_option]

into_option: {
    INTO OUTFILE 'file_name'
        [CHARACTER SET charset_name]
        export_options
  | INTO DUMPFILE 'file_name'
  | INTO var_name [, var_name] ...
}
  • select_expr:包含一个选择列表,可以表示一列或、达式或者*来简写。

二、基础查询操作

1、查询常量

主要包含数字常量和字符串常量:

  • 数字常量:select 1
  • 字符常量:select ‘abc’

2、查询表达式

例如数字相乘或相加:

  • select 2*3
  • select 2+3:在MySQL中+号的功能仅仅是一个运算符,其运算有如下规则:
    • 如果其中有一项元素为字符,则在做加法运算时会将字符转成数字。
    • 如果字符可以转成数字,则做相加。
    • 如果字符不可以转数字,则将字符转为0,然后做相加。
    • 如果其中一项元素为null,则相加的结果为null,例如SELECT null + 10,结果为null。

3、查询函数

例如查询数据库版本和当前所在的数据库:

  • select version()
  • select database()

4、查询表

在查询的过程中可以为字段、函数、子查询、表名使用as(也可以不用写)关键字起别名。起别名可以起到如下作用:(1)使用有意义的别名便于理解;(2)对于联合查询如果两个表的字段名相同,可以使用别名进行区分。

三、查询语句的执行顺序

查询中用到的关键词主要包含六个,并且他们的顺序依次为
select、from、where、group by、having、order by 、limit
对于我们书写SELECT语句的的顺序如下:

SELECT DISTINCT
    select_list
FROM
    left_table join_type
JOIN right_table ON join_condition
WHERE 
    where_condition
GROUP BY
    group_by_list
having
    having_condition
ORDER BY
    order_by_condition
LIMIT limit_number

而MySQL server按照如下的顺序对SELECT语句进行解析:

FROM left_table
ON join_condition
join_type JOIN right_table
WHERE where_condition
GROUP BY group_by_list
HAVING having_condition
SELECT 
DISTINCT select_list
ORDER BY order_by_condition 【asc|desc】
LIMIT limit_number

其中select和from是必须的,关键字的解析如下:

  • from: 需要从哪个数据表检索数据
  • on: 连接条件
  • where: 过滤表中数据的条件
  • group by: 如何将上面过滤出的数据分组
  • having: 对上面已经分组的数据进行过滤的条件
  • select: 查看结果集中的哪个列,或列的计算结果
  • order by : 按照什么样的顺序来查看返回的数据,子句中支持单个字段、多个字段、表达式、函数和别名;该语句一般放在最后面(limit的前面);其中asc代表升序,desc代表降序,如果不写默认是升序。
  • limit offset,size: offset表示要从哪一行开始,size表示要查多少行数据。

四、条件查询

1、 简单条件运算符:

  • “>”
  • "< "
  • “=”
  • “!=”
  • “<>”
  • " >= "
  • “<=“”

2、逻辑运算符:

  • &&
  • ||
  • !
  • and
  • or
  • not

3、模糊查询:

  • like:%匹配诺干个元素,可以为0,_匹配一个元素
  • between and: 包含临界值
  • in:判断某个字段的值是否属于in列表中的某一项
  • is null:=或<>不能用于判断null值,is null 或is not null可以判断null值且仅仅可以判断null值
  • 安全等于:<=>既可以判断null值,又可以判断普通值

五、MySQL中的常见函数

1、字符函数

(1) length:获取参数值的字节个数
(2)concat:拼接字符串
(3) upper、lower:字符串大小写转换
(4) substr:注意索引从1开始
(5) instr:返回子串第一次出现的索引,如果找不到返回0
(6) trim:
(7)lpad:用指定的字符实现左填充指定长度
(8) rpad:用指定的字符串实现右填充指定长度
(9) replace:替换

2、数学函数

(1)round:四舍五入
(2)ceil:向上取整,返回>=该参数的最小整数
(3)floor:向下取整,返回<=该参数的最大整数
(4)truncate:截断
(5)mod:取余

3、日期函数

(1)now

返回当前系统日期+时间

(2)curdate

返回当前系统日期,不包含时间

(3)curtime

返回当前时间,不包含日期

(4)year:年

(5)month、monthname:月

(6)str_to_date

将日期格式的字符串转换成指定格式的日期;select * from employees where hiredate=str_to_date(‘4-3 1992’, ‘%c-%d %Y’)

(7)date_format

将日期转换成字符; select date_format(now(), ‘%y年%m月%d日’) as out_put

(8)day

(9)hour

(10)minute

(11)second

(12)datediff:

计算两个日期的差值

(13)DATE_ADD

用于在给定的日期或时间上添加指定的时间间隔。
例如:

  • 日期添加一天
    在这里插入图片描述
  • 日期添加一小时
    在这里插入图片描述
  • 日期添加一秒
    在这里插入图片描述
  • 当前时间上加1分钟
    在这里插入图片描述

4、流程控制函数

(1)if函数:if else的效果:select IF(10<5,‘大’,‘小’);
(2)case函数:java中switch case的效果

  • 使用方式1
case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句1;
when 常量2 then 要显示的值2或语句2;
...
else 要显示的值n或语句n;
end
  • 使用方式2
case
when 条件1 then 要显示的值1或语句1
when 条件2 then 要显示的值2或语句2
...
else 要显示的值n或语句n
end

六、关键字

1、UNION

(1)介绍

UNION 是 SQL 中的一个重要操作符,它允许你将两个或多个 SELECT 语句的结果集合并成一个结果集。使用 UNION 时,每个 SELECT 语句必须拥有相同数量的列,并且这些列的数据类型也需要兼容(尽管列名不必相同,但在结果集中列名将与第一个 SELECT 语句中的列名相同)。此外,UNION 默认会去除重复的行,如果你想要包含重复的行,可以使用 UNION ALL。

(2)UNION 的基本语法

SELECT column_name(s) FROM table1  
UNION  
SELECT column_name(s) FROM table2;

或者,如果你想要包含所有结果,包括重复的行:

SELECT column_name(s) FROM table1  
UNION ALL  
SELECT column_name(s) FROM table2;
  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

玉成226

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

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

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

打赏作者

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

抵扣说明:

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

余额充值