MySQL基础(二)查询语句知识点汇总

一、基础查询

基本语法为:

SELECT 查询列表 FROM 表名

其中,查询列表可以是:表中字段、常量值、表达式、函数;查询的结果是一个虚拟的表格。

一些小tips:
1.可以用着重号 ''来区分字段和关键字
2.经常会使用DISTINCT 去重
3.起别名:既可以使用as,也可以使用空格

# 使用as起别名                   
SELECT * FROM employees AS e;
# 使用空格起别名
SELECT * FROM employees e;

4.+的作用:运算符

  • 两个操作数都为数值型,则做加法运算
  • 若其中一方为字符型,则尝试将字符型数值转换成数值型,转换成功则继续做运算,失败则转换为0
  • 只要一方为null,结果肯定为null

二、条件查询

SELECT 查询列表    第③步
FROM 表名        第①步
WHERE 筛选条件     第②步

筛选条件分类:

  • 按条件表达式筛选:=、!=、<>、<=、>=、<、>
  • 按逻辑表达式筛选:&&(and) 、||(or)、!(not)
  • 模糊查询:
    • like:通常搭配通配符(%代表任意多个字符,包含0个字符;_代表任意单个字符)
    • between and :包含临界值
    • in :列表内的值类型必须一致或兼容
    • is null、is not null
# 查询名字中带字母a的员工的所有信息
SELECT * FROM employees
WHERE last_name LIKE '%a%';

# 查询员工名中第二个字符为_的员工名
SELECT last_name FROM employees
WHERE last_name LIKE '_\_%';   # 这里的\起到的是转义的作用

三、排序查询

SELECT 查询列表      第③步
FROM 表名           第①步
[WHERE 筛选条件]     第②步
ORDER BY 排序列表 [DESC/ASC]   第④步

特点:
1.默认asc升序排列
2.order by 支持单个字段、多个字段、表达式、别名、函数
3.order by一般放在查询语句的最后面,LIMIT子句除外

四、常见函数

需要掌握函数名、函数功能以及具有使用方法。

4.1 单行函数

4.1.1 字符函数
  1. length():获取参数值的字节个数
    值得注意的是,该函数获取的是字节的个数;utf8下一个英文字母占1个字节,一个汉字占3个字节;gbk下一个汉字占2个字节
SELECT LENGTH('MySQL');
# 5

# 查看字符集
SHOW VARIABLES LIKE ‘%char%’;

# 若客户端的字符集为utf8
SELECT LENGTH('数据库');
# 9
  1. concat(str1, str2, …) :拼接
# 将员工的first_name和last_name用‘_’进行连接
SELECT CONCAT('first_name','_','last_name') output
FROM employees;
  1. upper()/lower():将字符串中的小/大写全转换成大/小写
SELECT UPPER('mysQL') output;
# MYSQL
SELECT LOWER('MYSQL') output;
# mysql
  1. substr/substring(str,起始索引,截取长度):截取指定索引下的字符
    这里,有一点需要注意一下:索引是从1开始的
SELECT SUBSTR('查询语句知识点汇总',1,4) output;
# 查询语句
SELECT SUBSTR('查询语句知识点汇总',8) output;
# 汇总
  1. instr(str1,str2):返回子串第一次出现的索引,如果找不到,返回0
SELECT INSTR('查询语句知识点汇总','汇总') output;
# 7
  1. trim():去除前后空格,也可去除指定字符
SELECT TRIM('a' from '   数据库  ') output;
# 数据库
SELECT TRIM('a' from 'aaaa数aaaa据库aaaa') output;
# 数aaaa据库
SELECT TRIM('a' from 'aaaa数aaaa据库AAAAA') output;
# 数aaaa据库AAAAA
  1. lpad(str,指定长度,指定字符):用指定的字符实现左填充,使填充后的字符串达到指定长度,rpad同理
SELECT LPAD('数',3,'*') output;
# 数**
SELECT LPAD('数据库',2,'*') output;
# 数据
  1. replace(str,需要被替换的字符串,替换的字符串):替换
SELECT REPLACE('我爱学习','学习','看电视') output;
# 我爱看电视
4.1.2 数学函数
  1. rand():获取随机数,返回0-1之间的小数
SELECT RAND();
# 0.36748154868137234
  1. round():四舍五入
# 保留两位小数
SELECT ROUND(1.567, 2);
# 1.57
  1. ceil():向上取整,返回>=该参数的最小整数
    floor():向下取整,返回<=该参数的最大整数
# 在0-99间随机抽取一个整数
SELECT FLOOR(RAND()* 100);
# 在1-100间随机抽取一个整数
SELECT CEIL(RAND()* 100);
  1. truncate():截断
SELECT TRUNCATE(1.699999,1);
# 1.6
  1. mod(a, b):取余;a为被除数,b为除数。等价于%
    mod(a, b) = a - a/b*b
SELECT mod(10,3);
# 1
SELECT mod(-10,-3);    # -10-(-10)/(-3)*(-3) = -1
# -1
SELECT mod(10,-3);     # 10-(10)/(-3)*(-3) = 1
# 1
4.1.3 日期函数
  1. now(): 返回当前系统的日期+时间
  2. curdate(): 返回当前系统的日期,不包含时间
  3. curtime(): 返回当前时间
SELECT NOW();
# 2020-08-05T08:32:45Z
SELECT CURDATE();
# 2020-08-05<
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值