SQL——数据定义

SQL——数据定义

SQL数据定义功能:定义各种数据库的“对象”

  • 模式定义
  • 表定义
  • 视图定义
  • 索引定义

数据字典

  • 数据查字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有的对象的定义信息以及一些统计信息:
    • 关系模式、表、视图、索引的定义
    • 完整性约束的定义
    • 分类用户对数据库的操作权限
    • 统计信息
    • 关系数据库管理系统在执行SQL的数据定义语句时,实际上就是在更新数据字典表中的相应信息。

数据定义

1.模式定义

【例题】为用户WANG定义一个学生-课程模式S-T

​ 解: CREAT SCHEMA "S-T" AUTHORIZATION WANG;

  • 定义模式实际上定义了一个命名空间(或者说目录)

  • 在这个空间中可以定义该模式包含的数据库对象,例如基本表、视图、索引等。

  • 在CREAT ACHEMA中可以接受CREAT TABLE,CREAT VIEW和GRANT子句。

    CREAT SCHEMA <模式名> AUTHORIZATION <用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]

【例题】为用户ZHANG 创建了一个模式TEST,并且在其中定义一个表TAB1

解:CREAT SCHEMA TEST AUTHORIZATION ZHANG

​ CREAT TABLE TAB1(COL1 SMALLINT,

​ COL2 INT

​ COL3 CHAR(20)

​ COL4 NUMERIC(10,3)

​ COL5 DECIMAL(5,2)

​ );

删除模式

DROP SCHEMA <模式名><CASCADE|RESTRICT>

  • CASCADE(级联)
    • 删除模式的同时把该模式下的所有数据库对象全部删除
  • RESTRICT(限制)
    • 如果该模式下定义了下属的数据库对象(如表、视图等),则拒绝删除语句的执行
    • 仅当该模式中没有任何下属的对象时才能执行

【例题】DROP SCHEMA ZHANG CASCADE

​ 删除模式ZHANG

​ 同时删除该模式中定义的表TAB1也被删除

2.表定义

定义基本表

CREAT TABLE <表名> /基本表的定义/

(<列名><数据类型>[<列级完整性约束>] /总成该表的列/

​ [,<列名><数据类型>[<列级完整性约束>]]

...

​ [,<表级完整性约束>]);

  • <列级完整性约束>:涉及相应属性列的完整性约束条件
  • <表级完整性约束>:涉及一个或多个属性列的完整性约束条件
  • 如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上。

【例题】建立“学生”表Student。学号是主码,姓名取值唯一。

CREAT TABLE Student
(Sno CHAR(9) PRIMARY KEY,   /*列级完整性约束条件,Son是主码
 Sname CHAR(20) UNIQUE,   /*Sname取值唯一*/
 Ssex CHAR(2),
 Sage SMALLINT,
 SDEPT CHAR(20)
);
  • 关系模型中"域"的概念用数据类型来实现
  • 定义表的属性时需要指明其数据类型及长度
  • 选用哪种数据类型
    • 取值范围
    • 要做哪些运算

模式与表

  • 每一个基本表需要属于某个模式

  • 定义基本表所属模式的方式:

    • 在表名中明显地给出模式名

      CREAT TABLE "S-T".Student(.......);

      CREAT TABLE "S-T".Course(.......);

      CREAT TABLE "S-T".SC(......);

    • 在创建模式时同时创建表

    • 设置所属模式

  • 创建基本表(其他数据库对象也一样)时,若没有指定模式,系统根据搜索路径来确定该对象所属的模式

  • 关系数据库管理系统会以“搜索路径”指向的模式作为数据库对象的模式名

  • 设置搜索路径方式:

    SET search_path TO "S-T",PUBLIC;
    -修改基本表
    -删除基本表

3.索引定义

原文地址:https://www.cnblogs.com/Weber-security/p/12527140.html