Oracle数据库学习教程

创建和管理表

数据库的对象:表、视图、索引、序列、同义词、存储过程、存储函数、触发器、包、包体、数据库链路(datalink)、快照。(12个)

  • 表:基本的数据存储集合,由行和列组成。
  • 视图:从表中抽出的逻辑上相关的数据集合。
  • 序列:提供有规律的数值。
  • 索引:提高查询的效率
  • 同义词:给对象起别名

表的基本操作

基本的数据存储集合,由行和列组成。表名和列名遵循如下命名规则:

  • 必须以字母开头
  • 必须在 1–30 个字符之间
  • 必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
  • 必须不能和用户定义的其他对象重名
  • 必须不能是Oracle 的保留字
  • Oracle默认存储是都存为大写
  • 数据库名只能是1~8位,datalink可以是128位,和其他一些特殊字符

1. 创建表create table

  • 必须拥有create table的权限,还有存储空间

1.8 Oracle数据库学习教程-创建和管理表_插入数据

rowid:行地址 ——伪列:创建索引用

​create table test1 (tid number, tname varchar2(20), hiredate date default sysdate)​

default的作用是,当向表中插入数据的时候,没有指定时间的时候,使用默认值sysdate。

​create table emp20 as select * from emp where deptno=20​

这样emp20在创建之初就有数据.where条件为假时,只拷贝表结构.

创建视图和创建表基本一样.只是把table换成view.

2.修改表alter table

​alter table test1 add image blob;​

追加一列blob类型的image列

​alter table test1 modify tname varchar2(40)​

改tname列varchar类型大小

​alter table test1 drop column image;​

删除image列

​alter table test1 rename column tname to username;​

将列tname改名为username.

删除列drop table

不能回滚,但支持闪回

​drop table emp10;​

可以去回收站找回.

​drop table test1 purge;​

彻底删除.

Oracle回收站:​​show recyclebin;​​,不是emp10,要使用复杂长的名字

清空回收站:​​purge recyclebin;​

1.8 Oracle数据库学习教程-创建和管理表_插入数据_02

1.8 Oracle数据库学习教程-创建和管理表_数据库_03

重命名表

​rename emp10 to emp9;​

约束

数据库约束有五种:

  • 主键约束(PRIMARY KEY)
  • 唯一性约束(UNIQUE)
  • 非空约束(NOT NULL)
  • 外键约束(FOREIGN KEY)
  • 检查约束(CHECK)
  1. 主键约束:唯一且非空
  1. 内联约束:​​create table demo(id NUMBER primary key,name varchar(20))​
  2. 外约束:​​create table demo(id NUMBER,name varchar(20),constraint pk_demo primary key(id));​
  1. pk_demo是约束名,任取,删除主键约束:​​alter table demo drop constraint pk_demo​
  2. 可以多个列项一起组成复合主键
  3. 如果需要将大量数据插入表中,可以暂时禁用约束,​​alter table demo disable constraint pk_demo​​,启用时用​​enable​
  1. 唯一性约束
  1. 内联约束:​​create table demo(id NUMBER unique,name varchar(20))​
  2. 使用方法类同主键约束
  1. 非空约束
  1. ​create table demo (id number,name varchar(20) not null);​
  2. ​alter table demo modify(name not null);​
  3. 删除:​​alter table demo modify(name null);​
  1. 外键约束:表与表的关系(子表某列的值只能在父表某列中取)
  1. ​create table child(... constraint fk_name foreign key(列1..) references parent(列a..) on delete [cascade/set null])​​;
  1. cascade:如果父项的一行被删,子表对应的都删除
  2. set null:如果父项一行被删,子表对应的都设null
  1. 删除,禁用,启用同上
  1. 检查约束:
  1. 添加检查约束后,插入数据时,只有符合条件才能正常插入.
  2. ​create table demo ( name varcher(20) check(条件),...);​
  3. ​constraint check_name check (条件);​
  4. 例子:​​create table parts(...,price NUMBER(price > 100))​
  5. 检查约束可添加到表上,​​ALTER TABLE table_name ADD CONSTRAINT check_constraint_name CHECK(expression);​

这部分没有深入学习.有需要得再进行学习.


作者:Ovins