表
定义:oracle数据库的表(Table)是最基本的数据对象。
形式:表具有简单的二维表结构,由行(Row)和列(Column)组成,每一列又被称为一个字段
。
用户表类型
- 普通表:最为常用的表类型
- 分区表:可以对大表中的数据在物理上进行分区存储
- 临时表:专门用于保存临时数据
表的使用
创建表
需要做的事前准备
设计表的名称、字段名称、数据类型以及各类约束(主键、外键、非空、唯一性约束)等
然后使用create table 语句
create table [schma.]table_name(
column_name datatype [colun_level_constraint]
[,column_name datatype column_leavel_constraint]
[,table_level_constraint]
)
[parameter_list]
table_name:表名,最长可以达到30个字符。可以使用大小写字母、数字、下划线、$、#等符号。
column_name:字段名,命名规则和表名相同。
datatype:数据类型,可以设置字符、数值、日期等类型。
column_level_constraint:用于设置列级约束,包括主键、外键、非空、唯一性以及用户检查约束等。
table_level_constraint:表级约束,包括主键、外键以及用户检查约束等;当一个约束中必须包含一个以上的列时,必须使用表级约束。(暂时没用到)
parameter_list:(暂时没用到)
例:
create table tb_s(
sno char(6) primary key,
sname char(10),
sex char(1) check(sex in ('M','F')),
birthday date
)
修改表
列的增删改
增加字段:alter table_name add(column_name datatype [default value][null|not null])
修改字段:alter table_name modify(column_name datatype [default value][null|not null])
删除字段:alter table_name drop(column_name,...)
视图
定义:试图(View)的本质是一张虚拟表,其本身不存储实际的业务数据。
试图可以基于一个表或多个表进行创建,其本质是对这些表的预定义查询,这些表被称为基表。
创建视图
语句
create[or replace] [force|noforce] view [schema.]view_name
[(column_name_list)]
as
select ... from...
[with check option][constraint constraint_name]
[with read only];
//说明
or replace:如果存在同名视图,新视图会覆盖旧视图
force|noforce:是否在基表不存在或不具有使用基表权限的情况下创建视图,force为强制创建,noforce为不强制创建,且为默认选项。
column_name_list:视图的列名列表,列名个数必须与select查询中的列的个数相同。
select:查询语句
with check option:基于视图进行的数据增删查改的操作,必须是select查询所能查询到的数据。默认不开启。
constraint:为使用with check option选项时设置约束的名称
with read only :只读。
修改视图
语句
create replace view view_name
as
select... from ...
删除视图
drop view view_name;
序列
序列(Sequence)用于产生一系列唯一数值的数据库对象,其产生数值具有按步长连续递增的特点。常用于表的主键值递增以及记录计数。
创建序列
语句
create sequence sequence_name
[increment by n]
[start with n]
[maxvalue n|nomaxvalue]
[minvalue n|nominvalue]
[{cycle|nocycle}]
[{cache n|nocache}]
//说明
increment by;指定序列的步长(增长多少),可以是正数或者负数,默认为1。
start with:指定初始值,默认为1。
maxvalue n|nomaxvalue、minvalue n|nominvalue:最大/最小值为n,或有无最大最小值。
cycle|nocycle:当序列达到最大值是是否循环,cycle表示循环,nocycle表示不循环。
cache|nocache:用于是否在徐通缓存预先分配一组序列值,cache n表示换成n个序列值,默认为20个,nocache表示不缓存。
修改序列
语句
alter sequence sequence_name 参数 参数值
删除序列
drop sequence sequence_name;