MySQL那点事之查询数据

SELECT 属性列表

       FROM [WHERE 条件表达式1]

       [GROUP BY 属性名1 [HAVING条件表达式]]

       [ORDER BY 属性名2 [ASC|DESC]];

默认情况下是ASC(升序)。

带IN 关键字的查询:

[NOT] IN (元素1,元素2,...,元素n)

带BETWEEN AND 的范围查询:

[NOT] BETWEEN 取值1 AND 取值2

带LIKE的字符匹配查询:

[NOT] LIKE '字符串'

查询空值:

IS [NOT] NULL

带AND的多条件查询:

条件表达式1 AND 条件表达式2 [...AND 条件表达式n]

带OR的多条件查询

条件表达式1 OR 条件表达式2 [...OR 条件表达式n]

查询结果不重复:

SELECT DISTINCT 属性名

对查询结果排序:

ORDER BY 属性名 [ASC | DESC]

分组查询:

GROUP BY 属性名 [HAVING条件表达式][WITH ROLLUP]

GROUP BY关键字与GROUP_CONCAT()函数一起使用时,每个分组中指定字段值都显示出来。

GROUP BY关键字通常与集合函数一起使用。

用LIMIT限制查询结果的数量:

1.不指定初始位置

LIMIT 记录数

2.指定初始位置

LIMIT 初始位置,记录数

集合函数:

COUNT()用来统计记录的条数。

SUM()函数求和,只适合于数值类型。

AVG()函数求平均值。

MAX()不仅仅适合于数值类型,也适用于字符类型。

MIN()同上。

连接查询:

1、内连接查询(常用)

SELECT 属性列表1(表1的), 属性列表2(表2的) FROM 表1 ,表2 [WHERE ...] 

2、外连接查询

SELECT 属性名列表 FROM 表名1 LEFT|RIGHT JOIN 表名2 ON 表名1.属性名=表名2.属性名2;

  (1)左连接查询

  (2)右连接查询

子查询:

    带IN关键字的子查询:

    SELECT * FROM 表1 WHERE 属性名 IN (SELECT 属性名 FROM 表2);

    带比较运算符的子查询:

    SELECT * FROM 表1 WHERE 属性名>=(SELECT 属性名 FROM 表2);

    带EXISTS关键字的子查询

    SELECT * FROM 表1 WHERE EXISTS(SELECT 属性名 FROM 表2);

    使用EXISTS关键字时,内层查询语句不返回查询的记录,而是返回一个真假值。

    true时外层查询语句进行查询,否则不查询。

    带ANY关键字的子查询:

    SELECT * FROM 表1 WHERE 属性名>=ANY(SELECT 属性名 FROM 表2);

    ANY关键字表示满足其中任一条件。

    带ALL关键字的子查询:

    SELECT * FROM 表1 WHERE 属性名>=ALL(SELECT 属性名 FROM 表2);

    ALL关键字表示满足所有条件。

合并查询结果:

SELECT 语句1 UNION|UNION ALL

SELECT 语句2 UNION|UNION ALL...

SELECT 语句n

使用UNION关键字时,数据库系统会将所有的查询结果合并在一起,然后去除掉相同的记录。

而UNION ALL关键字则只是简单的合并到一起。

为表和字段取别名:

1、为表取别名:

表名 表的别名

SELECT * FROM 表名 表的别名;

SELECT * FROM department d where d.d_id=1001;

2、为字段取别名:

属性名 [AS] 别名

SELECT d_id AS department_id,d_name AS department_name FROM department;

使用正则表达式查询:

属性名 REGEXP '匹配方式'

^:匹配以特定字符或字符串开头的记录;

$:匹配以特定字符或字符串结尾的记录;

.:可替代字符串中的任意一个字符;

[]:将需要查询字符组成一个字符集,只要记录中包含[]中的任意字符,该记录将会被查询出来;

[^字符集合]:匹配指定字符以外的字符;

'字符串|字符串':匹配指定字符串;

*:匹配多个该符号之前的字符,至少表示0个字符;

+:匹配多个该符号之前的字符,至少表示一个字符;

_: 代表单个字符;

%:代表任意长度的字符;

“字符串{M}”:字符串连续出现M次;

“字符串{M,N}”:字符串连续出现至少M次,至多N次。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值