MySQL(二)查询语句

查询语句

目录:
• 基本的SELECT语句
• 过滤和排序数据
• 分组函数和分组查询
• 多表查询
• 分页查询


基本预备知识:

注意:

• SQL 语言大小写不敏感。
• SQL 可以写在一行或者多行
• 关键字不能被缩写也不能分行
• 各子句一般要分行写。
• 使用缩进提高语句的可读性。

列的别名

紧跟列名,也可以在列名和别名之间加入关键字‘AS’,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写。
MySQL(二)查询语句

字符串

日期和字符只能在单引号中出现。

显示表结构

使用 DESCRIBE 命令,表示表结构
如:DESCRIBE employees;

比较运算

一般有:
=(判断等于)、>、>=、<、<=、<>或!=(判断不等于)
【赋值使用:=符号】
其他比较运算:
MySQL(二)查询语句

1)BETWEEN…AND…

MySQL(二)查询语句

2)IN(set)

MySQL(二)查询语句

3)LIKE

  • 使用 LIKE 运算选择类似的值
  • 选择条件可以包含字符或数字:
    – % 代表零个或多个字符(任意个字符)。
    – _ 代表一个字符。
  • ‘%’和‘-’可以同时使用。
    MySQL(二)查询语句
    筛选出第二个字符是’o’的字符串:
    MySQL(二)查询语句

4)IS NULL

MySQL(二)查询语句

逻辑运算

1)AND 逻辑并

MySQL(二)查询语句

2)OR 逻辑或

MySQL(二)查询语句

3)NOT 逻辑否

MySQL(二)查询语句


1.基本SELECT语句

语法:
SELECT *|{[DISTINCT] column|expression [alias],…}
FROM table;
• SELECT 标识选择哪些列。
• FROM 标识从哪个表中选择。

*选择全部列
MySQL(二)查询语句
选择特定的列
MySQL(二)查询语句

2.过滤和排序语句

• 使用WHERE子句来过滤,紧随FROM子句。
例如:MySQL(二)查询语句
• 使用 ORDER BY 子句排序
– ASC(ascend): 升序
– DESC(descend): 降序
ORDER BY 子句在SELECT语句的结尾。
例如:
MySQL(二)查询语句
MySQL(二)查询语句
可以使用多个列排序

3.分组函数和分组查询

分组函数作用于一组数据,并对一组数据返回一个值。
• AVG()
• COUNT()
COUNT(expr) 返回expr不为空的记录总数。
• MAX()
• MIN()
• SUM()
语法:
MySQL(二)查询语句

GROUP BY 子句语法

  • 可以使用GROUP BY子句将表中的数据分成若干组。

在SELECT 列表中所有未包含在组函数中的列都应该包含在 GROUP BY 子句中:
MySQL(二)查询语句
包含在 GROUP BY 子句中的列不必包含在SELECT 列表中:
MySQL(二)查询语句

过滤分组: HAVING 子句

条件:

  • 行已经被分组。
  • 使用了组函数。
  • 满足HAVING 子句中条件的分组将被显示。

语法:MySQL(二)查询语句
例如:MySQL(二)查询语句

4.多表查询

  • MySQL连接
    MySQL(二)查询语句
  • 等值连接
    MySQL(二)查询语句
  • 使用ON子句创建连接
    • 自然连接中是以具有相同名字的列为连接条件的。
    • 可以使用 ON 子句指定额外的连接条件。
    • 这个连接条件是与其它条件分开的。
    • ON 子句使语句具有更高的易读性。

Join连接
• 分类:
– 内连接 [inner] join on
– 外连接
• 左外连接 left [outer] join on
• 右外连接 right [outer] join on
MySQL(二)查询语句

5.分页查询

语法:select * from foo limit offset,rows
换算后即select * from table limit (start-1)*pageSize,pageSize
其中start是页码,pageSize是每页显示的条数。

例如:select * from foo limit 100,200
100是指偏移,200是指查询条数