数据定义

关系数据库系统支持三级模式结构,其模式、外模式和内模式的基本对象有模式、表、视图和索引等。SQL数据定义功能包括模式的定义、表定义、视图定义和索引的定义。

SQL的数据定义语句如下表
数据定义表

一、模式的定义和删除

1、定义模式

在SQL语句中,模式定义语句为:
CREATE SCHEMA <模式名>AUTHORIZATION<用户名>;
如果没有指定<模式名>,那么<模式名>隐含为<用户名>。该命令要拥有数据库管理员权限,或者获得了数据库管理员授予的CREATE SCHEMA的权限。
定义模式实际上定义了一个命名空间,在这个空间中可以进一步定义该模式包含的数据库对象,例如基本表、视图、索引等。用户可以在创建模式的同时在这个模式定义中进一步创建表、视图,
定义授权:CREATE SCHEMA<模式名>AUTHORIZATION<用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>];

2、删除模式

在SQL语句中,删除模式语句为:
DROP SCHEMA<模式名>< CASCADE|RESTRICT>;其中CASCADE(级联)和RESTRICT(限制)选一个。级联表示在删除模式的同事把该模式中所有的数据库对象全部删除;限制表示该模式中已经定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。
备注:只有当该模式下没有任何下属的对象时才能执行DROP SCHEMA语句。

二、基本表的定义、删除与修改

1、定义基本表

创建了一个模式就建立了一个数据库的命名空间,一个框架,首先要定义该模式包含的数据库基本表。SQL定义基本表格式:
CREATE TABLE<表名>(<列名><数据类型>[列级完整性约束条件][,<列名><数据类型>[列级完整性约束条件]])…[,<表级完整性约束条件>]);
建表的同时还可定义与该表有关的完整性约束条件,这些条件被存入系统的数据字典中,当用户操作表中数据时由关系数据库管理系统自动检查该操作是否违背这些完整性约束条件。如果条件涉及该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。

2、数据类型

关系模型中,每一个属性来自一个域,它的取值必须是域中的值。在SQL中域的概念用数据类型来实现,定义表的各个属性时需要指明其数据类型及长度,SQL标准支持多种数据类型,不同的关系数据库管理系统中支持的数据类型不完全相同。
数据类型
一个属性选用那种数据类型要根据实际情况(取值范围、适用运算)来决定。

3、模式与表

每一个基本表都属于某一个模式,一个模式包含多个基本表。当定义基本表时一般可以有三种方法定义它所属的模式:
1)在表名中明显地给出模式名;
2)在创建模式语句中同时创建表;
3)设置所属的模式,这样在创建表时表名中不必给出模式名。
当用户创建基本表时没有指定模式,系统根据搜索路径来确定该对象所属的模式。搜索路径语句:SHOW search_path
当前默认值都是$user,PUBLIC,首先搜索与用户名相同的模式名,如果不存在就使用PUBLIC模式。

4、修改基本表

SQL语句:
ALTER TABLE <表名>[ADD[COLUMN]<新列名><数据类型>[完整性约束]]
[ADD<表级完整性约束>][DROP[COLUMN]<列名>[CASCADE|RESTRICT]]
[DROP CONSTRAINT<完整性约束名>[RESTRICT|CASCADE ]]
[ALTER COLUMN<列名><数据类型>];
其中:ADD用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件。DROP COLUMN用于删除表中的列,CASCADE会自动删除引用了该列的其他对象,而RESTRICT如果该列被其他对象引用,RDBMS将被拒绝删除该列。DROP CONSTRAINT用于删除指定的完整性约束条件。

5、删除基本表

SQL语句为:
DROP TABLE <表名>[RESTRICT|CASCADE];
其中,使用RESTRICT删除的基本表不能被其他表的约束所引用,不能有视图、触发器、存储过程或者函数。如果存在这些依赖该表的对象,就无法删除。使用CASCADE相关的依赖对象也会一起删除。默认是RESTRICT。

三、索引的建立与删除

索引相当于目录,通过消耗“空间”来节约“时间“,从而提高效率。但是如果使用的空间过多也是不合理的,要注意时间和空间对效率的影响。
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
索引是对数据库表中一个或多个列的值进行排序的结构。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。

数据库索引有多种类型,常见索引包括:
1、顺序文件上的索引
针对指定实行升序或降序存储的关系,在该属性上建立一个顺序索引文件,索引文件由属性值和相应的元组指针组成。
2、B+树索引
将索引实行组织成B+树形式,树的叶结点为属性值和相应的元组指针。它具有动态平衡的优点。
3、散列索引
建立若干个桶,将索引属性按照其散列函数值映射到相应桶中,桶中存放索引属性值和相应的元组指针。它具有查找速度快的特点。
4、位图索引
用位向量记录索引属性中可能出出现的值,每个位向量对应一个可能值。
索引的缺点是占用一定的存储空间,当基本表更新时,索引要进行相应的维护,这样会增加数据库的负担。

索引是关系数据库管理系统的内部实现技术,属于内模式的范畴。

1、建立索引

SQL语句:
CREATE [UNIQUE][CLUSTER] INDEX<索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>]]…);
其中,索引可以建立在该表的一列或者多列上,各列名之间用逗号分隔,每个列名后面还可以用次序指定索引值的排列次序,可选ASC(升序)或DESC(降序),默认是ASC。UNIQUE表明此索引的每一个索引值只对应唯一的数据记录,CLUSTER表示要建立的索引是聚簇索引。

2、修改索引

SQL语句:
ALTER INDEX <旧索引名> RENAME TO <新索引名>;实现重新命名。

3、删除索引

SQL语句为:
DROP INDEX <索引名>;删除索引时,系统会同时从数据字典中删除有关该索引的描述。

四、数据字典

数据字典是关系数据库管理系统内部的一组系统表,记录数据库中所有的定义信息:关系模式定义、视图定义、索引定义、完整性约束定义、各类用户对数据库的操作权限、统计信息等。数据字典中的信息是查询优化和查询处理时的重要依据。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值