#第一题
#编号(id) 姓名(name) 科目(subject) 分数(score)
CREATE TABLE score(
id INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(20),
`subject` VARCHAR(30),
score INT
);
#添加数据
INSERT INTO score(`name`,`subject`,`score`)
VALUES
('张三','数学',90),
('张三','语文',50),
('张三','地理',40),
('李四','语文',55),
('李四','政治',45),
('王五','政治',30),
('李四','数学',80),
('王五','语文',70)
# 1.查询两门及两门以上不及格的学生姓名
SELECT COUNT(NAME), NAME FROM score WHERE score<60 GROUP BY NAME HAVING COUNT(NAME)>=2;
# 2 查询学生平均分
SELECT AVG(score) FROM score;
# 3查询姓名是张三的学生 成绩和
SELECT SUM(score) FROM score WHERE NAME='张三';
# 4将学生信息按照 分数倒序
SELECT * FROM score ORDER BY score DESC;
# 5.获取学生信息中 分数最低的学生姓名和分数最高的学生姓名
SELECT * FROM score ORDER BY score DESC LIMIT 0,1;
SELECT * FROM score ORDER BY score ASC LIMIT 0,1;
# 6.查询两门及两门以上不及格同学的平均分。
SELECT COUNT(NAME), NAME FROM score WHERE score<60 GROUP BY NAME HAVING COUNT(NAME)>=2;
SELECT COUNT(NAME) ,AVG(score), NAME FROM score WHERE NAME IN('张三','李四') GROUP BY NAME;
# 第二题
CREATE TABLE USER(
`name` VARCHAR(20) NOT NULL,
`tel` VARCHAR(11),
`content` VARCHAR(50),
`date` DATETIME
)
INSERT INTO USER VALUES('张三','13333663366','大专毕业','2006-10-11');
UPDATE USER SET `date`=NOW() WHERE NAME='张三';
# 当前日期 curdate();
# 当前时间 curTime();
# 当前日期和时间 NOW();
SELECT * FROM USER;
# 第三题
# 3.1.找出奖金高于工资的雇员
SELECT * FROM emp WHERE comm>sal;
# 3.2 找出奖金高于工资60%的雇员
SELECT * FROM emp WHERE comm>(sal*0.6);
# 3.3 找出部门10中所有经理和部门20中所有店员的信息
SELECT * FROM emp WHERE (deptno=10 AND job='MANAGER') OR (deptno=20 AND job='CLERK');
# 3.4 薪资大于或等于2000的所有员工的信息。
SELECT * FROM emp WHERE sal>=2000;
# 3.5 查询没有奖金或者奖金低于100的员工信息
SELECT * FROM emp WHERE comm IS NULL OR comm<100;
# 3.6 查询姓名不带”R”的员工姓名
SELECT * FROM emp WHERE ename NOT LIKE '%R%';
# 3.7显示员工的姓名和入职时间,根据入职时间,将最老的员工排放在最前面。
SELECT ename ,hiredate FROM emp ORDER BY hiredate ASC;
# 3.8显示所有员工的姓名、工作和工资,按照工作的降序排序,若工作相同则按工资升序排序。
SELECT ename,job,sal FROM emp ORDER BY job DESC, sal ASC;