数据库复习(关系数据库标准语言SQL)

整理自中国人民大学的慕课《数据库系统概论》,课程链接如下
https://www.icourse163.org/course/RUC-1001655006?from=searchPage

SQL语言

没有一个数据库系统能够支持SQL标准的所有概念和特性

SQL的特点

综合统一

  • 集数据定义语言DDL 、数据操纵语言DML、数据控制语言DCL功能于一体
  • 可以独立完成数据库生命周期中的全部活动
    1. 定义和修改、删除关系模式,定义和删除视图,插入数据,建立数据库
    2. 对数据库中的数据进行查询和更新
    3. 数据库重构和维护
    4. 数据库安全性、完整性控制,以及事物控制
    5. 嵌入式SQL和动态SQL定义

SQL 高度非过程化

  • 存取路径的选择以及SQL的操作过程由系统自动完成

面向集合的操作方式

  • 操作对象、查找结果可以是元组的集合

  • 一次插入、删除、更新操作的对象可以是元组的集合

语言简洁,易学易用

SQL功能 动词
数据查询 SELECT
数据定义 CREATE, DROP, ALTER
数据操纵 INSERT, UPDATE, DELETE
数据控制 GRANT, REVOKE

SQL的基本概念

SQL支持关系数据库的三级模式结构

  • 引入视图的概念(定义在基本表上的虚表),从而建立起外模式——模式之间的层次。
  • 基本表和存储文件是独立的,并非一一对应关系。

基本表

  • SQL中的一个关系对应一个基本表
  • 一个(或多个)基本表对应一个存储文件
  • 一个表可以带若干索引

存储文件

  • 逻辑结构组成了关系数据库的内模式
  • 物理结构对用户是隐蔽的

数据定义

操作对象 操作方式
创建 删除 修改
模式 CREATE SCHEMA DROP SCHEMA
CREATE TABLE DROP TABLE ALTER TABLE
视图 CREATE VIEW DROP VIEW
索引 CREATE INDEX DROP INDEX ALTER INDEX

数据字典

  • 数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有对象的定义信息以及一些统计信息
  • 关系数据库管理系统在执行SQL的数据定义语句时,实际上就是在更新数据字典表中的相应信息

定义模式

  • 定义模式实际上定义了一个目录
  • 在这个目录中可以定义该模式包含的数据库对象,例如基本表、视图、索引等
  • 在CREATE SCHEMA 中可以接受CREATE TABLE, CREATE VIEW 和GRANT 字句
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]

--为用户WANG定义一个学生-课程模式S-T
CREATE SCHEMA "S-T" AUTHORIZATION WANG;
--<模式名>缺省,隐含为<用户名>
CREATE SCHEMA AUTHORIZATION WANG;

删除模式

  • CASCADE(级联):删除模式的同时把该模式中所有的数据库对象全部删除
  • RESTRICT (限制) :如果该模式中定义了下级的数据库对象(如表、视图等),则拒绝该删除语句的执行;仅仅当该模式中没有任何下级的对象时才能执行删除操作
DROP SCHEMA <模式名> <CASCAD|RESTRICT>	

定义基本表

  • 列级完整性约束条件:涉及相应属性列
  • 表级完整性约束条件:涉及一个或多个属性列,如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上
CREATE TABLE <表名> 
(<列名><数据类型>[<列级完整性约束条件>]
[,<列名><数据类型>[<列级完整性约束条件>]
	...
[,<表级完整性约束条件>];

CREATE TABLE Student
	(Sno CHAR(9) PRIMARY KEY,
	Sname CHAR(20) UNIQUE,
	Ssex CHAR(2),
	Sage SMALLINT,
	Sdept CHAR(20)
	);
	
CREATE TABLE Course
	(Cno CHAR(4) PRIMARY KEY,
	Cname CHAR(40),
	Cpno CHAR(4),
	Ccredit SMALLINT,
	FOREIGN KEY(Cpno) REFERENCES Course(Cno)
	);

CREATE TABLE SC
	(Sno CHAR(9),
	Cno CHAR(4),
	Grade SMALLINT,
	PRIMARY KEY(Sno, Cno),
	FOREIGN KEY(Sno) REFERENCE Student(Sno),
	FOREIGN KEY(Cno) REFERENCES Course(Cno)
	);
  • 定义基本表模式的方式
    1. 在表名中明显的给出模式名 :CREATE TABLE “S-T”.SC(…) ;
    2. 在创建模式的同时创建表
    3. 设置所属的模式:SET search_path TO “S-T”, PUBLIC ;

修改基本表

  • <表名>是要修改的基本表
  • ADD 子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件
  • DROP COLUMN 子句用于删除表中的列
    1.如果指定了CASCADE短语,则自动删除引用了该列的其他对象
    2.如果指定了RESTRICT短语,则如果该列被其他对象引用,关系数据库管理系统将拒绝删除该列
  • DROP CONSTRAINT 子句用于删除指定的完整性约束条件
  • ALTER COLUMN 子句用于修改原有的列定义,包括修改列名和数据类型
ALTER TABLE<表名>
		[ADD [COLUMN] <新列名> <数据类型> [完整性约束]]
		[ADD <表级完整性约束>]
		[DROP [COLUMN] <列名> [CASCADE|RESTRICT]]
		[DROP CONSTRAINT <完整性约束名> [RESTRICT|CASCADE]
		[ALTER COLUMN <列名> <数据类型>];
		
--增加入学时间列
ALTER TABLE Student ADD S_entrance DATE;
--将年龄的数据类型改为整数型
ALTER TABLE Student ALTER COLUMN Sage INT;
--增加课程名称必须取唯一值的约束条件
ALTER TABLE Course ADD UNIQUE(Cname);

删除基本表

DROP TABLE <表名> [RESTRICT|CASCADE]

RESTRICT : 要删除的基本表不能被其他表的约束所引用,如果存在依赖该表的对象,则此表不能被删除
CASCADE :删除该表没有限制,在删除基本表的同时,相关的依赖对象一起删除

索引的定义

  • 为了 加快查询速度
  • 常见索引:B+树索引*;散列索引*&
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值