一、MySQL练习
一.创建表:
创建员工表employee,字段如下:
id(员工编号)
name(员工名字)
gender(员工性别)
salary(员工薪资)
二.插入数据
1,‘张三’,‘男’,2000
2,‘李四’,‘男’,1000
3,‘王五’,‘女’,4000
三.修改表数据
3.1 将所有员工薪水修改为5000元
3.2将姓名为张三的员工薪水修改为3000元
3.3将姓名为李四的员工薪水修改为4000元,gener改为女
3.4 将王五的薪水在原有基础上增加1000元
操作
一、创建表
CREATE TABLE employee (id INT COMMENT '员工编号',name VARCHAR(255) COMMENT '员工名字',gender CHAR(2) DEFAULT '男' COMMENT '员工性别',salary INT COMMENT '员工薪资'
);
2、插入数据
mysql> insert into employee values (1,'张三','男',2000),(2,'李四','男'1000),(3,'王五','女',4000);
3、修改数据
3.1 将所有员工薪水修改为5000元
mysql> update employee set salary = 5000;
3.2将姓名为张三的员工薪水修改为3000元
mysql> update employee set salary = 3000 where name='张三';
3.3将姓名为李四的员工薪水修改为4000元,gener改为女
mysql> update employee set salary = 4000,gender='女' where name='李 四';
3.4 将王五的薪水在原有基础上增加1000元
mysql> update employee set salary = salary+1000 where name='王五';
二、单表查询练习
素材:
CREATE TABLE `emp` (`empno` int(4) NOT NULL,`ename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`job` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`mgr` int(4) NULL DEFAULT NULL,`hiredate` date NOT NULL,`sai` int(255) NOT NULL,`comm` int(255) NULL DEFAULT NULL,`deptno` int(2) NOT NULL,PRIMARY KEY (`empno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;INSERT INTO `emp` VALUES (1001, '甘宁', '文员', 1013, '2000-12-17', 8000, NULL, 20);
INSERT INTO `emp` VALUES (1002, '黛绮丝', '销售员', 1006, '2001-02-20', 16000, 3000, 30);
INSERT INTO `emp` VALUES (1003, '殷天正', '销售员', 1006, '2001-02-22', 12500, 5000, 30);
INSERT INTO `emp` VALUES (1004, '刘备', '经理', 1009, '2001-04-02', 29750, NULL, 20);
INSERT INTO `emp` VALUES (1005, '谢逊', '销售员', 1006, '2001-09-28', 12500, 14000, 30);
INSERT INTO `emp` VALUES (1006, '关羽', '经理', 1009, '2001-05-01', 28500, NULL, 30);
INSERT INTO `emp` VALUES (1007, '张飞', '经理', 1009, '2001-09-01', 24500, NULL, 10);
INSERT INTO `emp` VALUES (1008, '诸葛亮', '分析师', 1004, '2007-04-19', 30000, NULL, 20);
INSERT INTO `emp` VALUES (1009, '曾阿牛', '董事长', NULL, '2001-11-17', 50000, NULL, 10);
INSERT INTO `emp` VALUES (1010, '韦一笑', '销售员', 1006, '2001-09-08', 15000, 0, 30);
INSERT INTO `emp` VALUES (1011, '周泰', '文员', 1006, '2007-05-23', 11000, NULL, 20);
INSERT INTO `emp` VALUES (1012, '程普', '文员', 1006, '2001-12-03', 9500, NULL, 30);
INSERT INTO `emp` VALUES (1013, '庞统', '分析师', 1004, '2001-12-03', 30000, NULL, 20);
INSERT INTO `emp` VALUES (1014, '黄盖', '文员', 1007, '2002-01-23', 13000, NULL, 10);
INSERT INTO `emp` VALUES (1015, '张三', '保洁员', 1001, '2013-05-01', 80000, 50000, 50);
– 1. 查询出部门编号为30的所有员工
mysql> select * from emp where deptno = 30;
– 2. 所有销售员的姓名、编号和部门编号。
mysql> select ename,empno,deptno from emp;
– 3. 找出奖金高于工资的员工。
mysql> select * from emp where comm > sai;
– 4. 找出奖金高于工资60%的员工。
mysql> select * from emp where comm > (sai*0.6);
– 5. 找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料。
mysql> select * from emp where (deptno=10 and job='经理') or (deptno=30 and job='销售员');
– 6. 找出部门编号为10中所有经理,部门编号为20中所有销售员,还有即不是经理又不是销售员但其工资大或等于20000的所有员工详细资料。
mysql> select * from emp where (deptno=10 and job='经理') or (deptno=20 and job='销售员') or (job not in ('经理','销售员') and sai >= 20000 );
– 7. 无奖金或奖金低于1000的员工。
mysql> select * from emp where comm is null or comm < 1000;
– 8. 查询名字由三个字组成的员工。
mysql> SELECT * FROM emp WHERE CHAR_LENGTH(ename) = 3;
– 9.查询2000年入职的员工。
mysql> select * from emp where year(hiredate)=2000;
– 10. 查询所有员工详细信息,用编号升序排序
mysql> select * from emp order by empno asc;
– 11. 查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序
mysql> select * from emp order by sai desc,date(hiredate) asc;
– 12.查询每个部门的平均工资
mysql> select deptno,avg(sai) from emp group by deptno;
– 13.查询每个部门的雇员数量
mysql> select deptno,count(*) from emp group by deptno;
– 14.查询每种工作的最高工资、最低工资、人数
mysql> select job,max(sai),min(sai),count(*) from emp group by job;