数据库管理与开发基础教程复习 (四)

1|0Oracle数据表

1|1Oracle表和数据类型

表是数据库数据存储的基本单位,是真正存储各种各样数据的对象
逻辑结构:行列组成的二维表

1|0类型

数据表有多种类型:

  1. 关系表,包括规则表(堆组织表)、簇表、分区表。
  2. 索引组织表(IOT)
  3. 临时表
  4. 外部表
  5. 对象表
  6. 嵌套表

表结构当中又有许多的数据类型
如 varchar2(可变产字符串)、date(固定长度日期型)、timestamp(时间戳类型,可更精确的储存和表示时间)
blob(大二进制对象类型)、clob(大字符串类型)、nclob(多字节字符集的clob)、bfile(外部二进制文件、只读)、rowid(记录行的物理地址)。
简单演示:
data_filed Date
to_date('2018-01-11','yyy-mm-dd')使用to_date()函数将日期和时间的字符串按特定格式转化成日期和时间
但是data数据类型不够精确,所以使用timestamp/时间戳,会得到‘年月日时分秒’。其中timestamp[(n)]可精确到小数点后9位。
timestamp[(n)] with time zone
:存储日期直接转化成数据库时区
timestamp[(n)] with local time zone
:存储日期时直接转化成数据库时区日期,读取日期时将数据库时区日期换成用户对话失去日期

1|0分区表

优点:1)减少维护工作量,2)均衡I/O,减少竞争,3)提高查询速度。

1|0类别

image

1)范围分区的关键字是”range",其中的数据可以根据分区键值指定的范围分布、当表结构采用范围分区时,首先考虑列应该符合范围分区的方法,其次取值范围,最后是边界问题。
2)散列分区HASGH分区,是在列的取值难以确定的情况下采用的分区方法,他通过指定分区编号确定将那行放在那个表空间中。
3)列表分区的关键字是“LIST”,如果表的某一列值可以枚举,则可以考虑对表进行列表分区。
4)组合分区,结合两个数据分区的方法可以成为一个组合分区方法,一次分区---->二次分区。
管理表分区
对于已经存在的表分区的某个表,如果要添加一个新的表分区,使用:alter table...add paratition
同时可以使用alter table...drop partition来删除范围分区和复合分区,同时其分区的数据也会被删除

1|0索引组织表

索引和数据一起储存,数据行依据表主键按索引进行保存。
i)减少了磁盘空间的使用
ii)提高了检索效率
iii)减少对缓冲区缓存的访问、
*适用于通过逐渐进行访问的表
*不适应一下情况

  • 经常更新的表
  • 不经常使用主键访问表

1|0

若一组表中有一些共同的列,则将这样一组表存储在相同的数据块中,相关也可放在一起。
利用簇,一个块可能包含多个表的数据
簇是一组共享相同数据块的多个表
将一起使用的表何在一起成簇可提高效率。
创建簇:簇->簇表->簇索引->数据

1|2创建表

基本语法:

CREATE [global|temorary] TABLE [schema.]table [(relational_properties)] [on commit {delete|preserve} rows] physical_properties table_properties;

SQL介绍:关系数据库的标准语言
image
组成部分:
数据定义语言(DDL)定义SQL模式、基本表、视图等结构。
数据操纵语言(DML)分成数据查询和数据更新两类。
数据控制语言(DCL)用于实现用户权限授予或者取消
嵌入式SQL语言的使用规范。

1|3关系表

简单创建关系表,不指定物理存储特性、分区属性且使用系统默认的参数
create table 表名(
列名 类型 【null | not null] [primary key],
[...]
[,表级完整性约束]);
注意:上述操作需要权限。
利用子查询建表:

create table table_name (column_name [column_level_constraint] [,....] [,table_level_constraint] [parameter_list])

使用子查询是不能包含lob类型和long 类型列且新表不会包含约束条件和列的缺省值

1|4数据完整性约束

unique、primary key、foreigen key、check.
constraint 则必须为约束条件命名。

1|0作用

  • 防止不合法的数据进入
  • 增强商业规则、限制数据表中的数据

1|0好处

  • 增加了商业规则
  • 使用存储过程、完整控制对数据的访问
  • 增强了触发存储数据库过程的商业规则

1|0约束条件

  • 他被视为数据库规则
  • 储存在数据字典
  • 防止错误删除
  • DBA有权删除任何约束条件,但只要条件存在,就必须遵守

image

2|0其他对象

2|1序列

用于产生自增不重复整数

1|0产生序列

image
sequence:将要创建的序列名称
INCREMENT BY n:指定序列的增量
START WITH n: 指定序列的开始位置
MAXVALUE n|NOMAXVALUE:指定序列的最大值n或无最大值
CYCLE|NO CYCLE:声明当前序列值达到最小值或者最大值时,可否循环使用

1|0删除序列

查看:user_sequences
删除语法:drop sequence sequence;
修改:alter sequence sequence;

NEXTVAL和CURRVAL
伪列,-nextval:列的下一个新的序号值;
-currval:列的当前序号值
使用方式:
select sequences.nextval from dual;
select sequences.currval from dual;
image
间隙即在一个表中看到的序列号值不连续、不完整的现象。

2|2视图和同义词

1|0同义词:对象的别名

简化书写以及隐藏对象的实际名称和所有者信息----安全性
创建:create [public] synonym synonym from [schema].object_name
删除:drop [public] synonym synonym;

1|0视图

  • 基于基表和(或)其他试图的逻辑表,本身不存放数据,其数据来源于对应的基表

  • 提供了从某个角度观察数据的窗口

  • 优点image

注意点:

  1. 创建视图的子查询不能使用序列
  2. 只有加别名才能使用rowid,rownum,level等伪列
  3. 创建的子查询一般不包括order by.

内嵌视图
内嵌视图是一个写在SQL语句内的带有一个别名的子查询,一般用于select 语句的from 子句部分,内嵌视图不是数据库对象


__EOF__

本文作者海&贼
本文链接https://www.cnblogs.com/hai-zei/p/18590979.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   海&贼  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示