关于Mysql DMl 的练习
题目留在最后面了
example01:创建一个员工信息表:
其中包括字段:姓名, 性别,身份证号,电话,邮箱,年龄,学历,入职时间,部门,职位,薪资
要求:其中id 作为主键,并且自增长,姓名,身份证号,电话,学历,入职时间,部门,职位,薪资 不能为空,
CREATE TABLE IF NOT EXISTS `Employee`(
`id` INT(3) primary key NOT NULL AUTO_INCREMENT COMMENT '序号',
`name` VARCHAR(30) NOT NULL COMMENT '姓名',
`sex` VARCHAR(2) NOT NULL COMMENT '性别',
`IDCard` bigint(18) NOT NULL COMMENT '身份证号',
`phone` bigint(11) NOT NULL COMMENT '电话',
`email` VARCHAR(50) NULL COMMENT '邮箱',
`age` int(3) NULL COMMENT '年龄',
`degree` VARCHAR(50) NULL COMMENT '学历',
`day` DATE NOT NULL COMMENT '入职时间',
`part` VARCHAR(50) NOT NUll COMMENT '部门',
`posts` VARCHAR(50) NOT NULL COMMENT '职位',
`salary` FLOAT NOT NULL COMMENT '薪资')ENGINE=INNODB DEFAULT CHARSET=utf8;
example02:初始化插入5条数据(单条插入)批量插入5条数据
INSERT INTO Employee (name,sex,IDCard,phone,email,age,degree,day,part,posts,salary) values('钟寻雪','男',630105199601061242,15898934324,'13892775901@189.com', 26,'硕士','2021-01-22','开发部','工程师',8600);
INSERT INTO Employee (name,sex,IDCard,phone,email,age,degree,day,part,posts,salary)values('阎夜山','女',510105199101258985,13148938583,'htime11@qq.com', 31,'本科','2019-11-10','运维部','工程师',8500);
INSERT INTO Employee (name,sex,IDCard,phone,email,age,degree,day,part,posts,salary) values('魏偲偲','女', 695681198804217845,15694839248,'liuminsi@163.com', 34,'本科','2019-01-12','市场部','需求工程师',8000);
INSERT INTO Employee (name,sex,IDCard,phone,email,age,degree,day,part,posts,salary) values('何问枫','男', 125844199101258205,15143243244,'wiu545@qq.com', 26,'硕士','2020-11-15','测试部','测试工程师',8100);
INSERT INTO Employee (name,sex,IDCard,phone,email,age,degree,day,part,posts,salary) values('孟芷茹','女', 610522200202206012,18329479628,'32132@sina.com', 21,'大专','2019-05-05','开发部','开发工程师',8000);
//因为有一个身份证尾号是x临时把身份证IDCard
数据类型换为字符串
ALTER TABLE Employee MODIFY IDCard VARCHAR(50);
INSERT INTO Employee (name,sex,IDCard,phone,email,age,degree,day,part,posts,salary)values('邓静香','女', '610322199907095684',15091575703,'965qq@163.com', 29,'博士','2022-04-16','开发部','开发工程师',9000),('冯晓露','女', '61048120010905512X',15209136318,'1519158he@baidu.com', 21,'大专','2022-09-22','测试部','测试工程师',8000),('萧梦露','女', '610111198907183319',13289341129,'songsize@163.com', 34,'博士','2018-07-16','市场部','市场经理',9000),('石代双','男', '610403200101022016',18609143274,'yufanming@qq.com', 30,'本科','2020-05-11','测试部','测试工程师',8300),('刘津文','男', '610726200110120014',13038913092,'894324@163.com', 19,'大专','2021-08-26','运维部','运维工程师',8000);
example03:测试部每人薪资加500
UPDATE Employee SET salary=salary + 500 WHERE part = "测试部";
example04:修改 学历为 “硕士”并且 原工资小于 9000 的员工 薪资+300
UPDATE Employee SET salary=salary + 300 WHERE degree = "硕士" AND salary < 9000;
exampe05:将测试部的员工全部并入开发部
UPDATE Employee SET part="开发部" WHERE part = "测试部";
example06:将2020年之前入职的 员工 薪资 + 100
UPDATE Employee SET salary=salary + 100 WHERE day < "2020-01-01";
example07:将所有员工的邮箱统一换成 手机号@saas.com
UPDATE Employee SET email= concat(phone,'@saas.com');
example8:添加列 “家庭住址”,不能为空,默认值为 “陕西省西安市雁塔区软件新城公寓”
alter table Employee add Home varchar(30) not null default '陕西省西安市雁塔区软件新城公寓';
alter table Employee modify column Home VARCHAR(30) comment '家庭住址';
example09:将年龄大于30岁的女博士,的家庭住址修改到“陕西省西安市曲江公寓”
UPDATE Employee SET Home= "陕西省西安市曲江公寓" WHERE age > 30 AND sex = "女" AND degree ="博士";
example10:将男员工 性别改为 “男_01”,将女员工性别改为"女_02"
这里因为sex的长度限制,所以把sex长度限制从2改为4
alter table Employee modify column sex varchar(4);
UPDATE Employee SET sex= concat(sex,'_01')WHERE sex = "男";
UPDATE Employee SET sex= concat(sex,'_02')WHERE sex = "女";
example11:添加字段"生日",从员工的身份证号中提取生日,存入生日字段
ALTER TABLE Employee ADD birthday DATE comment '生日';
update Employee set birthday=MID(IDCard,7,8);
example12:删除 运维部门 所有员工
DELETE FROM Employee WHERE part = '运维部';
example13: 开启事务,删除 学历为博士的所有员工, 然后回滚删除操作。
START TRANSACTION;
DELETE FROM Employee WHERE degree = '博士';
ROLLBACK;
题目
-
创建一个员工信息表:
1.其中包括字段:姓名, 性别,身份证号,电话,邮箱,年龄,学历,入职时间,部门,职位,薪资 要求:其中id 作为主键,并且自增长,姓名,身份证号,电话,学历,入职时间,部门,职位,薪资 不能为空,
2.初始化插入5条数据(单条插入),批量插入5条数据钟寻雪,男,630105199601061242,15898934324,13892775901@189.com, 26,硕士,2021-01-22,开发部,工程师,8600 '阎夜山','女',510105199101258985,13148938583,'htime11@qq.com',31,'本科','2019-11-10','运维部','工程师',8500 '魏偲偲','女', 695681198804217845,15694839248,'liuminsi@163.com',34,'本科','2019-01-12','市场部','需求工程师',8000 '何问枫','男', 125844199101258205,15143243244,'wiu545@qq.com',26,'硕士','2020-11-15','测试部','测试工程师',8100 '孟芷茹','女', 610522200202206012,18329479628,'32132@sina.com',21,'大专','2019-05-05','开发部','开发工程 师',8000 '邓静香','女', 610322199907095684,15091575703,'965qq@163.com',29,'博士','2022-04-16','开发部','开发工程师',9000
‘冯晓露’,‘女’, 61048120010905512X,15209136318,‘1519158he@baidu.com’,21,‘大专’,‘2022-09-22’,‘测试部’,‘测试工程师’,8000
‘萧梦露’,‘女’, 610111198907183319,13289341129,‘songsize@163.com’,34,‘博士’,‘2018-07-16’,‘市场部’,‘市场经理’,9000
‘石代双’,‘男’, 610403200101022016,18609143274,‘yufanming@qq.com’,30,‘本科’,‘2020-05-11’,‘测试部’,‘测试工程师’,8300
‘刘津文’,‘男’, 610726200110120014,13038913092,‘894324@163.com’,19,‘大专’,‘2021-08-26’,‘运维部’,‘运维工程师’,80003.修改 ”测试部“ 在原薪资基础之上 + 500
4.修改 学历为 “硕士”并且 原工资小于 9000 的员工 薪资+300
5.将测试部的员工全部并入开发部
6.将2020年之前入职的 员工 薪资 + 100
7.将所有员工的邮箱统一换成 手机号@saas.com
8.添加列 “家庭住址”,不能为空,默认值为 “陕西省西安市雁塔区软件新城公寓”
9.将年龄大于30岁的女博士,的家庭住址修改到“陕西省西安市曲江公寓”
10.将男员工 性别改为 “男_01”,将女员工性别改为"女_02"
11.添加字段"生日",从员工的身份证号中提取生日,存入生日字段
10.删除 运维部门 所有员工
- 开启事务,删除 学历为博士的所有员工, 然后回滚删除操作。