【数据库系统原理】第三章 SQL语言之表定义

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的四个标准符合度等级:

  1. Entry level SQL(入门级)
  2. Transitional SQL (过渡级)
  3. Intermediate SQL(中间级)
  4. 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_name varchar(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));

(完)

    原文作者:轩i丶
    原文地址: https://blog.csdn.net/qq_39582960/article/details/89788047
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞