mysql SELECT语句

MySQL是一种DBMS数据库管理系统。

检索:

  检索一个或者多个所有列,不同的行(去重)DISTINCT,限制LIMIT使用。

  SELECT a, DISTINCT b FROM table;

  SELECT * FROM table LIMIT 1,5;

排序:

  ORDER BY,可以根据多个列排序,DESC反向排序。

  SELECT a,b FROM table ORDER BY b DESC,c DESC;

过滤:

  WHERE匹配条件,=,!=,<>,<,<=,>,>=,BETWEEN AND,IS NULL判断值是否为空。

  SELECT a,b FROM table WHERE c = 1000;

  SELECT a,b FROM table WHERE c IS NULL;

  SELECT a,b FROM table WHERE c BETWEEN 1 AND 10;

多重过滤:

  AND和OR的用法,多个操作符组合括号用法,IN (start,end)范围操作符,NOT非操作符,可以与IN、BETWEEN、EXISTS组合。

  SELECT a,b FROM table WHERE c = 1000 AND d < 100;

  SELECT a,b FROM table WHERE c IN (1,100);

  SELECT a,b FROM table WHERE c NOT BETWEEN 1 AND 100;

通配符:

  LIKE是WHERE子句,%任意个任意字符,_一个任意字符,区分大小写,NULL不会被匹配。通配符影响性能,尽量少使用,避免开头使用通配符。

  SELECT a,b FROM table WHERE c LIKE 'mn%';

正则表达式:

  不区分大小写,REGEXP与LIKE相似,

  • .  任意1个字符
  • *  0个或任意个字符
  • ?  0个或1个字符
  • +  1个以上字符
  • [abc]  abc任意一个字母
  • {m,n}  可以m个,m个以上,m至n个
  • ^  锚定首部
  • [^abc]  除了abc以外
  • $   锚定尾部

  SELECT a,b FROM table WHERE c REGEXP 'e.s*'; 匹配e后一个任意字符并且0或任意个s

  SELECT a,b FROM table WHERE c REGEXP '^[0-9.]';匹配0-9或小数点开头的字符

计算字段:

  不存在于库内,库内列经过处理产生的数据列,Concat()拼接字段,AS别名。

  SELECT a,b,a*b+1 AS c FROM teble;

  SELECT Concat(RTrim(a),'-->',Trim(b)) AS ab FROM teble;

函数:

 文本函数:

  • Trim() 去空格
  • Upper() 大写
  • Lower() 小写
  • Right() 字符串右边字符
  • Left() 字符串左边字符
  • Length() 字符串长度

 时间函数:

  • AddDate() 增加一个日期
  • AddTime() 增加一个时间
  • CurDate() 返回当前日期
  • CurTime() 返回当前时间
  • Now() 返回当前日期时间
  • Date() 日期时间中的日期
  • Time() 日期时间中的时间
  • Year() 返回日期的年数
  • Month() 返回日期的月数
  • Day() 返回日期的天数
  • Hour() 返回时间的小时数
  • Minute() 返回时间的分钟数
  • second() 返回时间的秒数
  • DateOfWeek() 日期对应的星期数
  • DateDiff() 计算两个日期之差
  • Date_Add() 高度灵活的日期运算函数
  • Date_Format() 返回一个格式化的日期或时间串

 数值函数:

  • Abs() 绝对值
  • Pi() 圆周率
  • Rand() 随机数
  • Mod() 取模
  • Sqrt() 平方根
  • Sin() 正弦
  • Cos() 余弦
  • Tan() 正切

聚集函数:

  AVG(column)平均值,只用于单个列,列名必须作为函数参数给出,忽略列值为NULL的行。

  COUNT(*) 对表中行计数,包含NULL,COUNT(column) 对列中有值行计数,不包含NULL。

  MAX(),MIN()最大最小值,也会返回文本列中的。

  SUM()指定列值的和,忽略列值为NULL的行。

  DISTINCT 去重函数,后面必须使用列名,不能用于计算或表达式。

  SELECT AVG(DISTINCT a) AS avg_a,COUNT(*) FROM table;

  SELECT MAX(num),SUM(item_price*num) AS total_price FROM table WHERE Year(date_time) = 2019 AND Month(date_time) = 1;

分组:

  GROUP BY 创建分组

  HAVING 过滤分组

SELECT子句顺序:  

  SELECT 要返回的列或表达式

  FROM 从中检索数据的表

  WHERE 行级过滤

  GROUP BY 分组说明

  HAVING 组级过滤

  ORDER BY 输出排序顺序

  LIMIT 要检索的行数

猜你喜欢

转载自www.cnblogs.com/hyc-blog/p/10438796.html