- 对数据库,仓库,表的形象比喻
数据库->仓库 模式->房间 表->房间里面的物品
模式的定义与删除
定义模式
Create Schema <模式名> Authorization <用户名>;
- 例如为用户wang定义一个学生-课程模式S-T。
Create schema “S-T” Authorization WANG;
说明
- 若没有指定模式名,那么<模式名>隐含为<用户名>
Create schema Authorization WANG;
- 在Create Schema<模式名> Authorization <用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>];
- 执行创建模式语句必须拥有DBA权限,或者DBA授权在Create Schema的权限。
删除模式
语句格式:Drop Schema <模式名> <Cascade|Restrict>;
说明
- Cascade和Restrict必须二选一
- Cascade(级联):删除模式(房间)的同时必须把该模式中所有的数据库对象全部删除
- Restrict(限制):(如果房间里面有东西就不能拆)当模式下面有数据库有数据表的时候会出错。(必须保证是空房子才能拆)
Drop Schema ZHANG Cascade;
删除模式ZHANG,同时改模式中定义的表TAB1也被删除。
基本表的定义、删除与修改
定义基本表
- 语句格式
Create Table<表名> (<列名> <数据结构> [列级完整约束条件] [, <列名> <数据结构> [列级完整约束条件]] ..... [,<表级完整约束条件>]); ```
模式与表
每一个基本表都属于某一个模式,一个模式包含多个基本表
- 创建基本表(其他数据库对象一样),若没有指定模式系统根据搜索路径来确定该对象所属的模式。
- 显示当前的搜索路径:
SHOW search_pathn
- 搜索路径的当前默认值是:
$user,PUBLIC;
- DBA用户可以设置搜索路径
SET search_path TO “S-T”,PUBLIC;(第一个模式名S-T)
- 若搜索路径中的存在模式,RDBMS会使用模式列表中的第一个存在的模式作为数据库对象的模式名
创建基本表
- 以定义一个学生-课程模式S-T为例
- 创建表时给出模式名
Create Table “S-T”.Student (.....); Create Table “S-T”.Course (.....); Create Table “S-T”.SC (.....);
- 在创建模式语句中创建表
- 设置所属属性,在创建表名中不必给出模式名
前面的已经设置了搜索路径
- 例如:
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是聚簇索引
-
Unique表明此索引每一个索引值只对应唯一的数据,下面是一些例子
-
Cluster表示要建立的索引是聚簇索引。聚簇索引会调整实际的物理位置,调整成跟书的目录一样的顺序(这里拿书的目录作为例子)
- 例一
- 例二
-
聚簇索引的详细用法
-
在Student表的Sname列上建立一个聚簇索引。
Create Cluster Index Stusname On Student(Sname);
- 在最经常查询的列上建立聚簇索引以提高查询效率
- 一个基本表上最多只能建立一个聚簇索引
- 经常更新的列不宜建立聚簇索引
标签:删除,Create,模式,索引,3.3,Student,Table,数据库系统,概论 From: https://blog.csdn.net/m0_74064456/article/details/137061656写的很晚了,晚安!