查 询

本文介绍了SQL查询的基本操作,包括条件查询的比较和逻辑运算符,常见的聚合函数如COUNT、MAX、MIN等,以及如何进行分组、排序和分页查询。提供了具体的代码实现和练习题,帮助学习者掌握数据库查询技能。
摘要由CSDN通过智能技术生成

目录

条件查询

条件

示例

练习

代码实现

常见的聚合函数

练习

代码实现

分组查询

练习

代码实现

排序查询

练习

代码实现

分页查询

练习

代码实现


条件查询

#语法
select 字段列表 from 表名 WHERE 条件列表;

条件

比较运算符说明

>

大于
>=大于或等于
<小于
<=小于或等于
=等于
!=不等于
BETWEEW ... AND...在某个范围之内(含最大和最小)
IN(...)在in之后的列表中的值,多选一
LIKE 占位符模糊查询(_匹配单个字符,%匹配任意个字符)
IS NULL是null
逻辑运算符说明
AND或&&并且
OR或||或者
NOT或!

示例

#查询id为3的数据
select * from student where id =3;

练习

创建数据库,名称为EmployeeDB:

  1. 在EmployeeDB数据库中,创建员工表,名称为t_Employee,表结构如下

列名

数据类型

说明

备注

EmpID

int

主键,自增

员工ID

EmpName

varchar(20)

员工姓名

EmpIdCode

varchar(20)

省份证号码

EmpAge

Int

员工年龄

EmpSex

varchar(2)

员工性别

EmpPosition

varchar(20)

员工岗位

EmpJoinTime

datetime

员工入职时间

EmpSalary

double

员工薪资

EmpAddress

Varchar(200)

员工家庭住址

增、改:将如下数据插入到表中:

员工名

省份证号码

员工年龄

员工性别

员工岗位

员工入职时间

员工薪资

家庭住址

EmpName

EmpIdCode

EmpAge

EmpSex

EmpPosition

EmpJoinTime

EmpSalary

EmpAddress

阿娇

430000199208082222

25

java工程师

2009-10-20

6000

长沙市星光大道

程冠希

432222198908082232

28

系统架构师

2008-1-20

10000

上海市

小沈阳

432222198807063333

29

C#高级工程师

2008-2-28

15000

长沙市长沙县

张学友

432222197506061135

42

工会主席

2007-4-5

8000

长沙市五一大道

阿sa

430000199308082242

24

财务

2007-4-5

5000

长沙市雷锋大道

张小龙

434450199308085555

24

C#高级工程师

2009-4-5

12000

武汉市武功路

曹格

432222198907173338

28

数据库专家(SQL)

2009-2-28

17000

杭州市马云路

  1. 将所有的员工年龄加上1岁
  2. 将阿娇的薪资改为5000
  3. 将职位为系统架构师的年龄加1岁
  4. 将张学友的的入职时间改为2010-01-01
  5. 将员工名为“张小龙”和“曹格”的员工薪资减1000元
  6. 将年龄在24岁和30岁之间的员工的工资加500
  7. 将员工岗位为“高级工程师”的薪资减100元

查询:

a.查询全部员工信息

        b.查询全部员工的姓名,年龄

        c.查询所有女士的信息

        d.查询所有年龄在25-30岁(包括25,30岁)的员工信息  

删除:

  1. 删除年龄大于35岁的员工
  2. 删除工资在6000到10000的员工信息

代码实现

#创建EmployeeDB表
create table EmployeeDB(
     EmpID int auto_increment primary key comment "员工ID",
     EmpName varchar(20) comment "员工姓名",
     EmpIdCode	varchar(20) comment "身份证号码",
     EmpAge	Int comment "员工年龄",
     EmpSex	varchar(2) comment "员工性别",
     EmpPosition varchar(20) comment "员工岗位",
     EmpJoinTime datetime comment "员工入职时间",
     EmpSalary	double comment "员工薪资",
     EmpAddress	Varchar(200) comment "员工家庭住址"
);

#添加数据
insert into EmployeeDB values (1,"阿娇",430000199208082222	,25,"女","java工程师","2009-10-20",6000,"长沙市星光大道"),
                              (2,"程冠希",432222198908082232,28,"男","系统架构师","2008-1-20",10000,"上海市"),
                              (3,"小沈阳",432222198807063333,29,"男","C#高级工程师","2008-2-28",15000,"长沙市长沙县"),
                              (4,"张学友",432222197506061135,42,"男","工会主席","2007-4-5",8000,"长沙市五一大道"),
                              (5,"阿sa",430000199308082242,24,"女","财务","2007-4-5",5000,"长沙市雷锋大道"),
                              (6,"张小龙",434450199308085555,24,"男","C#高级工程师",	"2009-4-5",12000,"武汉市武功路"),
                              (7,"曹格",432222198907173338,28,"男","数据库专家(SQL)","2009-2-28",17000,"杭州市马云路");
#修改
update EmployeeDB set EmpAge = EmpAge + 1;
update EmployeeDB set EmpSalary = 5000 where EmpName = "阿娇";
update EmployeeDB set EmpAge = EmpAge +1 where EmpPosition = "系统架构师";
update EmployeeDB set EmpJoinTime = "2010-01-01" where EmpName = "张学友";
update EmployeeDB set EmpSalary = EmpSalary - 1000 where EmpName = "张小龙" and EmpName = "曹格";
update EmployeeDB set EmpSalary = EmpSalary + 500 where EmpAge between 24 and 30;
update EmployeeDB set EmpSalary = EmpSalary + 100 where EmpPosition = "高级工程师";
#查询
select * from EmployeeDB;
select EmpName, EmpAge from EmployeeDB;
select * from EmployeeDB where EmpSex = "女";
select * from EmployeeDB where EmpAge between 25 and 30;
delete from EmployeeDB where EmpAge > 35;
delete from EmployeeDB where EmpSalary between 6000 and 10000;

常见的聚合函数

函数说明
count统计数量
max最大值
min最小值
avg平均值
sum求和
//语法
select 聚合函数(字段列表) from 表名;

练习

根据前面的表

  1. 查询所有员工中薪资高于平均薪资的员工信息
  2. 查询所有员工中薪资介于平均薪资和最高薪资之间的学生信息

代码实现

select * from EmployeeDB where EmpSalary >(select avg(EmpSalary) from EmployeeDB);
select * from EmployeeDB where EmpSalary between (select avg(EmpSalary) from EmployeeDB) and (select max(EmpSalary) from EmployeeDB);

分组查询

#where是分组之前进行的过滤,不满足where条件的,不参加分组
#having是分组之后对结果进行过滤
select 字段名列表 from 表名 where 查询条件 group by 分组的字段名 HVAING 分组后的过滤条件;

练习

  1. 根据性别分组,统计男性员工和女性员工的数量

代码实现

select EmpSex, count(*) from EmployeeDB group by EmpSex;

排序查询

select 字段列表 from 表名 order by 排序的列名 ASC或DESC;

ASC:升序

DESC:降序

练习

根据员工入职时间,进行升序排序

代码实现

select * from EmployeeDB order by EmpJoinTime asc ;

分页查询

#起始索引从零开始,起始索引=(查询页码 - 1) * 每页显示记录条
select 字段列表 from 表名 limit 起始索引, 查询记录条;

练习

查询第一页的员工信息,每一页展示四条记录

代码实现

select * from EmployeeDB limit 0,4;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ikun8848

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值