数据库系统学习笔记(五)——SQL语言

结构化查询语言(Structured Query Language,SQL)是关系数据库的标准语言。其功能包括查询、数据库模式创建、数据库数据的插入与修改、数据库安全性完整性定义与控制等一系列功能。


SQL概述

SQL特点

综合统一

SQL集数据定义语言、数据操纵语言、数据控制语言于一体,包括下列操作要求:

  • 定义和修改、删除关系模式,定义和删除模式,插入数据,建立数据库;
  • 对数据库中的数据进行查询和更新;
  • 数据库重构和维护;
  • 数据库安全性、完整性控制以及事务控制;
  • 嵌入式SQL和动态SQL定义。

高度非过程化

使用SQL进行数据操作时,只要提出“做什么”,无需说明“怎么做”。存取路径的选择以及SQL的操作过程由系统自动完成。

面向集合的操作方式

SQL采用集合操作方式 ,操作对象、查找结果是元组的集合,一次插入、删除、更新操作的对象也是元组的集合。

以同一语法结构提供多种使用方式

SQL既是独立的语言,又是嵌入式语言。可以直接输入SQL语言对数据库进行操作,也可以嵌入到高级语言(例如C、C++、Java等)程序中,供程序员设计程序时使用。
在这两种不同的使用方式下,SQL的语法结构基本上是一致的

语言简洁,易学易用

  • 数据查询——SELECT
  • 数据定义——CREATE,DROP,ALTER
  • 数据操纵——INSERT,UPDATE,DELETE
  • 数据控制——GRANT,REVOKE

SQL基本概念

支持SQL的关系数据库管理系统同样支持关系数据库三级模式结构。
如图,其中外模式包括若干视图(View)和部分基本表(Base TABLE),数据库模式包括若干基本表,内模式包括若干存储文件(Stored File)

SQL数据库模式

在关系数据库中,一个关系就对应一张表
视图是从一个或几个基本表导出的表,它是一个虚表。

数据定义

SQL的数据定义功能包括模式定义、表定义、视图和索引的定义。
SQL的数据定义语句
一个关系数据库管理系统的实例(Instance)中可以建立多个数据库,一个数据库可以建立多个模式,一个模式下通常包括多个表、视图和索引等数据库对象。

模式的定义与删除

定义模式

CREATE SCHEMA AUTHORIZATION ;

定义模式实际上定义了一个命名空间,在这个空间中可以进一步定义该模式包含的数据库对象,例如基本表、视图、定义授权。

要创建模式,调用该命令的用户必须拥有数据库管理员权限。

CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEWGRANT子句:

1
2
3
4
5
6
7
8
9
CREATE SCHEMA <SchemaName> AUTHORIZATION <UserName> [<TableDefination>|<ViewDefination>|<GrantDefination>];
//Example
CREATE SCHEMA TEST AUTHORIZATION TestUser
CREATE TABLE TableTest (
COL1 INT
COL2 CHAR(20),
COL3 DECIMAL(5,2)
);

删除模式

DROP SCHEMA ;

其中CASCADE和RESTRICT两者必选其一。CASCADE(级联)表示删除模式的同时将该模式中所有的数据库对象全部删除;RESTRICT(限制)表示如果该模式中已经定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。

1
2
//Example
DROP SCHEMA TEST CASCADE;

基本表的定义、删除与修改

定义基本表

CREATE TABLE (

[IntegrityConstrains]
[, [IntegrityConstrains]]

[TableIntegrityConstrains]
)

建表的同时还可以定义与该表有关的完整性约束条件。如果完整性约束条件设计多个表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。

1
2
3
4
5
6
7
8
9
//Example
CREATE TABLE Test(
Name1 CHAR(10) PRIMARY KEY,
Name2 INT NOT NULL,
Name3 CHAR(10),
FOREIGN KEY (
Name3 REFERENCE Test(Name1)
)
);

参照表和被参照表可以是同一个表。

数据类型

  • CHAR(n),CHARACTER(n) 长度为n的定长字符
  • VARCHAR(n),CHARACTERVARYING(n) 最大长度为n的变长字符串
  • CLOB 字符串大对象
  • BLOB 二进制大对象
  • INT,UBTEGER 长整数(4字节)
  • SMALLINT 短整数(2字节)
  • BIGINT 大整数(8字节)
  • NUMERIC(p,d),DECIMAL(p,d),DEC(p,d) 定点数,由p位数字(不包括符号、小数点)组成,小数点后面有d位数字
  • FLOAT(n) 可选精度的浮点数,精度至少为n位数字
  • BOOLEAN 逻辑布尔量
  • DATE 日期,包含年、月、日,格式为YYYY-MM-DD

修改基本表

ALTER TABLE
[ADD [COLUMN] [IntegrityConstrains]]
[ADD ]
[DROP [COLUMN] [CASCADE|RESTRICT]]
[DROP CONSTRAINT [CASCADE|RESTRICT]]
[ALTER COLUMN ];

其中TableName是要修改的基本表,ADD子句增加新列、新的列级完整性约束条件和新的表级完整性约束条件,DROP COLUMN用于删除表中的列,如果指定CASCADE/RESTRICT,则执行级联删除/限制删除。

<待续>