<>3.1 表定义

<>3.1.1 SQL语言概览

简介:

* SQL(Structured Query Language,结构化查询语言),SQL最早的版本
是由IBM开发的,它最初叫做Sequel(Structured English QUEry
Language),在20世纪70年代早期作为System R项目的一部分。
发展历史:

* SQL-86:1986年ANSI和ISO发布了第一个SQL标准。
* SQL-89:ANSI发布的一个SQL扩充版本。
* SQL-92:目前大多数商业RDBMS支持此标准,支持SQL标准符合度的四个等级。
* SQL-99:SQL-92的扩充版本,现在部分商业数据库系统支持此标准,支持SQL标准符合度的四个等级。
SQL的四个标准符合度等级:

* Entry level SQL(入门级)
* Transitional SQL (过渡级)
* Intermediate SQL(中间级)
* Full SQL(完全级)
* 目前,没有DBMS产品全部实现了SQL标准符合度的四个等级。
SQL语言的组成部分:
① DDL (Data definition Language) 数据定义语言

如:

* 表:create table,alter table,drop table
* 索引:create index,drop index
* 视图:create view,drop view
* 触发器:create trigger,drop trigger

② DML (Data manipulation Language) 数据操纵语言

如:

* 选择:select … from
* 插入、删除、更新:insert, delete, update
③ DCL (Data-control Language) 数据控制语言

如:

* 确认、取消:grant,revoke
<>3.1.2 SQL数据定义

使用数据定义语言(DDL)定义关系集合:
CREATE TABLE instructor( ID char(5), --定长字符串 name varchar(20) not null,
--可变长字符串,完整性约束:不为空 dept_name varchar(20), salary numeric(8,2), --有两位有效数字的八位浮点数
primary key(ID)); --指定主键为ID
SQL的DDL语言可用于定义每个关系的信息:

* 每个关系模式。
* 每个属性的取值类型。
* 完整性约束。
* 每个关系维护的索引集合。
* 每个关系的安全性和权限信息。
* 每个关系在磁盘上的物理存储结构。
基本类型:

类型 说明
char(n) 固定长度字符串,用户指定长度n。
varchar(n) 可变长度的字符串,用户指定最大长度。
int 整数类型(和机器相关的整数类型的子集),等价于全程integer。
smallint 小整数类型(和机器相关的整数类型的子集)。
numeric(p,d) 定点数,精度由用户指定。这个数有p位数字,其中d位数字在小数点右边。
real,double precision 浮点数与双精度浮点数,精度与机器相关。
float(n) 精度至少为n位的浮点数。
null 每种类型都可以包含一个特殊值,即空值。可以声明属性值不为空,禁止加入空值。
date 日期,含年、月、日,如 ‘2015-3-20’。
time 时间,含小时、分钟、秒,如‘ 08:15:30’或‘ 08:15:30.75’。
timestamp 日期 + 时间,如‘2015-3-20 08:15:30.75’。
SQL中各类数据库通用的函数举例:

函数 说明
abs() 绝对值
exp() 指数
round() 四舍五入
… …
SQL支持的完整性约束举例:

约束 说明
not null 一个属性上的not null约束表明在该属性上不允许空值。
primary key(A1,…,Am) 声明表示属性A1, …, An构成关系的主码。主码属性必须非空且唯一。主码属性在SQL_92标准中无需指明 not
null,但是在SQL_89中需要明确指明。
foreign key (A1, …, Am) references 声明表示关系中任意元组在属性上(A1, …,
Am)上的取值必须对应于关系s中某元组的主码属性上的取值。
check(P) P是谓词条件
… …
例如,声明ID为instructor的主码,并确保salary的值为非负:
/*方法一*/ CREATE TABLE instructor( ID char(5), name varchar(20) not null,
dept_namevarchar(20), salary numeric(8,2), primary key(ID), --声明ID为instructor的主码
check (salary>=0)); --条件:salary>=0 /*方法二*/ CREATE TABLE instructor2( ID char(5)
primary key, --直接声明主码 name varchar(20), dept_name varchar(20), salary numeric(8,
2), check (salary>=0));
命令举例:

命令 说明 举例
drop table 从数据库中删除关于被去掉关系的所有信息。 DROP TABLE instructor2;
alter table 为已有关系增加属性。 ALTER TABLE instructor add birthday date;
alter table drop 从关系中去掉属性,很多数据库系统并不支持此操作 ALTER TABLE r DROP A
alter table modify 修改关系中的属性。 ALTER TABLE instructor MODIFY (ID char(10));
(完)

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信