一天满课,晚上旷了院长的会来完成任务
项目三:超过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;