单表查询指的是在一张表中进行数据的查询,它的执行顺序是“from->where->group by->having->distinct->order by->limit->select”。
在数据库操作中,单表查询就是在一张表中进行数据的查询,详细它的语法是:
select distinct 字段1,字段2... from 表名 where 分组之前的过滤条件 group by 分组字段 having 分组之后的过滤条件 order by 排序字段 limit 显示的条<mark style="color:transparent">本文来源gaodaimacom搞#^代%!码&网*</mark>数;
语法是样的一个顺序,但是它的执行顺序就不是从语法的顺序来执行了,而是这样的一个顺序。
from—>where—>group by—>having–>distinct—>order by—>limit—>select
至于为什么这样的一个执行顺序,我就不说了,也没这个自信说清楚。如果小白只要记得是这个执行顺序就可以了,如果非要刨根问底,可以去google一下。
在了解单表查询前,我们首先来建一张雇员表:
emp表: 员工id id int 姓名 emp_name varchar 性别 sex enum 年龄 age int 入职日期 hire_date date 岗位 post varchar 职位描述 post_comment varchar 薪水 salary double 办公室 office int 部门编号 depart_id int
建表:
create table emp( id int not null unique auto_increment, name varchar(20) not null, sex enum('male','female') not null default 'male', age int(3) unsigned not null default 28, hire_date date not null, post varchar(50), post_comment varchar(100), salary double(15,2), office int, depart_id int );
插入数据:
insert into emp(name,sex,age,hire_date,post,salary,office,depart_id) values ('niange','male',23,'20170301','manager',15000,401,1), ('monicx','male',23,'20150302','teacher',16000,401,1), ('wupeiqi','male',25,'20130305','teacher',8300,401,1), ('yuanhao','male',34,'20140701','teacher',3500,401,1), ('anny','female',48,'20150311','sale',3000.13,402,2), ('monke','female',38,'20101101','sale',2000.35,402,2), ('sandy','female',18,'20110312','sale',1000.37,402,2), ('chermy','female',18,'20130311','operation',19000,403,3), ('bailes','male',18,'20150411','operation',18000,403,3), ('omg','female',18,'20140512','operation',17000,403,3);
where条件过滤
where字句中可以使用:
1. 比较运算符:>、<、>=、 <=、 <>、!=。
2. between 1 and 5 值在1到5之间。
3. in(1,3,8) 值是1或3或8。
4. like 'monicx%'
%表示任意多字符
_表示一个字符
5. 逻辑运算符:在多个条件直接可以使用逻辑运算符 and、or、not。
6、正则表达式
查找员工id在2到5之间的名字: