第三章-SQL

71 阅读5分钟

第三章-SQL

1.SQL语言是非过程化的结构化查询语言,简单易学

2.SQL语言的操作对象可以是一个或多个集合

3.SQL主要功能分成四部分

  1. 数据定义:(DDL)用于定义SQL模式/数据库、基本表、视图和索引的创建和撤消操作。
  2. 数据操纵:(DML)数据操纵分成数据查询和数据更新两类。数据更新又分成插入、删除、和修改三种操作。
  3. 数据控制:包括对基本表和视图的授权,完整性规则的描述,事务控制等内容。
  4. 嵌入式SQL的使用规定:涉及到SQL语句嵌入在宿主语言程序中使用的规则。

4.SQL的数据定义语句

CREATE、 DROP、ALTER语句属于数据定义

  • 创建:CREATE TABLE、CREATE VIEW、CREATE INDEX
  • 删除:DROP TABLE、DROP VIEW、DROP INDEX
  • 修改:ALTER TABLE

5.SQL语言的两种使用方式

graph LR
SQL的使用方式-->交互式SQL
交互式SQL-->在终端交互方式下使用
SQL的使用方式-->嵌入式SQL
嵌入式SQL-->嵌入在高级语言的程序中使用

6.SQL中, “SALARY IN (1000,2000)”语义是

SALARY = 1000 OR SALARY = 2000

7.在SQL中,下列涉及空值的操作,不正确的是

AGE=NULL

SQL中允许属性值为空,用关键字NULL表示空值。测试"年龄为空值"的条件可用"AGE IS NULL",测试"年龄为非空值"的条件可用"AGE IS NOT NULL"或者"NOT(AGE IS NULL"。

8.SEX CHAR (2)不能存储 "男"

9.内联接、外联接、交叉联接和完全联接

解析

当关系R和S自然联接时,能够把R和S原该舍弃的元组放到结果关系中的操作是(全)外联接

10.聚合函数中不忽略空值(NULL)的是

COUNT(*)

在聚合函数中遇到空值时,除了COUNT(*)外,都跳过空值而去处理非空值。但是,count(字段名) 则只计算该字段不为null的行数。

11.允许在嵌入的SQL语句中引用宿主语言的程序变量,在引用时

这些变量前必须加符号":"

12.视图的作用

视图是虚拟表,属于外模式,使用视图并不能加快查询语句的执行速度,但可以简化查询语句的编写;当然,也不可以在视图上定义新的基本表。

查询是从指定的表或视图中提取满足条件的记录,然后按照想得到的输出类型定向输出查询结果,以扩展名为qbr的文本文件保存在磁盘上,查询所用的表可以是数据库表,也可以是自由表;视图是一个定制的虚拟逻辑表,视图中只存放相应的数据逻辑关系,并不保存表的记录内容,但可以在视图中改变记录的值,然后将更新记录返回到源表,视图是根据表定义的,视图是数据库中的一个特有功能,所以,视图只能在数据库中创建。

将对视图的查询转换为对相关基本表的查询

graph LR
视图的作用-->视图能简化用户的操作
视图的作用-->视图能使用户以多种角度看待同一数据
视图的作用-->视图能够对机密数据提供安全保护

13.索引

索引是对表中一个或多个列的值进行排序的结构。索引提供指针以指向存储在表中指定列的数据值,然后根据指定的排列次序排列这些指针,索引文件是由这些指针组成的文件。表使用索引的方式是:通过搜索索引找到特定的值,然后根据指针在基本表中查找包含该值的行。创建索引是加快表的查询速度的有效手段。由于在表的数据发生变化时,所有当时打开的索引文件都会随着数据的改变而自动改变指针的顺序 (自动更新),因此使用索引一般会降低更新的速度。索引文件和表的.DBF文件分别存储,索引只改变原表的逻辑顺序,并没有改变物理顺序,因此索引被删除,并不会影响原表中的记录顺序。

索引是建立在列上的一种数据对象,它对表中的数据提供一种逻辑顺序,当在数据库表中搜索某一行时,可以通过使用索引来找到它的物理位置。索引一旦建立后就交由DBMS 管理,不需人工干预,所以索引是动态的,每当数据库表更新,相应的索引也随之更新,为此,过多的索引列和频繁的数据更新都会消耗系统资源,增加系统开销,从而降低索引应有的作用。

14.UNIQUE约束

  • UNIQUE约束用于保证列或列组合的值唯一性;
  • UNIQUE约束允许出现空值,但空值只能有一个,不能有多个;
  • UNIQUE约束可以定义多个;
  • 系统为定义了UNIQUE约束的那些列建立唯一索引;

15.子查询

  • 子查询可以向其外部查询提供检索条件的条件值
  • 子查询可以嵌套多层
  • 子查询的结果是一个集合
  • 子查询不一定总是先于外部查询的

16.ORDER BY

  • ORDER BY子句可以对多个列进行排序
  • SELECT语句中,ORDER BY只能在所有其他子句之后作为最后一个子句出现
  • 在视图中不能使用ORDER BY子句
  • 子查询语句中不能使用ORDER BY子句的

17.聚集

  • 聚集将具有一个或多个公共列,并经常一起使用的相关表物理地聚集存储在一起
  • 聚集中相同的值只存储一次
  • 聚集加快了多个表连接操作速度
  • 必须首先删除所有聚集表,才能删除聚集