关系数据库标准语言SQL(SQL概述、数据定义)
一、SQL概述
SQL特点:
1.综合统一(集DDL、DML、DCL数据控制语言功能于一体)
2.高度非过程化(面相关问题)
3.面向集合的操作方式(二维表)
4.以同一种语法结构提供多种使用方式
5.语言简单,易学易用
SQL所支持的关系表三级模式结构
视图——虚拟表(从一个或几个基本表导出的表)
基本表——关系表(SQL中一个关系就对应一个基本表、一个(或多个)基本表对应一个存储文件)
二、数据定义
如图为SQL语言的各个操作对象的创建、删除、修改操作。
一个关系数据库管理系统的实例可以建立多个数据库,一个数据库中可以建立多个模式,一个模式通常包括多个表、视图和索引等数据库对象。
删除时的两个选择语句:
CASCADE(级联):删除所有相关项。
RESTRICT(限制):表示如果有下属相关项,则拒绝删除。
模式的定义与删除:
实例:
CREATE SCHEMA “S-T” AUTHORIZATION WANG; #为用户WANG定义一个学生-课程模式S-T
DROP SCHEMA <模式名> <CASCADE|RESTRICT>
基本表的定义、删除与修改:
定义:
CREATE TABLE <表名>
(<列名> <数据类型>[ <列级完整性约束条件> ]
[,<列名> <数据类型>[ <列级完整性约束条件>] ]
…
[,<表级完整性约束条件> ] );
实例:CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY, /* 列级完整性约束条件,Sno是主码*/
Sname CHAR(20) UNIQUE, /* Sname取唯一值*/
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20) );
FOREIGN KEY (Cpno) REFERENCES Course(Cno) /* 指Cpno为外码,被参照表为Course,列为Cno*/
各种定义中的数据类型:
数据类型 |
含义 |
CHAR(n),CHARACTER(n) |
长度为n的定长字符串 |
VARCHAR(n), CHARACTERVARYING(n) |
最大长度为n的变长字符串 |
CLOB |
字符串大对象 |
BLOB |
二进制大对象 |
INT,INTEGER |
长整数(4字节) |
SMALLINT |
短整数(2字节) |
BIGINT |
大整数(8字节) |
NUMERIC(p,d) |
定点数,由p位数字(不包括符号、小数点)组成,小数后面有d位数字 |
DECIMAL(p, d), DEC(p, d) |
同NUMERIC |
REAL |
取决于机器精度的单精度浮点数 |
DOUBLE PRECISION |
取决于机器精度的双精度浮点数 |
FLOAT(n) |
可选精度的浮点数,精度至少为n位数字 |
BOOLEAN |
逻辑布尔量 |
DATE |
日期,包含年、月、日,格式为YYYY-MM-DD |
TIME |
时间,包含一日的时、分、秒,格式为HH:MM:SS |
TIMESTAMP |
时间戳类型 |
INTERVAL |
时间间隔类型 |
模式与基本表:每一个基本表都属于某一个模式、一个模式包含多个基本表
eg: Create table"S-T".Student(......); /*Student所属的模式为 S-T*/
修改基本表:
ALTER TABLE <表名>
[ ADD[COLUMN] <新列名> <数据类型> [ 完整性约束 ] ]
[ ADD <表级完整性约束>]
[ DROP [ COLUMN ] <列名> [CASCADE| RESTRICT] ]
[ DROP CONSTRAINT<完整性约束名>[ RESTRICT | CASCADE ] ]
[ALTER COLUMN <列名><数据类型> ] ;
一简单例子: ALTER TABLE Course ADD UNIQUE(Cname); 增加课程名称必须取唯一值的约束条件。
删除基本表:DROP TABLE <表名>[RESTRICT| CASCADE];
创建视图:
eg:
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept='IS';
索引的建立与删除:
建立索引的目的:加快查询速度
创建索引:
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);
<表名>:要建索引的基本表的名字
索引:可以建立在该表的一列或多列上,各列名之间用逗号分隔
<次序>:指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC (一般默认为升序)
UNIQUE:此索引的每一个索引值只对应唯一的数据记录
CLUSTER:表示要建立的索引是聚簇索引
修改索引:
ALTER INDEX <旧索引名> RENAME TO <新索引名>
删除索引:
DROP INDEX <索引名>;