oracle创建表详解,Oracle中创建和管理表详解

Oracle中创建和管理表详解

2020-12-17

以下是对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,

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

相关文章

网友评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值