mysql day 01

MySQL作业:

一、建库、建表,插入记录、修改记录、删除记录

01、删除mydb2库(如果存在)
drop database if exists mydb2;

02、再次创建mydb2库,指定编码为utf8,并选择mydb2库
create database mydb2 charset utf8;
use mydb2;
# desc 不能用于数据库操作 只能用于表格操作

03、在mydb2库中,创建员工(emp)表,并添加如下列:
编号(整型、主键、自增)
姓名、性别(字符串类型)
出生年月(日期类型)
职位(字符串类型)
薪资、奖金(小数类型)
create table emp(
id int PRIMARY KEY AUTO_INCREMENT,
name varchar(50) ,
gender varchar(50),
brithday date,
job varchar(20),
sal double,
bonus double
);

04、往员工(emp)表中插入3条记录

先运行这个指令: SET SESSION sql_mode=NO_ZERO_IN_DATE; -- 规定 date 输入 格式
 insert into emp values( 1,'张三','男',2021-04-08,'讲师',3000,10000);

insert into emp value(2,‘陈子枢’,‘男’,2021-04-08,‘讲师’,2000,1000);

05、将员工的薪资在原有基础上增加1500(mysql不支持+=)
update emp set sal = sal +1500;

06、删除emp表中所有员工的记录
delect * from emp;

二、单表查询

!!下列练习使用db10库中数据,选择db10库,如果没有先创建(参考sql脚本)
07、列出emp表中的所有员工,显示所有列
select * from emp;
08、列出emp表中的所有的男员工,显示姓名、性别
select name , gender from emp where gender = ‘男’;

09、列出emp表中的’培优部’的所有员工,显示部门名称, 员工姓名
select id,name ,dept from emp where dept = “培优部”

10、列出emp表中员工的奖金(bonus),仅显示奖金,并剔除重复的值

-- dustunct 去重函数 ifnull(判断是否为空 为空则将0赋值给bonus)
select distinct ifnull(bonus,0) from emp;

11、列出emp表中所有奖金高于500的员工,显示姓名、奖金、职位
select name ,bonus,job from emp where bonus > 500;

12、列出emp表中薪资在1000~2000之间的所有员工,显示姓名,薪资
select name ,(sal+ifnull(bonus,0)) as “薪资” from emp where (sal+ifnull(bonus,0)) between 1000 and 2000;

13、列出emp表中奖金为300、500、700的所有员工,显示姓名、奖金
select name ,bonus from emp where bonus =300|| bonus= 500 || bonus = 700;

14、问答题:什么是 数据库服务器、数据库、表、表记录?
1.什么是数据库 :
按照数据结构来组织管理的工具

表记录:数据库中的数据是安装类型存放的,一类数据往往存储在一张表中	

15、问答题:char和varchar的区别?
varchar 变长 char 定长

char 表示定长,长度固定
varchar表示变长,即长度可变。当所插入的字符串超出它们的长度时,
视情况来处理,如果是严格模式,则会拒绝插入并提示错误信息,如果是	宽松模式,则会截取然后插入。	



区别之二,存储的容量不同

char长度固定,不足使用空格填充,最多容纳2000个字符,char(11)存储abc,占11位。查询速度极快但浪费空间

? varchar变长字符串,最多容纳4000个字符,varchar(11)存储abc,只占3位。查询稍慢,但节省空间。Oracle为varchar2

16、问答题:什么是主键约束(特点)、什么是唯一约束、什么是非空约束?

17、列出emp表中姓名以’王’开头的员工,显示员工姓名

18、列出emp表中姓名以’涛’结尾的员工,显示员工姓名

19、统计emp表中的所有的男员工的人数。

20、统计每个职位的人数, 显示职位和对应人数

21、统计emp表中所有员工的总薪资(包含奖金)

22、统计emp表中所有员工奖金的平均值

23、按照员工年龄从小到大排序,显示姓名、出生年月、总薪资(薪资+奖金)

24、查询下个月过生日的所有员工,显示员工姓名和出生日期

25、求1995年入职的员工信息。

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


三、子查询、多表查询

!!下列练习使用db40库中数据,选择db40库,如果没有先创建(参考sql脚本)
27、(子查询)列出emp表中高于平均工资的所有员工,显示姓名、薪资

28、(子查询)查询emp表中比’齐雷’薪资高的所有员工,显示姓名、薪资

29、(子查询)查询emp表中和’齐雷’从事相同职位的所有员工,显示姓名、职位

30、(子查询)查询emp表中’陈子枢’所有下属员工,假设不知道陈子枢的编号(1011)
– 查询陈子枢的编号
– 查询上级编号为 1011 的员工

31、(左外连接)列出所有员工和员工对应的部门,如果员工没有对应的部门, 显示为null

32、(关联查询)列出在’就业部’任职的员工,假定不知道’就业部’的部门编号,显示部门名称和员工姓名


33、(自连接查询)列出上级及上级对应的下属员工,显示上级编号(id),上级姓名、员工姓名、上级编号(topid)

34、(分组、聚合函数)列出最低薪资大于1500的各种职位及从事此职位的员工人数。
– 先查询出各种职位的最低薪资
– 提示:对分组后的记录筛选过滤请使用having替换where,并且having书写在最后
– 再查询出最低薪资>1500的职位
– 最后查询出每个职位对应的员工人数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值