数据定义(CREAT, DROP, ALTER)
关系数据库系统支持三级模式结构,其模式、外模式和内模式中的基本对象有模式、表 、视图和索引等。因此 SQL 的数据定义功能包括模式定义、表定义、视图和索引的定义。
不支持模式修改,视图修改;只有重新删除创建
标准的SQL也不支持索引创建,商用关系数据库提供索引机制和相关语句
一个关系数据库管理系统的实例 (instance)中可以建立多个数据库,一个数据库中可以建立多个模式, 一个模式下通常包括多个表、视图和索引等数据库对象
模式定义与删除
模式定义
CREATE SCHEMA<模式名>AUTHORIZATION <用户名 >
如果没有指定<模式名>,那么<模式名>隐含为<用户名 >
要创建模式,调用该命令的用户必须拥有数据库管理员权限,或者获得了数据库管理员授予的CREATE SCHEMA的权限
定义模式实际上定义了一个命名空间,在这个空间中可以进一步定义该模式包含的数据库对象,例如基本表、视图、索引等 。也就是说用户可以在创建模式的同时在这个模式定义中进一步创建基本表、视图,定义授权。即 :
1 | CREATE SCHEMA<模式名>AUTHORIZATION <用户名 > [<表定义子句> |<视图定义子句>|<授权定义子句 >] |
1 | CREATE SCHEMA TEST AUTHORIZATION ZHANG |
模式删除
1 | DROP SCHEMA <模式名> <CASCADE | RESTRICT> |
其 中 CASCADE和 RESTRICT两者必选其一。选择了 CASCADE (级联),表示在删除模式的同时把该模式中所有的数据库对象全部删除;选择了 RESTRICT (限制),表示如果该模式中已经定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。
基本表定义,删除,修改
创建了一个模式就建立了一个数据库的命名空间,一个框架。在这个空间中首先要定义的是该模式包含的数据库基本表
创建表
持久表
1 | CREATE TABLE <表名>(<列名><数据类型>[列级完整性约束条件] |
完整性约束条件被存入系统的数据字典中,当用户操作表中数据时由关系数据库管理系统自动检查该操作是否违背这些完整性约束条件。如果完整性约束条件涉及该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。
1 | CREATE TABLE Course |
1 | (Cno CHAR(4) NOT NULL PRIMARY KEY,) |
由上可知外键和参照的表可以是同一个表
1 | CREATE TABLE SC |
临时表
1 | 在 SQL Server 中,可以通过以下两种方法创建临时表: |
1 | ----mysql中 |
数据类型

整形

精准数值型
1 | 整数部分+小数部分 能够精准表示数据 |
浮点型
1 | 不能够精准表示数据 |

货币型

位型

字符型、Unicode字符型和文本型:char\nchar、varchar\nvarchar、text\ntext

1 | mysql 中无nvarchar,ntext |
二进制型和图像型

日期时间型

时间戳
平面和地理空间数据类型
其它
模式与表
设置表所属模式的三种方式
选择模式
1 | CREATE TABLE "S-T".Student(...) |
创建模式时创建表
1 | CREATE SCHEMA TEST AUTHORIZATION ZHANG |
系统根据搜索路径(search path) 来确定该对象所属的模式
搜索路径包含一组模式列表,关系数据库管理系统会使用模式列表中第一个存在的模式作为数据库对象的模式名。若搜索路径中的模式名都不存在,系统将给出错误。
1 | /*显示当前搜索路径*/ |
基本表修改
1 | ALTER TABLE <表名> |
基本表删除
1 | DROP TABLE <表名> [RESTRICT | CASCADE]; |
1 | 若选择RESTRICT,则该表的删除是有限制条件的。 |
视图建立和删除
1 | CREATE VIEW IS_Student /* Student 表上建立视图*/ |
索引的建立和删除
当表的数据量比较大时,查询操作会比较耗时。建立索引是加快查询速度的有效手段。 类似于图书后面的索引,能快速定位到需要查询的内容。用户可以根据应用环境的需要在基本表上建立一个或多个索引,以提供多种存取路径,加快查找速度。
数据库索引有多种类型,常见索引包括顺序文件上的索引、B+树索引、散列 (hash)索引、位图索引等。
- 顺序文件上的索引是针对按指定属性值升序或降序存储的关系,在该属性
上建立一个顺序索引文件,索引文件由属性值和相应的元组指针组成。 - B+树索引是将索引属性组织成B+树形式, B+树的叶结点为属性值和相应的元组指针。 B+树索引具有动态平衡的优点。
- 散列索引是建立若干个桶,将索引属性按照其散列函数值映射到相应桶中,桶中存放索引属性值和相应的元组指针。散列索引具有查找速度快的特点。
- 位图索引是用位向量记录索引属性中可能出现的值,每个位向量对应一个可能值
索引虽然能够加速数据库查询,但需要占用一定的存储空间,当基本表更新时,索引要进行相应的维护,这些都会增加数据库的负担,因此要根据实际应用的需要有选择地创建索引。目前SQL标准中没有涉及索引,一般说来,建立与删除索引由数据库管理员或表的属主(owner), 即建立表的人,负责完成。用户不必也不能显式地选择索引。索引是关系数据库管理系统的内部实现技术,属于内模式的范畴。
索引建立
1 | CREATE [UNIQUE] [CLUSTER] INDEX <索引名> |
索引可以建立在该表的一列或多列上,各列名之间用逗号分隔。每个<列名>后面还可以用<次序 >指定索引值的排列次序,可 选 ASC (升序 )或 DESC (降序),默认值为ASC。
1 | CREATE UNIQUE INDEX Stusno ON Student(Sno); |
修改索引
1 | ALTER INDEX <旧索引名> RENAME TO <新索引名> ; |
删除索引
1 | DROP INDEX <索引名>; |
数字字典
数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有的定义信息,包括关系模式定义、视图定义、索引定义、完整性约束定义、各类用户对数据库的操作权限、统计信息等。关系数据库管理系统在执行SQ L 的数据定义语句时,实际上就是在更新数据字
典表中的相应信息。在进行查询优化和查询处理时,数据字典中的信息是其重要依据。
最惬意的时候,往往是失败的开始。


