第三章:关系数据库标准语言SQL
1、SQL语言的特点
1、综合统一。 2、高度非过程化。
3、面向集合的操作方式。 4、以同一种语法结构提供多种使用方式
5、语言简洁、易学易用。
2、SQL语言的数据查询,数据定义,数据操纵功能,这些分别有哪些SQL语句?
1、数据定义:定义数据库中的基本对象、模式(架构)定义、表定义、视图和索引
(1)模式:
定义模式:CREATE SCHEMA <模式名> AUTHORIZATION <用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]
例:CREATE SCHEMA TEST AUTHORIZATION ZHANG
CREATE TABLE TAB1(COL1 SMALLINT, COL2 INT,COL3 CHAR(20),COL4 NUMERIC(10,3),COL5 DECIMAL(5,2));
为用户ZHANG创建了一个模式TEST,并在其中定义了一个表TAB1。
删除模式:DROP SCHEMA <模式名> <CASCADE|RESTRICT>
CASCADE(级联):删除模式的同时把该模式中所有的数据库对象全部删除
RESTRICT(限制); 没有任何下属的对象时 才能执行。
(2)表:
定义基本表:CREATE TABLE <表名>
(<列名> <数据类型>[ <列级完整性约束条件> ]
[,<列名> <数据类型>[ <列级完整性约束条件>] ] …
[,<表级完整性约束条件> ] );
列级完整性约束--涉及到该表的一个属性
-
- NOT NULL :非空值约束
- UNIQUE:唯一性(单值约束)约束
- PRIMARY KEY:主码约束
- DEFAULT <默认值>:默认(缺省)约束
- Check < (逻辑表达式) >:核查约束,定义校验条件
- NOT NULL :非空值约束
- UNIQUE:唯一性(单值约束)约束
- PRIMARY KEY:主码约束
- DEFAULT <默认值>:默认(缺省)约束
- Check < (逻辑表达式) >:核查约束,定义校验条件
表级完整性约束--涉及到该表的一个或多个属性。
-
- UNIQUE(属性列列表) :限定各列取值唯一
- PRIMARY KEY (属性列列表) :指定主码
- FOREIGN KEY (属性列列表) REFERENCES <表名> [(属性列列表)]
- Check(<逻辑表达式>) :检查约束
- PRIMARY KEY与 UNIQUE的区别?
例:建立“学生”表Student,学号是主码,姓名取值唯一
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY,/*主码*/
Sname CHAR(20) UNIQUE, /* Sname取唯一值*/
Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20));
修改基本表:ALTER TABLE <表名>
[ ADD <新列名> <数据类型> [ 完整性约束 ] ]
[ DROP <列名> |<完整性约束名> ]
[ ALTER COLUMN<列名> <数据类型> ];
(3)索引:
建立索引的目的:加快查询速度。
DBA 或 表的属主(即建立表的人)(显式);DBMS一般会自动建立以下约束列上的索引(隐式)PRIMARY KEY UNIQUE 建立索引。
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON <表名> (<列名>[<次序>][,<列名>[<次序>] ]…);
用<次序>指定索引值的排列次序,升序:ASC,降序:DESC。默认:ASC。
UNIQUE表明此索引的每一个索引值只对应唯一的数据记录
CLUSTER表示要建立的索引是聚簇索引。索引项顺序与表中记录的物理顺序一致。
聚簇索引 CLUSTER
什么是基本表?什么是视图?两者的区别和联系是什么?为何要引入视图?
基本表:是独立存在的表。在SQL中,一个关系对应于一个表。
视图:是从一个或多个基本表所导出的表。视图本身并不独立存储在数据库中,是一个虚表,即数据库中之存放视图的定义而不存放其所对应的数据,这些数据仍然存放在导出的视图的基本表中。视图在概念上与基本表等同,用户可以像使用基本表那样使用视图,可以在视图上再定义视图。
为何要引入视图:
1. 视图能够简化用户的操作,聚焦于所关心的数据上。
2. 视图使用户能以多种角度看待同一数据,增加灵活性 。
3. 视图对重构数据库提供了一定程度的逻辑独立性。
4. 视图能够对机密数据提供安全保护。
5. 适当的利用视图可以更清晰的表达查询。