MySQL 学习一

SELECT 子句

  • MySQL的where子句—>区分大小写
SELECT * from 表名 WHERE BINARY 字段名='输入值';
MySQL的WHERE子句的字符串比较是不区分大小
关键字BINARY来设定WHERE子句的字符串比较是区分大小写的==。
  • MySQL的LIKE模糊查询
通配符---%
SELECT * FROM user WHERE name LIKE '%三%'
假如就name建立了索引,这句sql将不会利用索引,而会进行全表扫描
test%:所有以test起头的值/  
%test%:匹配任何包含test的值/  
te%st:所有以te开头以st结尾的值
PS:%通配符不可以匹配null

SELECT * FROM user WHERE name LIKE '三%'
SQL语句使用了索引,搜索的效率大大的提高了

SELECT * FROM user WHERE name LIKE '%三%' AND '%五%'
假如我们需要查询带有"三"和"五"的数据,可以使用AND

SELECT * FROM user WHERE name LIKE '[张李王]三'
将找出“张三”、“李三”、“王三”(而不是“张李王三”)

SELECT * FROM user WHERE name LIKE '老[^1-4]'
将排除“老1”到“老4”,寻找“老5”、“老6”、……
  • MySQL的REGRXP 正则表达式
SELECT * FROM user WHERE age REGEXP '23|22';
查找age是23和22的数据记录
  • MySQL的排序ORDER BY 子句
SELECT * from 表名 ORDER BY 字段名 ASC  ---》升序

SELECT * from 表名 ORDER BY 字段名 DESC  ---》降序
  • MySQL的GROUP BY 分组
SELECT *,COUNT(a.age) FROM user AS a GROUP BY a.age
按年龄分组,COUNT(a.id)会统计每个age出现的次数
  • MySQL的HAVING过滤分组
SELECT age,COUNT(*) FROM user GROUP BY age HAVING COUNT(*) >= 2;
返回age分组后age出现次数大于等于2的age记录

  • having和where的区别:
    • where在数据分组前进行过滤,having在数据分组后进行过滤;where排除的行不包括在分组中(这可能会改变计算值,从而影响having子句中基于这些值过滤掉的分组)

  • MySQL DISTINCT 去重
SELECT DISTINCT age FROM user
显示去重后的年龄有那些
  • MySQL的聚合函数
函数说明
AVG()返回某列的平均值
COUNT()返回某列的行数
MAX()返回某列的最大值
MIN()返回某列的最小值
SUM()返回某列的总和
1.AVG()
SELECT AVG(age) from user 
返回user表的age的平均值

2.COUNT()
SELECT COUNT(age) from user 
返回user表age的行数,不记录null
SELECT COUNT(*) from user 
返回user表中记录的行数,包括null值

3.MAX()
SELECT MAX(age) from user 
返回user表的age的最大值

4.MIN()
SELECT MIN(age) from user 
返回user表的age的最小值

5.SUM()
SELECT SUM(age) from user 
返回user表的age的总和
  • MySQL的LIMIT
SELECT * FROM user ORDER BY age LIMIT 4;
显示age最大的四条记录
  • SELECT子句的顺序
    • SELECT(选择列,需要显示的字段)
    • FROM (来自那张表)
    • WHERE(行级过滤)
    • GROUP BY(分组说明)
    • HAVING(分组过滤)
    • ORDER BY(排序输出)
    • LIMIT(要显示的行数,记录)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值