SQL语言-数据定义
3.2 数据定义
数据定义功能包括定义基本表、视图和索引
操作方式
操作对象
表 视图 索引
创 建 CREAT TABLE CREAT VIEW CREAT INDEX
删 除 DROP TABLE DROP VIEW DROP INDEX
修 改 ALTER TABLE
准备工作:数据类型
数据类型用于给特定的列提供数据规则, 不同的DBMS支持的数据类型不同,有细 微的差别。SQL提供的主要类型: 数值型、字符型、位串型、日期型
语句格式:
CREATE TABLE <表名> (<列名> <数据类型> [列级完整性约束条件] [,<列名> <数据类型> [列级完整性约束条件]…] [,<表级完整性约束条件> );
列和表完整性约束条件
约束类型 Not null unqiue 说明 防止NULL值进入该列 防止重复值进入该列
修改内容
增加新列和新的完整性约束条件(ADD子句) 删除指定的完整性约束条件(DROP子句) 修改原有的列定义 ( ALTER子句)
例2 向Student表中增加“入学时间”列,其数 据类型为日期型。
ALTER TABLE Student ADD Scome DATEtime;
意义:
大多数数据库开发商支持SQL/99,但并不是百分 之百符合这个标准。目前市场上存在一些不同风 格的SQL,因为每一个RDBMS开发商都试图扩展 这个标准,以增强产品的功能,提高产品的吸引 力,因此各个DBMS产品在实现标准SQL语言时也 各有差别,读者在使用某个DBMS产品时,应仔 细阅读系统提供的有关手册。本书中我们将遵循 SQL/99标准向大家介绍语句。但为了增强大家 的认识,我们会通过SQL Server数据库阐述部 分特性,与标准SQL/99会有一些偏离。
1.79E+308
8Byte
3.40E+38
4Byte
精度
最多15位
最多7位
精确数类型
精确数类型有两种形式
Decimal Numeric
与浮点类型数据的区别
可以自定义精度的位数 例 num_col(5,2)
货币型
货币类型的比较
比较内容
最小值
Money
-922,337,203,685,477.5808
SQL86
由ANSI(美国国家标准局)于1986年10月公布 1987年6月国际标准化组织OSI把它采纳为国际标准
SQL89
ISO于1989年4月公布,增强了完整性特征
SQL92
ISO于1992年公布,也称为SQL2
SQL99
意义:
自SQL成为国际标准语言以后,各个数据库厂 家纷纷推出各自支持的SQL软件或与SQL的接口软 件。大多数数据库均用SQL作为共同的数据存取 语言和标准接口,使不同数据库系统之间的互操 作有了共同的基础。这个意义十分重大。因此, 有人把确立SQL为关系数据库语言标准及其后的 发展称为一场革命。 SQL成为国际标准,对数据库以外的领域也产 生了很大影响,有不少软件产品将SQL语言的数 据查询功能与图形功能、软件工程工具、软件开 发工具、人工智能程序结合起来。SQL已成为关 系数据库领域中一个主流语言。
索引的分类
聚簇/聚集索引
索引树的叶级页包含实际的数据;表的物理顺 序与记录的索引顺序相同。非常类似于目录表, 目录表的顺序与实际页码顺序。一个表只能有 一个聚簇索引。
5.1 SQL语言概述
SQL,结构化查询语言
Structured Query Language 是一种介于关系代数与关系演算之间的语言 已成为关系数据库的标准语言 支持关系系统
Oracle、Informix、Sybase、MS SQL、INGRES、 DB2、VF、FoxPro、Access等
CREATE TABLE student (Sno char(8), Sname char(20) , Ssex char(1) Sage int, Sdept char(20))
创建有约束的表结构 Create table student (sno char(8) primary key, sname char(8) not null unique, ssex char(2) default '男' check(ssex='男' or ssex='女'), sage tinyint check(sage between 15 and 50), sdept char(20)) T-SQL中具体创建约束时,分为命名约束与自 命名约束,自命名约束不需要constraint关键字, 直接在字段定义后创建,命名约束需要constraint 关键字,对约束命名,位置在字段定义结束后。
语句格式
DROP TABLE <表名>
例5 删除Student表
DROP TABLE Student
说明:
删除基本表定义时,表中的数据、在此表上建立的 索引将同时被删除; 此表上的视图不被删除,但已无法使用。
4、索引
表的索引就是表中数据的目录 索引基于表中的列创建,可以基于不同的列创建 多个索引 在进行数据查询时,如果不使用索引,就需要将 数据文件分块,逐个读到内存中进行查找比较操 作。如果使用索引,可先将索引文件读入内存, 根据索引项找到元组的地址,然后再根据地址将 元组数据读入内存,并且由于索引文件中只含有 索引项和元组地址,文件很小,而且索引项经过 排序,索引可以很快的读入内存并找到相应元组 地址,极大地提高查询的速度。 使用索引可保证数据的唯一性。在索引的定义中 包括了数据唯一性的内容。 使用索引可加快连接速度
4、嵌入式SQL
规定了SQL语句在宿主语言的程序中使用规则。
2. SQL语言的特点:
1. 综合统一
查询、操纵、定义、控制操作功能一体化 语言风格统一,数据操作符统一性
2. 高度非过程化
用户只需提出“做什么”,而不必指明“怎么做” 隐蔽数据存取路径
3. 面向集合的操作方式
2、修改基本表 ALTER TABLE
语句格式
ALTER TABLE <表名> [ADD <新列名> <数据类型> [完整性约束]] [ADD constraint [完整性约束]] [DROP constraint<完整性约束>] [DROP COLUMN<列名>] --T-SQL [ALTER column<列名><数据类型>] --T-SQL
创建有约束的表结构 create table sc (sno char(8), cno char(2), grade tinyint, constraint pk_sc primary key(sno,cno), constraint fk_stuid foreign key(sno) references student(sno), constraint fk_course foreign key(cno) references course(cno), constraint ck_grade check(grade>=0 and grade<=100) ) 注意:教材是标准SQL99语法,和具体的DBMS的语法有区别
Smallmoney
-214,748.3648
最大值
占用存储空间
922,337,203,685,477.5807
214,748.3647
4Byte
8Byte
精度
小数点后4位
小数点后4位
位数据类型
位数据类型bit是一种逻辑数据类型 只有1和0两种数值 一般常用作true/false使用 定义bit列时,不允许为NULL,也不能建 立索引 多个bit列可占用一个字节
5. 语言简洁,易学易用
类似于英语的自然语言 操作谓词少(核心功能只用9个动词)
SQL功能 数据查询 数据定义 数据操纵 数据控制
动词 SELECT CREATE,DROP,ALTER INSERT,UPDATE,DELETE GRANT,REVOKE
3. SQL对关系数据库模式的支持
文本型和图像型
文本类型text 图像类型image 每行可以存储2GB的二进制大型对象
时间戳型
时间戳型表示Timestamp 由系统自动赋值的一个计数器数据 记录了数据行的操作顺序 时间戳列的数据保持惟一,它可以惟一标 识表中的列 时间戳列的值实际来自于事务日志
1、定义基本表 CREATE TABLE
SQL
外层/ 视图V1 视图V2
外模式 概念层/ 概念模式 内层/ 存储模式
基本表B1
基本表B2
基本表B3
基本表B4
存储文件S1
存储文件S2
基本表(base table):
数据库中实际独立存在的表(关系) 存储在实际的文件中
存储文件
存储基本表的数据
视图(view)
是一个虚拟表 从基本表或其他视图中导出的表 没有实际的存储位置 数据库中只存放视图的定义而不存放视图对应的 数据,数据仍然存放在导出视图的基本表中
整数类型
整数类型的比较
比较内容 最小值 最大值 占用存储空间
Int -231 231-1 4byte
Smallint -215 215-1 2byte
Tinyint 0 255 1byte
浮点数类型
比较内容 最小值 Float -1.79E+308 Real -3.40E+38