数据库知识点整合:架构与基本表

架构

定义架构

架构(schema,也称为模式)是数据库下的一个逻辑命名空间,可以存放表、视图等数据库对象,它是一个数据库对象的容器。

一个数据库可包含一个或多个架构,由特定的授权用户所拥有。在同一个数据库中,架构名必须唯一。

架构对象的类型包括:基本表视图触发器等。

CREATE SCHEMA schema_name_clause [ <schema_element> [ ...n ] ]
<schema_name_clause> ::= {
      schema_name
    | AUTHORIZATION owner_name
    | schema_name AUTHORIZATION owner_name  }
<schema_element> ::= { 
    table_definition | view_definition | grant_statement 
   revoke_statement | deny_statement  }

实例:

--为用户“U1”定义一个架构,架构名为“Salse”

create schema Salse authorization U1
--创建由U1拥有、包含Test表的架构Common,同时授予U2对Test表有SELECT权,
--授予U3不能对Test表有删除权限
create schema Common authorization U1
  create table Test (
    C1 int primary key,
    C2 char(4) )
  grant select TO U2
  deny delete TO U3;

在架构之间传输对象

在架构之间传输对象就是更改对象所属的架构。

alter schema 移入的架构名 transfer 被移出架构的名字

实例:

--将Test表从Common架构传输到Special架构中。

altrer schema Special transfer Commer.Test
删除架构
drop schema 架构名

实例:

--删除Special架构,假设该架构中包含Test表

drop table Special.Test;  --删除架构中的对象
drop schema Special;   --删除架构


基本表

创建基本表

普通表:在这里插入图片描述

在这里插入图片描述
有计算列的表:

create table comptable (
low int,
high int,
myavg as(low+high)/2
)
创建临时表

临时表是存储在内存中的表,临时表根据其使用范围可以分为两种:本地临时表和全局临时表。
本地临时表:在表名前加“#”
全局临时表:在表名前加“##”

修改基本表

在定义完表之后,如果需要修改表结构,比如添加列、删除列或修改列定义,可以使用alter table语句实现。
在这里插入图片描述

删除表
drop table 表名

分区表

分区表是把数据按某种标准划分成区域存储在不同的文件组中,使用分区可以快速而有效地管理和访问数据子集,从而使大型表或索引更易于管理。
合理的使用分区会在很大程度上提高数据库的性能。


以下情况时适合分区:

  • 表中数据量大;
  • 该表包含(或将包含)以多种不同方式使用的大量数据。
  • 数据是分段的,比如数据以年为分隔。
  • 对表的常规维护操作只针对表的一个数据子集。

分区表的特点:

  • 分区表是从物理上将一个大表分成几个小表,但从逻辑上来看,还是一个大表。
  • 对用户而言,所面对的依然是一个大表,他们不需要考虑操作的年份对应的小表,用户只要将记录插入到大表——逻辑表中就可以了,数据库管理系统会自动将数据放置到它对应的那个物理小表中。
创建分区函数

左侧分区:
在这里插入图片描述

--在 int 列上创建左侧分区函数。下列分区函数将表分为四个分区
create partition function myrangepf1(int)
as range left for values(1,100,1000);

右侧分区:
在这里插入图片描述

--在 int 列上创建右侧分区函数。下列分区函数将表分为四个分区
create partition function myrangepf2(int)
as range right for values(1,100,1000);
创建分区方案
--先创建一个分区函数,该函数将表分为四个分区。
--然后创建一个分区方案,在其中指定拥有这四个分区中每一个分区的文件组
create partition function myrangepf1(int)
as range left for values(1,100,1000);
go
create partition scheme myRangePS1
as partition myRangePF1
to (test1fg, test2fg, test3fg, test4fg);

分区分配情况:
在这里插入图片描述
特殊分区方案:

--本示例首先创建一个分区函数,将数据分为四个分区。
--然后创建一个分区方案,最后创建使用该分区方案的表。
--本示例假定数据库中已经存在文件组。
create partition function myrangepf1(int)
  as range left for values(1,100,1000);
go
create partition scheme myRangePS1
  as partition myRangePF1
  to (test1fg, test2fg, test3fg, test4fg);
go
create table partition (
 col1 int,
 col2 char(10),
on myrangeps1(col1);

猜你喜欢

转载自blog.csdn.net/k1507157/article/details/115485957
今日推荐