数据库系统概论-3.3数据定义-赵亮老师

  • 对数据库,仓库,表的形象比喻

数据库->仓库 模式->房间 表->房间里面的物品

模式的定义与删除

定义模式

Create Schema <模式名> Authorization <用户名>;

  • 例如为用户wang定义一个学生-课程模式S-T。

Create schema “S-T” Authorization WANG;

说明

  1. 若没有指定模式名,那么<模式名>隐含为<用户名>

Create schema Authorization WANG;

  1. 在Create Schema<模式名> Authorization <用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>];
  2. 执行创建模式语句必须拥有DBA权限,或者DBA授权在Create Schema的权限。

删除模式

语句格式:Drop Schema <模式名> <Cascade|Restrict>;

说明

  1. Cascade和Restrict必须二选一
  2. Cascade(级联):删除模式(房间)的同时必须把该模式中所有的数据库对象全部删除
  3. Restrict(限制):(如果房间里面有东西就不能拆)当模式下面有数据库有数据表的时候会出错。(必须保证是空房子才能拆)

Drop Schema ZHANG Cascade;
删除模式ZHANG,同时改模式中定义的表TAB1也被删除。


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

定义基本表

  • 语句格式
Create Table<表名><列名> <数据结构> [列级完整约束条件]
                                      [, <列名> <数据结构> [列级完整约束条件]]
                                      .....
                                      [,<表级完整约束条件>]);
                                      ```

模式与表

每一个基本表都属于某一个模式,一个模式包含多个基本表

  • 创建基本表(其他数据库对象一样),若没有指定模式系统根据搜索路径来确定该对象所属的模式。
  1. 显示当前的搜索路径:

SHOW search_pathn

  1. 搜索路径的当前默认值是:

$user,PUBLIC;

  1. DBA用户可以设置搜索路径

SET search_path TO “S-T”,PUBLIC;(第一个模式名S-T)

  • 若搜索路径中的存在模式,RDBMS会使用模式列表中的第一个存在的模式作为数据库对象的模式名

创建基本表

  • 以定义一个学生-课程模式S-T为例
  1. 创建表时给出模式名
Create Table “S-T”.Student (.....);
Create Table “S-T”.Course (.....);
Create Table “S-T”.SC (.....);
  1. 在创建模式语句中创建表

  1. 设置所属属性,在创建表名中不必给出模式名

前面的已经设置了搜索路径

  • 例如:
Set search_path “S-T”, PUBLIC;
Create Table Student(......);
  • 执行结果:建立了S-T.Student基本表

修改基本表

  • 例子 向Student表增加”入学时间”列,其数据类型为日期型

Alter Table Student Add S_entrance DATE; DATE是数据类型

  • 注意 不论基本表中原来是否已有数据,新增加的列一律为空值

  • 例子 将年龄的数据类型由字符型(假设之前为字符型)改为整数

Alter Table Student Alter Column Sage Int;

  • 例子增加课程名称必须取唯一值的约束条件

Alter Table Course Add Unique (Cname);


删除基本表

  • 语句格式:Drop Table <表名>[Reatrict|Cascade] ;
  • 例:删除Student表

Drop Table Student Cascade

基本表定义被删除,数据被删除,表上建立的索引、视图、触发器等一般也将被删除。


索引的建立与删除

  • 建立索引的目的:

    加快查询速度

  • 谁可以建立索引:

    DBA或表的属主(即建立表的人)

    DBMS一般会自动建立以上的索引:

    Primary Key; 也就是主键Sno

    Unique; Sname

  • 谁维护索引:

    DBMS自动完成

  • 使用索引:

    DBMS自动选择是否使用索引及使用哪些索引

建立索引

  • 语句格式:

Create [Unique] [Cluster] Index<索引名> On <表名> (<列名>[<次序>] [, <列名>[<次序>]]…);

  • Unique是唯一索引,Cluster是聚簇索引
  1. Unique表明此索引每一个索引值只对应唯一的数据,下面是一些例子
    _X_ZRTDX@1QDHF4I_O_L45V.png

  2. Cluster表示要建立的索引是聚簇索引。聚簇索引会调整实际的物理位置,调整成跟书的目录一样的顺序(这里拿书的目录作为例子)

  • 例一
  • 例二
  • 聚簇索引的详细用法

  • 在Student表的Sname列上建立一个聚簇索引。

Create Cluster Index Stusname On Student(Sname);

  • 在最经常查询的列上建立聚簇索引以提高查询效率
  • 一个基本表上最多只能建立一个聚簇索引
  • 经常更新的列不宜建立聚簇索引

写的很晚了,晚安!

相关推荐

  1. 数据库系统概论】触发器

    2024-04-01 20:42:01       10 阅读
  2. 数据库系统概论】事务

    2024-04-01 20:42:01       10 阅读
  3. 数据库系统概论-00引言

    2024-04-01 20:42:01       28 阅读
  4. 数据库系统概论-第二章

    2024-04-01 20:42:01       6 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-01 20:42:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-01 20:42:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-01 20:42:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-01 20:42:01       20 阅读

热门阅读

  1. C++与C语言

    2024-04-01 20:42:01       18 阅读
  2. LLM--打造Private GPT需要知道的一些概念及术语

    2024-04-01 20:42:01       18 阅读
  3. Linux 如何一键kill杀死某个被占用的端口

    2024-04-01 20:42:01       17 阅读
  4. c++ map

    2024-04-01 20:42:01       15 阅读
  5. vue3依赖注入解决根组件和多级组件件传值问题

    2024-04-01 20:42:01       15 阅读
  6. Stable Diffusion的界面参数详解

    2024-04-01 20:42:01       13 阅读
  7. Hive详解(2)

    2024-04-01 20:42:01       21 阅读
  8. 自定义多阶段倒计时实现分段倒计时

    2024-04-01 20:42:01       15 阅读
  9. 1364:二叉树遍历(flist)

    2024-04-01 20:42:01       13 阅读
  10. 利用ChatGPT打造精彩的学术论文写作体验

    2024-04-01 20:42:01       18 阅读
  11. 通过多选按钮选择需要修改什么字段

    2024-04-01 20:42:01       17 阅读
  12. Qt:常见的exec()函数

    2024-04-01 20:42:01       14 阅读
  13. React组件异常捕获的解决思路

    2024-04-01 20:42:01       19 阅读