因为篇幅过大,所以分为两篇来讲查询操作 这篇为单表查询
在我们进行SQL语句操作前,一定先要有数据才行,所以先建立一个表,在插入数据
为了避免麻烦,就不再重新建立一个数据库了
使用的数据库是这里的students
建立表:
use students;
create table employee(
empno int,
ename varchar(10),
job varchar(10),
sal double(10,2),
deptno int
);
插入数据
insert into employee() values(1,'smith','staff',5000.00,10),
(2,'allen','staff',4800.00,10),
(3,'ward','staff',3000.00,20),
(11,'jones','supervisor',6000.00,50),
(12,'blake','supervisor',7800.00,50),
(13,'scoot','supervisor',6500.00,50)
,(4,'king','staff',4500.00,10),
(5,'ford','staff',3800.00,20);
单表查询
- 简单数据记录查询
*** 简单数据查询***
指定字段
select ename from employee;
所有字段
select empno,ename,job,sal,deptno from employee;
或者
select * from employee
*** 避免重复(distinct)**
select distinct job from employee;
一般情况下,distinct后面只跟一个字段
- 带有四则运算的查询
select ename,sal*1.2 from employee;
- 给查询的对象,起一个别名(as或者空格)
select empno as e,ename en
from employee;
起别名是因为所选的字段长度过长,不方便书写(在Oracle中不能使用as)
条件数据记录查询
select field1,field2..fieldn
from table
where 条件
- 关系运算符和逻辑运算符
关系运算符 >,>=,<,<=,!=(<>),= 单条件查询
逻辑运算符 and(&&),or(||),not(!) 多条件查询
这些东西就是见名知意
select ename
from employee
where job='staff';
select ename
from employee
where job='staff' && sal>4000.00;
- 模糊查询(每一个都带有相反的查询)
between and
select ename
from employee
where sal between 4000 and 5000;
select ename
from employee
where sal>=4000 and sal<=5000;
这两个是一样的between and 包含两个端点的值
is null
select ename
from employee
where job is null;
由于我的这个表中没有空值,所以查询结果为null
select ename
from employee
where job is not null;
这个是查询不为空值的
in
select ename
from employee
where deptno in(10,20);
select ename
from employee
where deptno=10 or deptno=20;
效果是一样的
in 里面也可以放null
like
select ename
from employee
where ename like 'a%';
'-'匹配单个字符
'%'匹配任意长度个字符
排序数据记录查询(order by)
select *
from employee
order by sal asc|desc;
select *
from employee
order by sal asc,empno desc;
可以按照多个字段进行排序,用逗号隔开
asc 升序(也是默认的)
desc 降序(需要声明)
聚合函数
count() 统计表中记录的条数
max()字段的最大值
min()字段的最小值
avg()平均值
sum()总和
avg(),sum() 只能用于对数字操作
count()
统计所有的行,包括null
select count(*) number -- 这里的number是count(*)的别名
from employee;
统计ename的行,不包括空值
select count(ename) number
from employee;
avg()
select avg(sal) avg
from employee;
sum()
select sum(sal) sum
from employee;
max()
select max(sal) max
from employee;
min()
select min(sal) min
from employee;
分组数据记录查询
使用分组时最好与聚合函数一起使用
也最好只对一个字段进行分组
select count(*),deptno from employee
group by deptno;
分组后,可以使用having字句,对分组后的数据进行限制
select count(*),deptno from employee
group by deptno
having count(*)>2;
限制数据记录查询数量
默认从零开始
limit x,y
解释一下:x为你想从哪里开始,y为你想要查多少条数据
select * from employee
limit 0,2; -- limit 2
limit还可以与order by结合使用
select * from employee
order by sal asc limit 0,5;
**
总结:
在对数据库进行查询操作时,不外乎就这几种常见的操作,实际上理解起来并不难
只是在实际操作中,练的比较少。
相信通过不断的练习,能够熟练的使用SQL语句,对数据库进行操作
**