Oracle数据类型
ROWID:伪列,是表中虚拟的列,是系统自动生成的每一行记录中都包含ROWID,表示行中的唯一地址,ROWID标识了Oracle如何定位行,通过ROWID能快速定位这行记录.
创建表实例
table student(
id char(8),
name varchar2(8),
sex char(2),
weight number(2,2),
age number(2),
birthday date
)
使用子查询创建表
新表的字段列表必须与子查询中的字段列表匹配
create table stu as select id,name from student
引用另一个用户的表
select * from scott.emp;
Oracle数据库中的表分为下面两类
用户表:由用户创建和维护的表的集合,它包含用户使用的数据.
数据字典:由Oracle服务器创建和维护的表的集合,它包含数据库信息,比如表的定义数据库结构的信息等,可以把它理解为表的表,由Oracle服务器创建和维护.如user_tables.
查询数据字典
select table_name
from user_tables
察看数据字典结构
desc user_tables
ALTER语句
添加列
alter table stu2 add(sex char(2))
添加多列
alter table stu2 add(sex char(3),age number(2))
修改列
alter table stu2 modify(sex char(1))
添加默认值
--默认值不会影响已经存在的值.
--默认值只影响新增加的字段值
alter table stu2 modify(sex default '男')
删除列
--列可以有也可以没有数据
--列被删除后,不能再恢复
--表中至少保留一列
--被外键引用的列,不能被删除
alter table stu2 drop column sex
删除表中两个字段
alter table stu2 drop (sex,age)
删除表
drop table stu2
重命名表
rename stu1 to stu2
截断表
--前提必须是表的所有者或者有delete any table系统权限来截断表
truncate table stu2
结果:清空一张表,效率高,与delete比较,它没有删除条件,而且不会触发表相关的触发器
约束
Oracle服务器用约束(Constraints)来防止无效数据输入到表中.
--表在插入,更新或者删除行的时候强制表中的数据遵循约束规则
--对于成功的操作,约束条件是必须被满足的
--如果表之间有依赖关系,使用约束可以防止表或表中相关数据的删除
约束类型
NOT Null
约束被定义在列级
id char(2) not null,
Unique约束
唯一性约束
--确保所在字段或者字段组合不出现重复值
--允许出现空值
1>id char(2) constraint stu1_id_uk unique,
2>constraint stu1_id_uk unique(id)
primary key约束
--非空且唯一
--一个表只允许一个主键
--唯一确定一个行数据的字段
--主键字段可以是单字段或者是多字段的组合
--Oracle为主键创建对应的唯一性索引
1>id char(8)constraint stu1_id_pk primary key,
2>constraint stu1_id_pk unique(id)
Foreign Key约束
外键确保了相关的两个字段的两个关系
--子表外键列的值必须在主表参照列值的范围内,强者为空
--外键参照的是一个主表的主键或者唯一键
主表被子表参照时,主表记录不允许被删除
--on delete cascade 指出当父表中的行被删除时,子表中依赖的行也将被级联删除.
--on delete set null当父表值被删除时,把涉及子表的外键值设置为空
表一级约束
constraint score_stu1_fk foreign key (sid) references stu1(id) on delete cascade,
列一级约束
定义列上
check约束