第三章 关系数据库标准语言SQL
3.1 SQL概述
SQL 功能 |
动词 |
---|---|
数据查询 | SELECT |
数据定义 | CREATE , DROP , ALTER |
数据操纵 | INSERT , UPDATE , DELETE |
数据控制 | GRANT , REVOKE |
SQL
支持关系数据库三级模式结构
<作图>
- 基本表
- 存储文件
- 视图
3.2 学生-课程数据库
学生表 | Student(Sno,Sname,Ssex,Sage,Sdept)
课程表 | Course(Cno,Cname,Cpno,Ccredit)
学生选课表 | SC(Sno,Cno,Grade)
3.3 数据定义
操作对象 | 创建 | 删除 | 修改 |
---|---|---|---|
模式 | CREATE SCHEMA |
DROP SCHEMA |
|
表 | CREATE TABLE |
DROP TABLE |
ALTER TABLE |
视图 | CREATE VIEW |
DROP VIEW |
|
索引 | CREATE INDEX |
DROP INDEX |
3.3.1 模式的定义与删除
定义模式
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>;
create schema <模式名> authorization <用户名>;
如果没有指定 <模式名>,那么 <模式名> 隐含为 <用户名>
定义模式实际上定义了一个命名空间。在这个空间中可以定义该模式包含的数据库对象,例如基本表、视图、索引等。
删除模式
DROP SCHEMA <模式名> <CASCADE|RESTRICT>;
- 删除模式的同时把该模式中所有的数据库对象全部删除
- 如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。当该模式中没有任何下属的对象时 才能执行。
CASCADE
(级联)
RESTRICT
(限制)
3.3.2 基本表的定义、删除与修改
定义基本表
CREATE TABLE <表名>
(
<列名> <数据类型> <列级完整性约束条件>,
<列名> <数据类型> <列级完整性约束条件>,
<列名> <数据类型> <列级完整性约束条件>
<表级完整性约束条件>
);
建立学生表Student
,学号是主码,姓名取值唯一。
CREATE TABLE Student
(
Sno CHAR(9) PRIMARY KEY, /* 列级完整性约束条件*/
Sname CHAR(20) UNIQUE, /* Sname取唯一值*/
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
建立一个“学生选课”表SC
CREATE TABLE SC
(
Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT,
PRIMARY KEY (Sno, Cno), /* 作为表级完整性进行定义*/
FOREIGN KEY (Sno) REFERENCES Student(Sno), /* 表级完整性约束条件,Sno是外码,被参照表是Student */
FOREIGN KEY (Cno) REFERENCES Course(Cno) /* 表级完整性约束条件, Cno是外码,被参照表是Course*/
);
数据类型
数据类型 |
---|
CHAR(n) |
VARCHAR(n) |
INT |
SMALLINT |