数据库基础——集合查询(上)

129 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第14天,点击查看活动详情

集合查询

  • 集合操作的种类
    • 并操作UNION
    • 交操作INTERSECT
    • 差操作EXCEPT
  • 参加集合操作的各查询结果的列数必须相同;对应项的数据类型也必须兼容。

[例]查询信息科学(IS)系的学生和年龄不大于19岁的学生

解:方法一:

image.png 方法二:

image.png

  • UNION:将多个查询结果合并起来时,系统自动去掉重复元组。
  • UNION ALL:将多个查询结果合并起来时,保留重复元组

[例] 查询信息科学(IS)系同时年龄不大于19岁的学生

解:

image.png

image.png

[例]查询信息科学(IS)系的学生与年龄不大于19岁的学生的差集。 解:

image.png

image.png

数据插入

两种插入数据方式

  1. 插入元组
  2. 插入子查询结果

可以一次插入一个或多个元组

插入元组

语句格式

INSERT [INTO] <表名>[(<属性列1>[,<属性列2 >…)] VALUES (<常量1> [,<常量2>] … )

功能 : 将一个新元组插入指定表中

例子

例1.将新生记录(9521105,陈冬,男,信息系,18岁)插入到Student表中。

解:INSERT INTO Student VALUES (‘9521105’, ‘陈冬’, '男', 18, '信息系')

注意

  1. 必须用逗号将各个数据分开
  2. 字符型数据要用单引号括起来。
  3. INTO子句中没有指定列名,则新插入的记录必须在每个属性列上均有值(可以为NULL),且VALUES子句中值的排列顺序要和表中各属性列的排列顺序一致。
  4. 插入数据不能破坏表上已定义的完整性规则。

例2、插入一行的部分数据值

解: INSERT INTO SC(Sno, Cno) VALUES('9521105', 'c01')

注意:

  1. 将VALUES子句中的值按照INTO子句中指定列名的顺序插入到表中
  2. 对于INTO子句中没有出现的列,则新插入的记录在这些列上将取空值,如上例的Grade即赋空值。
  3. 但在表定义时有NOT NULL约束的属性列不能取空值。

查询看着理论其实很枯燥无聊,但是有意思的地方就在于真正自己手打出代码的时候,这是一个将理论与实践结合的过程,真的很有用,大家可以多敲几遍试试。