SELECT语句
使用SELECT语句进行对数据表查询;语法格式为:
SELECT [ALL | DISTINCT] * | 列名1 [,列名2,…,列名N]
FROM 表名
[ WHERE 条件表达式]
[GROPUP BY 列名 [ASC | DESC] [HAVING 条件表达式] ]
[ORDER BY 列名 [ASC | DESC] , … ]
[LIMIT [OFFSET] 记录数];
语法说明如下:
- SELECT 子句:表示从表中查询指定的列,当使用 ‘*’时u,用于显示表中所有的列;关键字DISTINCT为可选参数,用于消除查询结构集中的重复记录。
- FROM子句:表示查询的数据源,可以是表或视图。
- WHERE子句:用于指定查询筛选条件。
- GROUP BY子句:用于将查询结果按指定的列进行分组;其中HAVING为可选参数,用于对分组后的结果集进行筛选。
- ORDER BY子句:用于对查询结果集按指定的列进行排序。排序方式由参数 ASC或者 DESC控制,其中ASC表示升序排序,DESC则表示降序排序。当不指定怕排序参数时,默认为升序。
- LIMIT子句:用于限制查询结果集的行数。参数OFFSET为偏移量,当OFFSET设置为0时,表示从查询结果的第一条记录开始,如果OFFSET为1时,表示查询结果从第二条记录开始,以此类推;记录数则表示结果集中包含的记录条数。
查看列
1. 查询所有列
在SELECT子句中,使用关键字 “*” 表示选择指定表中所有的列。查询结果集中的排序顺序与原表中列的顺序相同。
查看userss数据库中users数据表的所有信息:
USE userss;
SELECT * FROM users;
2.查询指定的列
使用SELECT 语句选择表中的指定列、列名与列名间用逗号隔开。
查看user数据库中users数据表的编号、姓名。
SELECT uid,uname
FROM users;
3、计算列值
在使用SELECT语句中,可以使用表达式作为查询的结果列。
查询users数据表中的姓名、年龄(现在时间-出生时间)
SELECT uname,year(now())-year(ubirth)
FROM users;
4、为查询结果中的列指定列标题
默认情况下,结果集显示的列标题为查询列的名称,但希望使用其他标题时,可以用AS关键字来更改。
查询users数据表中的姓名、出生时间,将出生时间的标题设为诞生时间。
SELECT uname,ubirth as Born
FROM users;
选择行
1、使用比较运算符和逻辑运算符
- 比较运算符
运算符 | 含义 |
---|---|
= | 等于 |
> | 大于 |
< | 小于 |
>= | 大于小于 |
<= | 小于等于 |
<>,!= | 不等于 |
语法格式:WHERE 表达式1 比较运算符 表达式2
查询users表中uid大于5的用户名;
SELECT uid,uname
FROM users
WHERE uid>5;
- 逻辑运算符
逻辑运算符包括:与(AND)、或(OR)、非(NOT)
语法格式为:WHERE [NOT] 表达式1 逻辑运算符 表达式2
查询users表中年龄为19岁和20岁的男性用户,列出性别、出生时间,用户名:
SELECT uname,ubirth
FROM users
WHERE uage=19 or uage=20 and usex="男"
使用 BETWEEN AND 运算符
WHERE子句中,可以使用BETWEEN AND来限制查询数据的范围,语法格式为:WHERE 表达式 [NOT] BETWEEN 初始值 AND 终止值
查询users表中uid为5到20的用户:
SELECT uname,uid
FROM users
WHERE uid BETWEEN 5 AND 20;
使用IN运算符
IN运算符与BETWEEN AND 运算符类似,用来限制查询数据的范围,语法格式为:WHERE 表达式 [NOT] IN (值1,值2,…值N)
查询users表中出生地为北京,上海,深圳的用户
SELECT uname,gdCity
FROM users
WHERE uCity in ('北京','上海','深圳');
使用LIKE运算符
使用LIKE运算符可以模糊查询,格式如下:
WHERE 列名 [NOT] LIKE ‘字符串’ [ESCAPE ‘转义字符’];
其中与LIKE运算符同时使用的是通配符;ESCAPE的作用则是当用户要查询的数据本身含有通配符时,可以使用该选项对通配符进行转义。
通配符 | 说明 |
---|---|
% | 任意字符 |
_ | 任意单个字符 |
通配符 | 示例 |
% | %S:查询以S结尾的任意字符串,如:ADDRESS;S%:查询以S开头的任意字符串,如Small;%S%:查询包含S的任意字符串,如:SUPER,COURSE |
_ | S:查询以S结尾且长度为2的字符串,如:AS;S:查询以S开通且长度为2的字符串,如SA |
例如:查询users表中uname为“李”开通的用户名、性别。
SELECT uanme,usex
FROM users
WHERE uname LIKE "李%";
REGEXP运算符
使用REGEXP运算符来进行正则表达式匹配,语法格式如下:
WHERE 列名 REGEXP “模式串”;
例如:查询users表中uphone为“5”的用户姓名、手机号码:
SELECT uname,uphone
FROM users
WHERE uphone REGEXP "5$"
使用IS NULL 运算符
IS NULL 运算符实现表达式跟空值比较,语法格式如下:
WHERE 列名 IS [NOT] NULL
例如:查询users表中umoney为空的用户姓名:
SELECT uname
FROM users
WHERE umoney IS NULL
DISTINCT关键字
当查询结果集重复时,可使用DISTINCT关键字去除重复的结果集,
例如:查询users表中umoney大于5000的用户来自那些城市:
SELECT DISTINCT uCity
FROM users
WHERE umoney>5000;