第二阶段(三)——MySQL练习题(答案参考MySQL)


1.数据库及表操作
1.1.创建、删除、查看数据库

– 01.查看mysql服务器中所有数据库

– 02.进入某一数据库(进入数据库后,才能操作库中的表和表记录)
– 语法:USE 库名;

– 查看已进入的库

– 03.查看当前数据库中的所有表
– 先进入某一个库,再查看当前库中的所有表

– 04.删除mydb1库
– 语法:DROP DATABASE 库名;

– 思考:当删除的库不存在时,如何避免错误产生?

– 05.重新创建mydb1库,指定编码为utf8
– 语法:CREATE DATABASE 库名 CHARSET 编码;

– 需要注意的是,mysql中不支持横杠(-),所以utf-8要写成utf8;

– 如果不存在则创建mydb1;

– 06.查看建库时的语句(并验证数据库库使用的编码)
– 语法:SHOW CREATE DATABASE 库名;


1.2.创建、删除、查看表

– 07.进入mydb1库,删除stu学生表(如果存在)
– 语法:DROP TABLE 表名;

– 08.创建stu学生表(编号[数值类型]、姓名、性别、出生年月、考试成绩[浮点型]),建表的语法:
CREATE TABLE 表名(
列名 数据类型,
列名 数据类型,

列名 数据类型
);
创建stu表的SQL语句如下:

– 09.查看stu学生表结构
– 语法:desc 表名


2.新增、更新、删除表记录

– 10.往学生表(stu)中插入记录(数据)
– 语法:INSERT INTO 表名(列名1,列名2,列名3…) VALUES(值1,值2,值3…);
– 如果是在cmd中执行插入记录的语句,先 set names gbk; 再插入记录!

– 查询学生表中的所有记录

– 11.查询stu表所有学生的信息
– 语法:SELECT 列名 | * FROM 表名

– 12.修改stu表中所有学生的成绩,加10分特长分

– 修改语法: UPDATE 表名 SET 列=值,列=值,列=值…[WHERE子句];\

– 13.修改stu表中编号为1的学生成绩,将成绩改为83分。

提示:where子句用于对记录进行筛选过滤,保留符合条件的记录,将不符合条件的记录剔除。

– 14.删除stu表中所有的记录

– 删除记录语法: DELETE FROM 表名 [where子句]

– 仅删除符合条件的


3.查询表记录
3.1.基础查询
– 准备数据: 以下练习将使用db10库中的表及表记录,请先进入db10数据库!!

– 15.查询emp表中的所有员工,显示姓名,薪资,奖金

– 16.查询emp表中的所有部门和职位

3.2.WHERE子句查询
– 17.查询emp表中【薪资大于3000】的所有员工,显示员工姓名、薪资

– 18.查询emp表中【总薪资(薪资+奖金)大于3500】的所有员工,显示员工姓名、总薪资

– ifnull(列名, 值)函数: 判断指定的列是否包含null值,如果有null值,用第二个值替换null值

– 注意查看上面查询结果中的表头,如何将表头中的 sal+bonus 修改为 “总薪资”
– 使用as可以为表头指定别名(另外as可以省略)

– 19.查询emp表中【薪资在3000和4500之间】的员工,显示员工姓名和薪资

– 20.查询emp表中【薪资为 1400、1600、1800】的员工,显示员工姓名和薪资

– 21.查询薪资不为1400、1600、1800的员工,显示员工姓名和薪资

– 22.(自己完成) 查询emp表中薪资大于4000和薪资小于2000的员工,显示员工姓名、薪资。

– 23.(自己完成) 查询emp表中薪资大于3000并且奖金小于600的员工,显示员工姓名、薪资、奖金。

– 24.查询没有部门的员工(即部门列为null值)

– 思考:如何查询有部门的员工(即部门列不为null值)

3.3.模糊查询
– 25.查询emp表中姓名中以"刘"字开头的员工,显示员工姓名。

– 26.查询emp表中姓名中包含"涛"字的员工,显示员工姓名。

– 27.查询emp表中姓名以"刘"开头,并且姓名为两个字的员工,显示员工姓名。

3.4.多行函数查询
– 28.统计emp表中薪资大于3000的员工个数

– 29.求emp表中的最高薪资

– 30.统计emp表中所有员工的薪资总和(不包含奖金)

– 31.统计emp表员工的平均薪资(不包含奖金)

3.5.分组查询
语法:SELECT 列 | * FROM 表名 [WHERE子句] GROUP BY 列;
– 32.对emp表,按照部门对员工进行分组,查看分组后效果。

– 33.对emp表按照职位进行分组,并统计每个职位的人数,显示职位和对应人数

– 34.对emp表按照部门进行分组,求每个部门的最高薪资(不包含奖金),显示部门名称和最高薪资

3.6.排序查询
语法:SELECT 列名 FROM 表名 ORDER BY 列名 [ASC|DESC]
ASC(默认)升序,即从低到高;DESC 降序,即从高到低。
– 35.对emp表中所有员工的薪资进行升序(从低到高)排序,显示员工姓名、薪资。

– 36.对emp表中所有员工的奖金进行降序(从高到低)排序,显示员工姓名、奖金。

3.7.分页查询
在mysql中,通过limit进行分页查询,查询公式为:
limit (页码-1)*每页显示记录数, 每页显示记录数
– 37.查询emp表中的所有记录,分页显示:每页显示3条记录,返回所有页的数据

– 38.求emp表中薪资最高的前3名员工的信息,显示姓名和薪资

3.8.其他函数
– 39.查询emp表中所有【在1993和1995年之间出生】的员工,显示姓名、出生日期。

– 40.查询emp表中本月过生日的所有员工

– 41.查询emp表中员工的姓名和薪资(薪资格式为: xxx(元) )

– 补充练习:查询emp表中员工的姓名和薪资(薪资格式为: xxx/元 )


4.多表查询
4.1.连接查询
– 准备数据: 以下练习将使用db30库中的表及表记录,请先进入db30数据库!!!

– 42.查询部门和部门对应的员工信息


4.2.连接查询

– 43.查询【所有部门】及部门对应的员工,如果某个部门下没有员工,员工显示为null

【左外连接查询】:可以将左边表中的所有记录都查询出来,右边表只显示和左边相对应的数据,如果左边表中某些记录在右边没有对应的数据,右边显示为null即可。

– 44.查询【所有员工】及员工所属部门,如果某个员工没有所属部门,部门显示为null

【右外连接查询】:可以将右边表中的所有记录都查询出来,左边表只显示和右边相对应的数据,如果右边表中某些记录在左边没有对应的数据,可以显示为null。

4.3.子查询练习
– 准备数据:以下练习将使用db40库中的表及表记录,请先进入db40数据库!!!

– 45.列出薪资比’王海涛’的薪资高的所有员工,显示姓名、薪资

– 46.列出与’刘沛霞’从事相同职位的所有员工,显示姓名、职位。

– 47.列出薪资比’大数据部’部门(已知部门编号为30)所有员工薪资都高的员工信息,显示员工姓名、薪资和部门名称。


4.4.多表查询练习

– 48.列出在’培优部’任职的员工,假定不知道’培优部’的部门编号,显示部门名称,员工名称。

– 49.(自查询)列出所有员工及其直接上级,显示员工姓名、上级编号,上级姓名

– 50.列出最低薪资大于1500的各种职位,显示职位和该职位的最低薪资

– 51.列出在每个部门就职的员工数量、平均工资。显示部门编号、员工数量,平均薪资。

– 52.查出至少有一个员工的部门,显示部门编号、部门名称、部门位置、部门人数。

– 53.列出受雇日期早于直接上级的所有员工,显示员工编号、员工姓名、部门名称。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值