一天满课,晚上旷了院长的会来完成任务
项目三:超过5名学生的课(难度:简单) 创建如下所示的courses 表 ,有: student (学生) 和 class (课程)。
+---------+------------+| student | class |+---------+------------+| A | Math || B | English || C | Math || D | Biology || E | Math || F | Computer || G | Math || H | Math || I | Math || A | Math |+---------+------------+
编写一个 SQL 查询,列出所有超过或等于5名学生的课。
应该输出:+---------+| class |+---------+| Math |+---------+Note:学生在每个课中不应被重复计算。
1.建表
CREATE TABLE courses ( STUDENT CHAR(2) NOT NULL, CLASS VARCHAR(255) NOT NULL );
2.插入数据
INSERT INTO courses VALUES('A','Math');INSERT INTO courses VALUES('B','English');INSERT INTO courses VALUES('C','Math');INSERT INTO courses VALUES('D','Biology');INSERT INTO courses VALUES('E','Math');INSERT INTO courses VALUES('F','Computer');INSERT INTO courses VALUES('G','Math');INSERT INTO courses VALUES('H','Math');INSERT INTO courses VALUES('I','Math');INSERT INTO courses VALUES('A','Math');
3.实现查询
SELECT class FROM ( SELECT DISTINCT * FROM courses ) as c GROUP BY c.class HAVING COUNT(class)>=5 ;
项目四:交换工资(难度:简单) 创建一个 salary表,如下所示,有m=男性 和 f=女性的值 。
| id | name | sex | salary ||----|------|-----|--------|| 1 | A | m | 2500 || 2 | B | f | 1500 || 3 | C | m | 5500 || 4 | D | f | 500 |交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求使用一个更新查询,并且没有中间临时表。运行你所编写的查询语句之后,将会得到以下表:| id | name | sex | salary ||----|------|-----|--------|| 1 | A | f | 2500 || 2 | B | m | 1500 || 3 | C | f | 5500 || 4 | D | m | 500 |
建表:
CREATE TABLE Salary_TBL ( ID INT PRIMARY KEY NOT NULL, NAME VARCHAR(255) NOT NULL, SEX VARCHAR(6) NOT NULL CHECK (SEX IN ('M', 'F')), SALARY INT NOT NULL );
插入数据
INSERT INTO Salary_TBL VALUES('1','A','M','2500');INSERT INTO Salary_TBL VALUES('2','B','F','1500');INSERT INTO Salary_TBL VALUES('3','C','M','5500');INSERT INTO Salary_TBL VALUES('4','D','F','500');
数据查询
UPDATE Salary_TBL SET sex=IF(sex='F','M','F');select * from Salary_TBL;