展会信息港展会大全

Oracle中创建和管理表详解
来源:互联网   发布日期:2016-01-28 13:11:39   浏览:1334次  

导读:以下是对Oracle中的创建和管理表进行了详细的分析介绍,需要的朋友可以过来参考下SQL> /*SQL> 对于表的操作: 创建表,修改表(添加新的列,改变当前某些列,删除列),删除表SQ...

以下是对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 hr.employees;

select * from hr.employees

*

第 1 行出现错误:

ORA-00942: 表或视图不存在

SQL> --测试defaul值

SQL> create table test1

2(tid number,

3tname varchar(20),

4hiredate date default sysdate);

表已创建。

SQL> insert into test1(tid,tname) values(1,'Mary');

已创建 1 行。

SQL> select * from test1;

TID TNAMEHIREDATE

---------- -------------------- --------------

1 Mary12-6月 -11

SQL> --rowid rownum都是伪列

SQL> select rowid,rownum,empno from emp;

ROWIDROWNUMEMPNO

------------------ ---------- ----------

AAANA2AAEAAAAAsAAT11122

AAANA2AAEAAAAAsAAO21234

AAANA2AAEAAAAAsAAP31235

AAANA2AAEAAAAAsAAQ42222

AAANA2AAEAAAAAsAAR52345

AAANA2AAEAAAAAsAAS62346

AAANA2AAEAAAAAsAAA77369

AAANA2AAEAAAAAsAAB87499

AAANA2AAEAAAAAsAAC97521

AAANA2AAEAAAAAsAAD107566

AAANA2AAEAAAAAsAAE117654

ROWIDROWNUMEMPNO

------------------ ---------- ----------

AAANA2AAEAAAAAsAAF127698

AAANA2AAEAAAAAsAAG137782

AAANA2AAEAAAAAsAAH147788

AAANA2AAEAAAAAsAAI157839

AAANA2AAEAAAAAsAAJ167844

AAANA2AAEAAAAAsAAK177876

AAANA2AAEAAAAAsAAL187900

AAANA2AAEAAAAAsAAM197902

AAANA2AAEAAAAAsAAN207934

已选择20行。

SQL> --rowid:oracle维护一个地址,该地址指向了该行在硬盘上实际存储的位置

SQL> --关于varchar2和char

SQL> create table testchar

2( c char(5),

3v varchar(5));

表已创建。

SQL> insert into testchar values('a','b');

已创建 1 行。

SQL> select * from testchar;

CV

----- -----

ab

SQL> select concat(c,'#'),concat(v,'#') from testchar;

CONCAT CONCAT

------ ------

a# b#

SQL> --添加新列

SQL> alter table testchar

2addhiredate date;

表已更改。

SQL> desc testchar;

名称是否为空? 类型

----------------------------------------------------------------- -------- --------------------------------------------

CCHAR(5)

VVARCHAR2(5)

HIREDATEDATE

SQL> --修改表

SQL> alter table testchar

2modify c char(10);

表已更改。

SQL> desc testchar;

名称是否为空? 类型

----------------------------------------------------------------- -------- --------------------------------------------

CCHAR(10)

VVARCHAR2(5)

HIREDATEDATE

SQL> --删除列

SQL> alter table testchar

2drop hiredate;

drop hiredate

*

第 2 行出现错误:

ORA-00905: 缺失关键字

SQL> ed

已写入 file afiedt.buf

1alter table testchar

2* drop column hiredate

SQL> /

表已更改。

SQL> desc testchar;

名称是否为空? 类型

----------------------------------------------------------------- -------- --------------------------------------------

CCHAR(10)

VVARCHAR2(5)

SQL> host cls

SQL> --删除表

SQL> select * from tab;

TNAMETABTYPECLUSTERID

------------------------------ ------- ----------

DEPTTABLE

EMPTABLE

BONUSTABLE

SALGRADETABLE

EMP10TABLE

EMP101TABLE

TEST1TABLE

BIN$gNM24ey8RKW0vjhtZ7ZFsA==$0 TABLE

TESTDELETETABLE

TESTCHARTABLE

已选择10行。

SQL> drop table testdelete;

表已删除。

SQL> select * from tab;

TNAMETABTYPECLUSTERID

------------------------------ ------- ----------

DEPTTABLE

EMPTABLE

BONUSTABLE

SALGRADETABLE

EMP10TABLE

EMP101TABLE

TEST1TABLE

BIN$gNM24ey8RKW0vjhtZ7ZFsA==$0 TABLE

TESTCHARTABLE

BIN$aJrS9iffT4O1GcD0H3fepg==$0 TABLE

已选择10行。

SQL> --使用purge参数彻底删除表

SQL> drop table test1 purge;

表已删除。

SQL> select * from tab;

TNAMETABTYPECLUSTERID

------------------------------ ------- ----------

DEPTTABLE

EMPTABLE

BONUSTABLE

SALGRADETABLE

EMP10TABLE

EMP101TABLE

BIN$gNM24ey8RKW0vjhtZ7ZFsA==$0 TABLE

TESTCHARTABLE

BIN$aJrS9iffT4O1GcD0H3fepg==$0 TABLE

已选择9行。

SQL> --oracle的回收站

SQL> --查看回收站

SQL> show recyclebin;

ORIGINAL NAMERECYCLEBIN NAMEOBJECT TYPEDROP TIME

---------------- ------------------------------ ------------ -------------------

TESTDELETEBIN$aJrS9iffT4O1GcD0H3fepg==$0 TABLE2011-06-12:15:43:34

TESTDELETEBIN$gNM24ey8RKW0vjhtZ7ZFsA==$0 TABLE2011-06-12:14:51:43

SQL> --清空回收站

SQL> purge recyclebin;

回收站已清空。

SQL> show recyclebin;

SQL> --关于约束:

SQL> --创建一个表,包含所有约束

SQL> create table myuser

2( userID number constraint pk primary key,

3username varchar2(20) constraint c_name not null,

4gendervarchar2(2)constraint c_gender check (gender in ('男','女')),

5emailvarchar2(20) constraint c_email1 not null

6constraint c_email2 unique

7deptnonumber constraint fk refereneces dept(deptno)

8);

deptnonumber constraint fk refereneces dept(deptno)

*

第 7 行出现错误:

ORA-00907: 缺失右括号

SQL>create table myuser

2( userID number constraint pk primary key,

3username varchar2(20) constraint c_name not null,

4gendervarchar2(2)constraint c_gender check (gender in ('男','女')),

5emailvarchar2(20) constraint c_email1 not null

6constraint c_email2 unique,

7deptnonumber constraint fk refereneces dept(deptno)

8);

deptnonumber constraint fk refereneces dept(deptno)

*

第 7 行出现错误:

ORA-02253: 此处不允许约束条件说明

SQL> ed

已写入 file afiedt.buf

1create table myuser

2( userID number constraint pk primary key,

3username varchar2(20) constraint c_name not null,

4gendervarchar2(2)constraint c_gender check (gender in ('男','女')),

5emailvarchar2(20) constraint c_email1 not null

6constraint c_email2 unique,

7deptnonumber constraint fk references dept(deptno)

8* )

SQL> /

表已创建。

SQL> desc myuser;

名称是否为空? 类型

----------------------------------------------------------------- -------- --------------------------------------------

USERIDNOT NULL NUMBER

USERNAMENOT NULL VARCHAR2(20)

GENDERVARCHAR2(2)

EMAILNOT NULL VARCHAR2(20)

DEPTNONUMBER

SQL> insert into myuser values(1,'Tom','男','ddd@126.com',10);

已创建 1 行。

SQL> insert into myuser values(1,'Tom','男','ddd@126.com',10);

insert into myuser values(1,'Tom','男','ddd@126.com',10)

*

第 1 行出现错误:

ORA-00001: 违反唯一约束条件 (SCOTT.PK)

SQL> insert into myuser values(2,'Tom','啊','ddd@126.coddm',10);

insert into myuser values(2,'Tom','啊','ddd@126.coddm',10)

*

第 1 行出现错误:

ORA-02290: 违反检查约束条件 (SCOTT.C_GENDER)

SQL> --触发器也可以检查数据的正确与否

SQL> spool off

赞助本站

人工智能实验室

相关热词: 开发 编程 android

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港