三、MySQL之数据查询语言(一)

CSDN新星计划第3季
活动详情地址:https://marketing.csdn.net/p/aeb393e206ac127c1f8dc5194cef8923
参赛赛道:大数据赛道
话题描述:
现在CSDN、知乎、掘金上各路大佬层出不穷,他们身经百战、血洗杀场,总结出满满的求职干货。但同时也存在很多非良心的博主,要么活出了人类的本质,复读机一样到处转载;要么纯粹自嗨型草草说了自己的经验,让读者无法从良莠不齐的资源海洋中高效高质地获取真正有用的信息。本话题的目的很简单,一句话:用最少的时间,最高效率,让你清楚:想要拿到Androidoffer,你需要做什么?你该怎么做?

文章目录

  • 前言
  • 基础查询
  • 条件查询
  • 排序查询
  • 常见函数
  • 总结

前言

这一节继续介绍MySQL数据库,主要介绍了DQL(数据查询语言),内容主要以查询语言为主。由于篇幅过长,DQL(数据查询语言)将分成两篇介绍。第一篇主要包括数据查询语言之基础查询、条件查询、排序查询、常见函数等内容。其中,主要介绍每一类查询语言的语法和其特点。

基础查询

  1. 语法

select 查询列表
from 表名;

  1. 特点
  • 查询列表可以是字段、常量值、表达式、函数、也可以是多个
  • 查询结果是一个虚拟表
  1. 示例
  • 查询单个字段
    select 字段名 from 表名;

  • 查询多个字段
    select 字段名,字段名 from 表名;

  • 查询所有字段
    select * from 表名;
    注:
    ①在做查询时,需打开指定的库,在最上面先写命令 USE库名;
    ②着重号’ '可用来区分是关键字还是字段;
    ③执行就选中谁来进行实现命令。

  • 查询常量
    注:
    MySQL中不区分字符和字符串

  • 查询函数
    select 函数名(实参列表);

  • 查询表达式
    select 100%98;

  • 起别名
    ①使用as
    好处:
    –便于理解
    –如果要查询的字段有重名的情况,使用别名可以区分开来
    ②使用空格
    注:
    要是别名中有特殊符号如空格、#等建议将别名加上双引号

  • 去重
    select distinct 字段名 from 表名;

  • +号
    作用:做加法运算
    select 数值+数值;直接运算
    select 字符+数值;先试图将字符转换成数值,如果转换成功,则继续运算;否则转换成0,再做运算
    select null+值;结果都为null

  • 【补充】concat函数
    功能:拼接字符
    select concat (字符1,字符2,字符3,…)

  • 【补充】ifnull函数
    功能:判断某字段或表达式是否为null,如果为null 返回指定的值,否则返回原来的值
    select ifnull (commission_pct,0) from employees;

  • 【补充】isnull函数
    功能:判断某字段或表达式是否为null,如果是,则返回1,否则返回0;


条件查询

  1. 语法

select 查询列表
from 表名
where 筛选条件

  1. 筛选条件的分类
  • 简单条件运算符
    < > = <> != >= <= <=>安全等于

  • 逻辑运算符
    && and
    || or
    ! not

  • 模糊查询
  • like

特点:
①一般搭配通配符使用,可以判断字符型或数值型
②通配符:%任意多个字符,包含0个字符;_任意单个字符

  • between and

①使用between and 可以提高语句简洁度
②包含临界值
③两个临界值不要调换顺序

  • in

含义:判断某字段的值是否属于 in 列表中的某一项
①使用 in 提高语句简洁度
②in 列表的值类型必须一致或兼容
③不适用通配符

  • is null / is not null
    =或< >不能用于判断 null 值
    is null 或 is not null 可以判断 null 值

is null PK<=>
is null : 仅仅可以判断null值,可读性较高,建议使用
<=>:既可以判断null值,又可以判断普通的数值,可读性较低


排序查询

  1. 语法

select 查询列表
from 表
where 筛选条件
order by 排序列表【asc / desc】

  1. 特点

①asc代表的是升序,desc代表的是降序。如果不写,默认是升序
②order by 子句中支持单个字段、多个字段、函数、表达式、别名
③order by 子句一般是放在查询语句的最后面,limit 子句除外


常见函数

1、概述

  • 功能:类似于 java 的方法,将一组逻辑语句封装在方法体中,对外暴露方法名
  • 好处:①隐藏了实现细节②提高代码的重用性
  • 调用:select 函数名(实参列表)【from 表】;
  • 特点:①叫什么(函数名)②干什么(函数功能)
  • 分类:①单行函数:如concat 、length、ifnull等 ②分组函数:功能-做统计使用,又称为统计函数,聚合函数,组函数

2、单行函数

  1. 字符函数
命令 功能
concat 连接
substr 截取子串
upper 变大写
lower 变小写
replace 替换
length 获取字节个数
trim 去前后空格
lpad 左填充
rpad 右填充
instr 获取子串第一次出现的索引
  1. 数学函数
命令 功能
round 四舍五入
ceil 向上取整
floor 向下取整
truncate 截断
mod 取余
rand 获取随机数,返回0-1之间的小数
  1. 日期函数
命令 功能
now 返回当前日期 +时间
year 返回年
month 返回月
day 返回日
date_format 将日期转换成字符
curdate 返回当前日期
str_to_date 将字符转换成日期
curtime 返回当前时间
hour 小时
minute 分钟
second
datediff 返回两个日期相差的天数
monthname 以英文形式返回月

一些日期的格式符表示

序号 格式符 功能
1 %Y 四位的年份
2 %y 两位的年份
3 %m 月份(01,02,…11,12)
4 %c 月份(1,2,…11,12)
5 %d 日(01,02,…)
6 %H 小时(24小时制)
7 %h 小时(12小时制)
8 %i 分钟(00,01…59)
9 %s 秒(00,01,…59)
  1. 其他函数
命令 功能
version 当前数据库服务器的版本
database 当前打开的数据库
user 当前用户
  1. 流程控制函数
    ①if(条件表达式,表达式1,表达式2):如果条件表达式成立,返回表达式1,否则返回表达式2
    ②case情况1
    case 变量或表达式或字段
    when 常量1 then 值1
    when 常量2 then 值2

    else 值n
    end
    ③case情况2
    case
    when 条件1 then 值1
    when 条件2 then 值2

    else 值n
    end

3、分组函数

  1. 分类
命令 功能
max 最大值
min 最小值
sun
avg 平均值
count 计算个数
  1. 特点

①语法
select max(字段) from 表名;
②支持的类型
sum和avg一般用于处理数值型
max、min、count可以处理任何数据类型
③以上分组函数都忽略null
④都可以搭配distinct使用,实现去重的统计
select sum(distinct 字段)from 表;
count函数
count(字段):统计该字段非空值的个数
count(*):统计结果集的行数
count(1):统计结果集的行数
效率上: MyISAM存储引擎,count(*)最高 InnoDB存储引擎,count(*)和count(1)效率>count(字段)
⑥和分组函数一同查询的字段,要求是group by 后出现的字段


总结

这一篇主要介绍了数据查询语言的一些查询类型,下一篇将继续介绍其他几种数据查询语言类型。

你可能感兴趣的:(数据库,mysql,数据库,database)