MySQL(三)基本的SELECT语句
1. SELECT …
SELECT 1; #得到计算结果,没有任何子句
SELECT 9/2;
2. SELECT … FROM …
- 语法:
SELECT 标识选择哪些列
FROM 标识从哪个表中选择
- 选择xxx表全部列:
SELECT *
FROM xxx表;
一般情况下,除非需要使用表中所有的字段数据,最好不要使用通配符‘*’。使用通配符虽然可以节省输入查询语句的时间,但是获取不需要的列数据通常会降低查询和所使用的应用程序的效率。通配符的优势是,当不知道所需要的列的名称时,可以通过通配符来获取所有列。
在生产环境下,不推荐直接使用SELECT *
进行查询。
- 选择特定的列
SELECT 字段1,字段2……
FROM xxx表
MySQL中的SQL语句是不区分大小写的,因此SELECT和select的作用是相同的,但是,许多开发人员习惯将关键字大写、数据列和表名小写,更容易后期的阅读和维护。
3. 列的别名
- 重命名一个列
- 便于计算
- 紧跟列名,也可以在列名和别名之间加入关键字AS,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写。
- AS关键字可以省略
- 建议别名简短,见名知意
# 举例
SELECT 字段1 AS 别名1, 字段2 别名2
FROM xxx表
4. 去除重复行
默认情况下,查询会返回全部行,包括重复行,我们需要使用DISTINCT
关键字进行去重操作。
# 例如:
SELECT DISTINCT 字段1
FROM xxx表;
这里有两点需要注意:
DISTINCT
关键字需要放在所有字段名的前面,放在字段名后面会报错。- 当
DISTINCT
后面跟多个字段名时,则是对后面所有字段名的组合进行去重,保证查询后的结果每行唯一。
5. 空值参与运算
- 所有运算符或列值遇到null值,运算的结果都为null
- 在MySQL中,空值不等于空字符串或数值0,一个空字符串的长度是0,而一个空值的长度是空,而且,在MySQL中空值是占用空间的。
- 可以使用
IFNULL(字段1,替换值)
语句将字段1列中NULL替换为替换值
进行数值运算。
6. 着重号
- 我们需要保证表名和字段名没有和保留字、数据库系统或常用方法冲突。如果相同,需要在SQL语句中使用一对 `(着重号)引起来。
7. 查询常数
SELECT查询还可以对常数进行查询,目的是增加一列常数列,使得查询结果每一条数据都增加一个常数属性,这个常数属性不是来自数据库表中的。
8. 显示表结构
使用DESCRIBE
或DESC
命令,表示表结构。
DESCRIBE xxx表
或
DESC xxx表
9. WHERE过滤语句
使用WHERE语句,将不满足条件的行过滤掉,WHERE子句需紧随FROM子句。
- 语法
SELECT 字段1,字段2 FROM xxx表 WHERE 过滤条件