1. 查询所有列的数据
用*代表所有列。
select * from 表名
2. 选择列
select 字段1,字段2,字段3… from 表名
3. 选择行
- 等值
select … from 表名 where 字段 = 条件
- 如查询salaries表中salary超过10000的信息
select *
from salaries
where salary > 10000;
- IN:检查一个值是否在一组值中
- 如查询表employees中姓名为kangkang,jack的员工。
select *
from employees
where name in ('kangkang','jack')
- between … and: 检查一个值是否在一个范围内,常用于数字和日期。
- 如查询salaries表中salary在8000到10000的信息。
select *
from salaries
where salary between 8000 and 10000;
- like简单模式匹配:’_‘来精确匹配一个字符,’%'来匹配任意数量的字符。
- 如查询employees表中姓常的员工。
select *
from employees
where name like '常%';
- 查询姓赵并且名字共2个字的员工。
select *
from employees
where name like '赵_';
- 正则表达式
可以使用rlike或regexp函数在where子句中使用正则表达式。
- 如找出名字以字母J开头的员工信息
select *
from employees
where name rlike '^J';
- 找出姓名以薇结尾的人员信息
select *
from employees
where name regexp '薇$';
常用正则表达式表
序号 | 表达式 | 描述 | 序号 | 表达式 | 描述 |
---|---|---|---|---|---|
1 | * | 零次或重复多次 | 11 | [0-9] | 数字0到9 |
2 | + | 一个或多个重复 | 12 | ^…$ | 开始和结束 |
3 | ? | 可选字符 | 13 | \d | 任何数字 |
4 | . | 任意字符 | 14 | \D | 任何非数字字符 |
5 | . | 区间 | 15 | \s | 任何空格 |
6 | ^ | 以······开始 | 16 | \S | 任何非空白字符 |
7 | $ | 以······结束 | 17 | \w | 任何字母数字字符 |
8 | [abc] | abc三者任选其一 | 18 | \W | 任何非字母数字字符 |
9 | [^abc] | 非a,非b,亦非c | 19 | {m} | m次重复 |
10 | [a-z] | 字符a到z,即任意英文字母 | 20 | {m,n} | m到n次重复 |
4. 限定结果limit
在查询的结尾使用limit来实现该效果。
- 如只显示10条查询信息
select first_name,second_name
from employees
where salary > 10000
limit 100;
5. 对结果排序order by
- 如查询薪水最高的前10位员工的工号和姓名
select emp_no,name
from salaries
order by salary desc -- desc表示降序,asc表示升序,默认为升序
limit 10
6. 去重distinct
- 如对员工工号进行去重查询
select distinct emp_no
from employees