数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle中创建和管理表详解


发布日期:2020年04月28日
 
Oracle中创建和管理表详解
以下是对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(Tomddd@com);
已创建
SQL> insert into myuser values(Tomddd@com);
insert into myuser values(Tomddd@com)
*
行出现错误:
ORA: 违反唯一约束条件 (SCOTTPK)
SQL> insert into myuser values(Tomddd@coddm);
insert into myuser values(Tomddd@coddm)
*
行出现错误:
ORA: 违反检查约束条件 (SCOTTC_GENDER)
SQL> 触发器也可以检查数据的正确与否
SQL> spool off

上一篇:如何对Oracle中的优化器进行评估优化

下一篇:在Oracle数据库中按用户名重建索引的方法