0%

SQLServer-Day2

594. 超过5名学生的课

有一个courses 表 ,有: student (学生) 和 class (课程)。

请列出所有超过或等于5名学生的课。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
例如,表:

+---------+------------+
| student | class |
+---------+------------+
| A | Math |
| B | English |
| C | Math |
| D | Biology |
| E | Math |
| F | Computer |
| G | Math |
| H | Math |
| I | Math |
+---------+------------+
应该输出:

+---------+
| class |
+---------+
| Math |
+---------+

Note:
学生在每个课中不应被重复计算。

1
2
3
4
SELECT class 
FROM courses
GROUP BY class
HAVING COUNT(DISTINCT student) >= 5
  • SELECT DISTINCT 语句

    在表中,可能会包含重复值。用关键词DISTINCT来返回唯一不同的值

    SELECT DISTINCT 列名称 FROM 表名称

  • WHERE子句

    如需有条件地从表中选取数据,可将WHERE子句添加到SELECT语句

    SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

    下面的运算符可以在WHERE子句中使用:

    = <> > >= <= BETWEEN LIKE(搜索某种模式)

    在某些版本的SQL中,操作符<>可以写为!=

    引号的使用:

    SQL使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,不能使用单引号

  • ORDER BY 语句用于对结果进行排序

    ORDER BY语句用于根据指定的列对结果进行排序

    ORDER BY语句默认按照升序对记录进行排序

    如果希望降序对记录进行排序,可以使用DESC关键字

    例如: Orders表

    Company OrderNumber
    IBM 3532
    W3School 2356
    Apple 4698
    W3School 6953

    例1:以字母顺序显示公司名称

    1
    SELECT Company, OrderNumber FROM Orders ORDER BY Company

    结果:

    Company OrderNumber
    Apple 4698
    IBM 3532
    W3School 6953
    W3School 2356

    例2:以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber)

    1
    SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber

    结果:

    Company OrderNumber
    Apple 4698
    IBM 3532
    W3School 2356
    W3School 6953

    例3:以逆字母顺序显示公司名称

    1
    SELECT Company, OrderNUmber FROM Orders ORDER BY Company DESC

    结果:

    Company OrderNumber
    W3School 6953
    W3School 2356
    IBM 3532
    Apple 4698

    例4:以逆字母顺序显示公司名称,并以数字顺序显示顺序号

    1
    SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

    结果:

    Company OrderNumber
    W3School 2356
    W3School 6953
    IBM 3532
    Apple 4698
  • INSERT INTO语句

    用于向表格中插入新的行

    INSERT INTO 表名称 VALUES(值1, 值2, …)

    我们也可以指定索要插入数据的列

    INSERT INTO table_name (列1, 列2, …) VALUES (值1, 值2, …)

    例:“Persons”表

    LastName FirstName Address City
    Carter Thomas Changan Street Beijing
    1
    INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')

    结果:

    LastName FirstName Address City
    Carter Thomas Changan Street Beijing
    Gates Bill Xuanwumen 10 Beijing

    在指定的列中插入数据:

    1
    INSERT INTO Persons (LastName, Address) VALUES ('Wilsom', 'Champs-Elysees')

    结果:

    LastName FirstName Address City
    Carter Thomas Changan Street Beijing
    Gates Bill Xuanwumen 10 Beijing
    Wilson Champs-Elysees
  • UPDATE 语句

    用于修改表中的数据

    INSERT 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

    例子:Persons

    LastName FirstName Address City
    Gates Bill Xuanwumen 10 Beijing
    Wilson Champs-Elysees

    更新某一行中的一个列:为LastName 是 Wilson的人添加FirstName:

    1
    UPDATE Persons SET FirstName = 'Fred' WHERE LastName = 'Wilson'

    结果:

    LastName FirstName Address City
    Gates Bill Xuanwumen 10 Beijing
    Wilson Fred Champs-Elysees

    更新某一行中的若干列:我们会修改地址(address),并添加城市名称(city):

    1
    UPDATE Persons SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson'

    结果:

    LastName FirstName Address City
    Gates Bill Xuanwumen 10 Beijing
    Wilson Fred Zhongshan 23 Nanjing
  • DELETE 语句

    删除表中的行

    DELETE FROM 表名称 WHERE 列名称 = 值

    删除某行:“Fred Wilson”会被删除。

    1
    DELETE FROM Persons WHERE LastName = 'Wilson'

    结果:

    LastName FirstName Address City
    Gates Bill Xuanwumen 10 Beijing

    删除所有行:可以在不删除表的情况下删除所有行,这意味着表的结构、属性和索引都是完整的:

    DELETE FROM tabel_name

    或者:

    DELETE * FROM tabel_name