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.索引定义

相关文章