MySQL 数据操作 查询之单表查询

因为篇幅过大,所以分为两篇来讲查询操作 这篇为单表查询

在我们进行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 条件
  1. 关系运算符和逻辑运算符

关系运算符 >,>=,<,<=,!=(<>),= 单条件查询
逻辑运算符 and(&&),or(||),not(!) 多条件查询
这些东西就是见名知意

select ename
 from employee
 where job='staff';
 
select ename
 from employee
 where job='staff' &&  sal>4000.00;
  1. 模糊查询(每一个都带有相反的查询)

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语句,对数据库进行操作

**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值