手机
当前位置:查字典教程网 >编程开发 >Oracle教程 >Oracle中创建和管理表详解
Oracle中创建和管理表详解
摘要:SQL>/*SQL>对于表的操作:创建表,修改表(添加新的列,改变当前某些列,删除列),删除表SQL>创建表:createtable(需要c...

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,

3 tname varchar(20),

4 hiredate date default sysdate);

表已创建。

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

已创建 1 行。

SQL> select * from test1;

TID TNAME HIREDATE

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

1 Mary 12-6月 -11

SQL> --rowid rownum都是伪列

SQL> select rowid,rownum,empno from emp;

ROWID ROWNUM EMPNO

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

AAANA2AAEAAAAAsAAT 1 1122

AAANA2AAEAAAAAsAAO 2 1234

AAANA2AAEAAAAAsAAP 3 1235

AAANA2AAEAAAAAsAAQ 4 2222

AAANA2AAEAAAAAsAAR 5 2345

AAANA2AAEAAAAAsAAS 6 2346

AAANA2AAEAAAAAsAAA 7 7369

AAANA2AAEAAAAAsAAB 8 7499

AAANA2AAEAAAAAsAAC 9 7521

AAANA2AAEAAAAAsAAD 10 7566

AAANA2AAEAAAAAsAAE 11 7654

ROWID ROWNUM EMPNO

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

AAANA2AAEAAAAAsAAF 12 7698

AAANA2AAEAAAAAsAAG 13 7782

AAANA2AAEAAAAAsAAH 14 7788

AAANA2AAEAAAAAsAAI 15 7839

AAANA2AAEAAAAAsAAJ 16 7844

AAANA2AAEAAAAAsAAK 17 7876

AAANA2AAEAAAAAsAAL 18 7900

AAANA2AAEAAAAAsAAM 19 7902

AAANA2AAEAAAAAsAAN 20 7934

已选择20行。

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

SQL> --关于varchar2和char

SQL> create table testchar

2 ( c char(5),

3 v varchar(5));

表已创建。

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

已创建 1 行。

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

2 add hiredate date;

表已更改。

SQL> desc testchar;

名称 是否为空? 类型

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

C CHAR(5)

V VARCHAR2(5)

HIREDATE DATE

SQL> --修改表

SQL> alter table testchar

2 modify c char(10);

表已更改。

SQL> desc testchar;

名称 是否为空? 类型

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

C CHAR(10)

V VARCHAR2(5)

HIREDATE DATE

SQL> --删除列

SQL> alter table testchar

2 drop hiredate;

drop hiredate

*

第 2 行出现错误:

ORA-00905: 缺失关键字

SQL> ed

已写入 file afiedt.buf

1 alter table testchar

2* drop column hiredate

SQL> /

表已更改。

SQL> desc testchar;

名称 是否为空? 类型

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

C CHAR(10)

V VARCHAR2(5)

SQL> host cls

SQL> --删除表

SQL> select * from tab;

TNAME TABTYPE CLUSTERID

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

DEPT TABLE

EMP TABLE

BONUS TABLE

SALGRADE TABLE

EMP10 TABLE

EMP101 TABLE

TEST1 TABLE

BIN$gNM24ey8RKW0vjhtZ7ZFsA==$0 TABLE

TESTDELETE TABLE

TESTCHAR TABLE

已选择10行。

SQL> drop table testdelete;

表已删除。

SQL> select * from tab;

TNAME TABTYPE CLUSTERID

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

DEPT TABLE

EMP TABLE

BONUS TABLE

SALGRADE TABLE

EMP10 TABLE

EMP101 TABLE

TEST1 TABLE

BIN$gNM24ey8RKW0vjhtZ7ZFsA==$0 TABLE

TESTCHAR TABLE

BIN$aJrS9iffT4O1GcD0H3fepg==$0 TABLE

已选择10行。

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

SQL> drop table test1 purge;

表已删除。

SQL> select * from tab;

TNAME TABTYPE CLUSTERID

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

DEPT TABLE

EMP TABLE

BONUS TABLE

SALGRADE TABLE

EMP10 TABLE

EMP101 TABLE

BIN$gNM24ey8RKW0vjhtZ7ZFsA==$0 TABLE

TESTCHAR TABLE

BIN$aJrS9iffT4O1GcD0H3fepg==$0 TABLE

已选择9行。

SQL> --oracle的回收站

SQL> --查看回收站

SQL> show recyclebin;

ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME

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

TESTDELETE BIN$aJrS9iffT4O1GcD0H3fepg==$0 TABLE 2011-06-12:15:43:34

TESTDELETE BIN$gNM24ey8RKW0vjhtZ7ZFsA==$0 TABLE 2011-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,

3 username varchar2(20) constraint c_name not null,

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

5 email varchar2(20) constraint c_email1 not null

6 constraint c_email2 unique

7 deptno number constraint fk refereneces dept(deptno)

8 );

deptno number constraint fk refereneces dept(deptno)

*

第 7 行出现错误:

ORA-00907: 缺失右括号

SQL> create table myuser

2 ( userID number constraint pk primary key,

3 username varchar2(20) constraint c_name not null,

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

5 email varchar2(20) constraint c_email1 not null

6 constraint c_email2 unique,

7 deptno number constraint fk refereneces dept(deptno)

8 );

deptno number constraint fk refereneces dept(deptno)

*

第 7 行出现错误:

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

SQL> ed

已写入 file afiedt.buf

1 create table myuser

2 ( userID number constraint pk primary key,

3 username varchar2(20) constraint c_name not null,

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

5 email varchar2(20) constraint c_email1 not null

6 constraint c_email2 unique,

7 deptno number constraint fk references dept(deptno)

8* )

SQL> /

表已创建。

SQL> desc myuser;

名称 是否为空? 类型

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

USERID NOT NULL NUMBER

USERNAME NOT NULL VARCHAR2(20)

GENDER VARCHAR2(2)

EMAIL NOT NULL VARCHAR2(20)

DEPTNO NUMBER

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

【Oracle中创建和管理表详解】相关文章:

oracle正则表达式regexp_like的用法详解

Oracle Data Guard创建物理Standby数据库

oracle 索引组织表的深入详解

深入Oracle的left join中on和where的区别详解

Oracle多表级联更新详解

Oracle轻松取得建表和索引的DDL语句

学习Oracle的一些建议

Oracle表空间管理

oracle 创建表空间步骤代码

Oracle的不安全因素及几点说明

精品推荐
分类导航