以下是对Oracle中的创建和管理表进行了详细的分析介绍
需要的朋友可以过来参考下
SQL> /*
SQL> 对于表的操作: 创建表修改表(添加新的列改变当前某些列删除列)删除表
SQL> 创建表: create table(需要create table的权限)
SQL> 修改表: alter table tablename add/modify/drop
SQL> 删除表drop table tablename
SQL> */
SQL> show user;
USER 为 "SCOTT"
SQL> 访问hr用户下的表
SQL> select * from hremployees;
select * from hremployees
*
第 行出现错误:
ORA: 表或视图不存在
SQL> 测试defaul值
SQL> create table test
(tid number
tname varchar()
hiredate date default sysdate);
表已创建
SQL> insert into test(tidtname) values(Mary);
已创建 行
SQL> select * from test;
TID TNAME HIREDATE
Mary 月
SQL> rowid rownum都是伪列
SQL> select rowidrownumempno from emp;
ROWID ROWNUM EMPNO
AAANAAAEAAAAAsAAT
AAANAAAEAAAAAsAAO
AAANAAAEAAAAAsAAP
AAANAAAEAAAAAsAAQ
AAANAAAEAAAAAsAAR
AAANAAAEAAAAAsAAS
AAANAAAEAAAAAsAAA
AAANAAAEAAAAAsAAB
AAANAAAEAAAAAsAAC
AAANAAAEAAAAAsAAD
AAANAAAEAAAAAsAAE
ROWID ROWNUM EMPNO
AAANAAAEAAAAAsAAF
AAANAAAEAAAAAsAAG
AAANAAAEAAAAAsAAH
AAANAAAEAAAAAsAAI
AAANAAAEAAAAAsAAJ
AAANAAAEAAAAAsAAK
AAANAAAEAAAAAsAAL
AAANAAAEAAAAAsAAM
AAANAAAEAAAAAsAAN
已选择行
SQL> rowid:oracle维护一个地址该地址指向了该行在硬盘上实际存储的位置
SQL> 关于varchar和char
SQL> create table testchar
( c char()
v varchar());
表已创建
SQL> insert into testchar values(ab);
已创建 行
SQL> select * from testchar;
C V
a b
SQL> select concat(c#)concat(v#) from testchar;
CONCAT CONCAT
a # b#
SQL> 添加新列
SQL> alter table testchar
add hiredate date;
表已更改
SQL> desc testchar;
名称 是否为空? 类型
C CHAR()
V VARCHAR()
HIREDATE DATE
SQL> 修改表
SQL> alter table testchar
modify c char();
表已更改
SQL> desc testchar;
名称 是否为空? 类型
C CHAR()
V VARCHAR()
HIREDATE DATE
SQL> 删除列
SQL> alter table testchar
drop hiredate;
drop hiredate
*
第 行出现错误:
ORA: 缺失关键字
SQL> ed
已写入 file afiedtbuf
alter table testchar
* drop column hiredate
SQL> /
表已更改
SQL> desc testchar;
名称 是否为空? 类型
C CHAR()
V VARCHAR()
SQL> host cls
SQL> 删除表
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
EMP TABLE
EMP TABLE
TEST TABLE
BIN$gNMeyRKWvjhtZZFsA==$ TABLE
TESTDELETE TABLE
TESTCHAR TABLE
已选择行
SQL> drop table testdelete;
表已删除
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
EMP TABLE
EMP TABLE
TEST TABLE
BIN$gNMeyRKWvjhtZZFsA==$ TABLE
TESTCHAR TABLE
BIN$aJrSiffTOGcDHfepg==$ TABLE
已选择行
SQL> 使用purge参数彻底删除表
SQL> drop table test purge;
表已删除
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
EMP TABLE
EMP TABLE
BIN$gNMeyRKWvjhtZZFsA==$ TABLE
TESTCHAR TABLE
BIN$aJrSiffTOGcDHfepg==$ TABLE
已选择行
SQL> oracle的回收站
SQL> 查看回收站
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
TESTDELETE BIN$aJrSiffTOGcDHfepg==$ TABLE :::
TESTDELETE BIN$gNMeyRKWvjhtZZFsA==$ TABLE :::
SQL> 清空回收站
SQL> purge recyclebin;
回收站已清空
SQL> show recyclebin;
SQL> 关于约束:
SQL> 创建一个表包含所有约束
SQL> create table myuser
( userID number constraint pk primary key
username varchar() constraint c_name not null
gender varchar() constraint c_gender check (gender in (男女))
email varchar() constraint c_email not null
constraint c_email unique
deptno number constraint fk refereneces dept(deptno)
);
deptno number constraint fk refereneces dept(deptno)
*
第 行出现错误:
ORA: 缺失右括号
SQL> create table myuser
( userID number constraint pk primary key
username varchar() constraint c_name not null
gender varchar() constraint c_gender check (gender in (男女))
email varchar() constraint c_email not null
constraint c_email unique
deptno number constraint fk refereneces dept(deptno)
);
deptno number constraint fk refereneces dept(deptno)
*
第 行出现错误:
ORA: 此处不允许约束条件说明
SQL> ed
已写入 file afiedtbuf
create table myuser
( userID number constraint pk primary key
username varchar() constraint c_name not null
gender varchar() constraint c_gender check (gender in (男女))
email varchar() constraint c_email not null
constraint c_email unique
deptno number constraint fk references dept(deptno)
* )
SQL> /
表已创建
SQL> desc myuser;
名称 是否为空? 类型
USERID NOT NULL NUMBER
USERNAME NOT NULL VARCHAR()
GENDER VARCHAR()
EMAIL NOT NULL VARCHAR()
DEPTNO NUMBER
SQL> insert into myuser values(Tom男ddd@com);
已创建 行
SQL> insert into myuser values(Tom男ddd@com);
insert into myuser values(Tom男ddd@com)
*
第 行出现错误:
ORA: 违反唯一约束条件 (SCOTTPK)
SQL> insert into myuser values(Tom啊ddd@coddm);
insert into myuser values(Tom啊ddd@coddm)
*
第 行出现错误:
ORA: 违反检查约束条件 (SCOTTC_GENDER)
SQL> 触发器也可以检查数据的正确与否
SQL> spool off