Oracle编程入门经典 第3章 建立以及管理用户和表

  • 数据定义语言(DDL)。
  • 怎么建立大家温馨的用户账号。
  • 可以用来Oracle表的例外数据类型。
  • 何以在表上建立约束。
  • 什么样利用数据词典获取与数据库中目的有关的音讯。

3.1 数据定义语言

DDL平常用于建立和管理数据库。它可以动用SQL建立目的、配置数据库安全、管理总括数据以及已毕其余成效。

在第2章中,我COMMIT和ROLLBACK。在表中执行插入、更新和删除等操作之后拔取COMMIT语句,就足以使修改结果在用户数据库中永远存在。

当用户向数据库发出DDL语句的时候,则在讲话执行前后就发出隐匿的COMMIT语句(纵然DDL失利)。那是因为DDL不可能开展回滚,而且,那也意味着DDL语句使用从前其余没有交到的变动也不可见进行回滚。

在DDL完毕之后(由于它无法举行回滚),ORACLE会调用另一个隐式的COMMIT,为用户初阶一个新的事务处理。伪代码如下:

Insert into some_table values(…):

Insert into some_table values(…):

Create table another_table(column1 data type,column2 data type);

Insert into another_table values(…);

Insert into another_table values(…);

那么Oracle就会在后台为我们举行如下操作:

Insert into some_table values(…):

Insert into some_table values(…):

Commit;

Create table another_table(column1 data type,column2 data type);

Commit;

Insert into another_table values(…);

Insert into another_table values(…);

一旦展开ROLLBACK,前三条记下仍旧存在,ANOTHER_TBALE表中的三条记下就会丢掉。

合法的Oracle标识符

Oracle坚守如下规则:

  • 它无法是Oracle保留字(如SELECT等)
  • 它必须利用1到30个字符。例外的景况数据库的称号(最多8个字符)和数据库链接(最多128个字符)
  • 它必须以数据库字符集中的字母字符先河
  • 它只能够够蕴含数据库字集中的假名字符,以及以下字符:#、$、_(其余,数据库连接可以涵盖‘@’和‘.’)
  • 它不可见包括(单或者双)引号

如下的标识符列表为不合法:

  • %EMP(不能够包含%)
  • SELECT(Oracle保留字)
  • THIS_NAME_IS_LONGER_THAN_30_CHARACTERS
  • 1STCOLUMN(无法采纳数字初阶)
  • SEAN’S_TABLE(不可能包括引号)

3.2 表空间

在Oracle中,数据库被分割成为了号称表空间的单身存储单元。这几个表空间是存放表、懿旨以及任何消耗磁盘空间的数据库对象的地点。

3.3 用户

用户可能要为自己的多少建立自己的用户账号。那项工作很首要,因为用户应该避免拔取Oracle提供的SYS和SYSTEM账号,或者大家早已在后边的章节中选择过的SCOTT账号。

3.3.1 建立用户

DBA角色是一个享有当先120个系统特权的角色。

CREATE_SESSION是一个系统特权,它可以为用户提供连接数据库的力量。

IDENTIFIED BY <标识符>是用来交付用户的密码(如下密码为zyf)

以SYSTEM最高权力帐户进入,建立用户账号,并赋予DBA特权:

SQL> create user oracle_admin identified by zyf

2 /

用户已创建

SQL> grant create session,dba to oracle_admin;

授权成功。

注意:

DBA角色可以让用户完全控制数据库,固然那种任务在数据库的时候是完结需要的,然则假使它左右在错误的用户手里,也将是不行危险的。

在建立USER的时候,一些可用的选项如下所示:

  • DEFAULT
    TABLESPACE。除非另行规定,否则用户所确立的目的都会蕴藏在它们用户的默许表空间中。倘使没有明确规定,这几个默许值就是SYSTEM。
  • TEMPORARY
    TABLESPACE。例如在询问中开展排序要求空间那样的临时字段,都会在用户的临时表空间中举办分配。在Oracle
    9i以前,那么些默认值都是SYSTEM表空间。在Oracle
    9i中,默许的临时表空间是TEMP。
  • QUOTA。用户可以为它们存储数据的表空间赋予配额。那是用户可以在表空间中分配的最大空间数。
  • PASSWORD
    EXPIRE。使用这么些子句意味着用户在她们率先次登录的时候必须改变他们的密码。

3.3.2 改变用户

当保管数据库的时候,用户可能会有种种缘由来改变用户账号:

  • 重置用户密码
  • 锁定账号和平解决除账号锁定
  • 修改用户的默许表空间仍然临时表空间
  • 修改表空间配额

1. 重置密码

ALTER USER命令以及IDENTIFIED BY子句,改变密码。

SQL> create user oracle_admin identified by zyf

2 /

用户已创建

SQL> grant create session,dba to oracle_admin;

授权成功。

SQL> alter user oracle_admin identified by oracle_admin;

用户已更改。

2. 锁定账号以及排除账号锁定

在Oracle中,可以将用户账号锁定,以使它们无法运用。如下语法:

ALTER USER <username> ACCOUNT [LOCK|UNLOCK];

SQL> connect oracle_admin/oracle_admin;

已连接。

SQL> connect system/zyf

已连接。

SQL> alter user oracle_admin account lock;

用户已更改。

SQL> connect oracle_admin/oracle_admin;

ERROR:

ORA-28000: the account is locked

警告: 您不再连接到 ORACLE。

3. 修改表空间设置

SQL> select tablespace_name,contents from dba_tablespaces;

TABLESPACE_NAME CONTENTS

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

SYSTEM PERMANENT

UNDOTBS1 UNDO

TEMP TEMPORARY

CWMLITE PERMANENT

DRSYS PERMANENT

EXAMPLE PERMANENT

INDX PERMANENT

ODM PERMANENT

TOOLS PERMANENT

USERS PERMANENT

XDB PERMANENT

已选择11行。

将默认表空间设置为USERS,临时表空间设置为TEMP。

SQL> alter user oracle_admin default tablespace users temporary tablespace temp;

用户已更改。

4. 修改表空间配额

UNLIMITED关键字提出用户可以在USERS表空间中贮存数据,直到它被完全占满。大家设置了TEMP表空间中的存储上限为10M,SYSTEM表空间中为0M。

SQL> alter user oracle_admin

2 quota unlimited on users

3 quota 10M on temp

4 quota 0M on system

5 /

用户已更改。

3.3.3 删除用户

为了删除用户,使用DROP USER命令。

CASCADE即使将其用于DROP
USER命令末尾,就足以让Oracle知道应该在从数据库移走用户以前,删除用户的有所目的(例如:表、视图、以及经过代码)。

考试:建立和删除用户

(1) 连接ORACLE_ADMIN账号,建表DROPME授权

SQL> connect oracle_admin/oracle_admin

已连接。

SQL> create user dropme

2 identified by doomed

3 default tablespace users

4 temporary tablespace temp

5 quota unlimited on users

6 /

用户已创建

SQL> grant create session,create table to dropme

2 /

授权成功。

(2) 作为DROPME用户连接数据库,并且成立一个之类所示的简便表:

SQL> connect dropme/doomed

已连接。

SQL> create table employees_backup(

2 employee_id number,

3 last_name varchar2(30),

4 email varchar2(100)

5 )

6 /

表已创建。

(3) 使用ORACLE_ADMIN账号(它富有DROP USER特权)删除用户DROPME:

SQL> connect oracle_admin/oracle_admin

已连接。

SQL> drop user dropme;

drop user dropme

*

ERROR 位于第 1 行:

ORA-01922: 必须指定 CASCADE 以删除'DROPME'

(4) DROPME用户所有一个表,使用CASCADE关键字,如下所示:

SQL> drop user dropme cascade;

用户已丢弃

3.4 Oracle数据类型

3.4.1 数值类型

数值类型可以用于存储整数、浮点值以及实数。在Oracle中的NUMBER数据类型具有精度(precision)和界定(scale)。精度是数值中的数字总数,可以为1到38个数字之间的别样值。范围取值可以从0到3,它发挥了其余给定数值的小数点左边的位数。

<column_name>NUMBER(precision[, scale])

宣称示例如:NUMBER(即NUMBER(38))、NUMBER(9,2)、NUMBER(4,10)。

3.4.2 字符类型

1. CHAR

CHAR数据长度的数值将会让SQL使用空格填充剩余长度。例如:

SQL> create table authorized_blends(

2 bean_name char(50)

3 );

表已创建。

SQL> insert into authorized_blends values('Papua New Guinea');

已创建 1 行。

SQL> insert into authorized_blends values('Ethiopia');

已创建 1 行。

SQL> insert into authorized_blends values('Sumatra');

已创建 1 行。

SQL> select bean_name,length(bean_name)

2 from authorized_blends

3 /

BEAN_NAME LENGTH(BEAN_NAME)

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

Papua New Guinea 50

Ethiopia 50

Sumatra 50

2. NCHAR

NCHAR数据类型使用了与CHAR数据类型大体相同的不二法门来囤积固定长度的字符数据。两者之间的差异仅仅在于在数据库中蕴藏NCHAR数据的法子差别。

3. VARCHAR2

VARCHAR2数据类型与CHAR类型格外相像,两者之间的差距之处在于类型VARCHAR2的扬言是可变长度,而非固定长度(不会像CHAR一样有空格对值的填写)。

4. NVARCHAR2

NVARCHAR2列可以储存可变长度的基于字符的数据,它大致使用与VARCHAR2数据类型相同的主意进行工作。它们两者之间的严重性出入是NVARCHAR2数据在数据库中的存储形式。

5. 尺寸语义

Oracle不可见活动考虑到多字节字符集。Oracle
9i中得以在列大小附加BYTE或者CHAR,以告知Oracle如何解释数值。

6. RAW

RAW数据类型与VARCHAR2相似,尽管RAW列可以用于存储可变长度的二进制数据,而不是字符数据。RAW列的最大尺寸是2000个字节。

7. LONG和LONG RAW

LONG数据类型可以用来在独立的列中存储大数据量的可变长度字符数据。LONG列的分寸最高可以为2GB。在Oracle8中,可以应用CLOB或者NCLOB数据类型对其开展替代。

LONG
RAW数据类型就好似它们的名字所讲述的那么,是一个得以远远当先2000个字节的RAW数据类型。当评释LONG
RAW列的时候,不用规定其尺寸。与此相对,LONG
RAW列可以包含最高到2GB的二进制数据如故字节。在Oracle
8i中,提出管理员使用BLOB或者BFILE数据类型。

8. 大对象

在Oracle
8中引入了大目标或者叫做LOB。它们为根据二进制和字符的大面积数据,提供了比从前的LONG
RAW数据类型列灵活的储存机制。更加是:

  • LOB在数据库中蕴藏物理数据时,可以举办局地挑选。
  • LOB可以在Oracle对象类型中运用。
  • LOB协助对数码的支行访问。
  • 每种类型的LOB都得以储存4GB的数据。
  • 在Oracle提供的PL/SQL程序包DBMS_LOB中,提供了拍卖LOB的效果。
  1. LOB类型

有一对见仁见智档次的LOB:

  • 二进制大对象(BLOB)。
  • 字符大对象(CLOB)。
  • 江山字符大对象(NCLOB)。
  • 二进制文件(BFILE)。

10. LOB定位符

LOB定位符是在应用外挂形式或者在BFILE中蕴藏LOB的时候,在表的记录中其实存储的目的。它寻常是一个针对性实际LOB的指针,可以告知Oracle如何在须要的时候得到LOB。那种艺术得以避免在拓展全表搜索的时候,让Oracle遍历表的数码块中储存的重重的隐含LOB的笔录。通过动用在表中存储的LOB定位符来代替实际数目,Oracle就可以读取表的数据块,而使LOB定位符的震慑很小。

3.4.3 日期和岁月

Oracle提供如下类其他岁月数据类型:

  • DATE
  • TIMESTAMP
  • TIMESTAMP WITH TIME ZONE*
  • TIMESTAMP WITH LOCAL TIME ZONE*
  • INTERVAL YEAR TO MONTH*
  • INTERVAL DAY TO SECOND*

这个标记了*的种类只设有于Oracle 9i中。

1. DATE

TO_DATE和SYSDATE

SQL> connect oracle_admin/oracle_admin;

已连接。

SQL> create table company_events(

2 event_name varchar2(100),

3 event_date date)

4 /

表已创建。

SQL> insert into company_events(event_name,event_date) values('Created DATE Sample code',SYSDATE);

SQL> insert into company_events(event_name,event_date) values('Oracle Open World',to_date('2-12月-2001','DD-MON-YYYY'));

SQL> column event_name format a40;

SQL> select * from company_events;

EVENT_NAME EVENT_DATE

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

Created DATE Sample code 31-12月-12

Oracle Open World 02-12月-01

SHOW PARAMETERS来判断我们数据库的默许日期格式,如下所示:

SQL> show parameters nls_date_format;

NAME TYPE VALUE

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

nls_date_format string

DATE关键字规定日期值,如下语法达成:

SQL> insert into company_events(event_name,event_date) values('Created an Oracle 9i DATE value',DATE

'2001-10-11');

已创建 1 行。

SQL> select * from company_events;

EVENT_NAME EVENT_DATE

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

Created DATE Sample code 31-12月-12

Oracle Open World 02-12月-01

Created an Oracle 9i DATE value 11-10月-01

2. TIMESTAMP

<column_name> TIMESTAMP [SECONDS_PRECISION]

例如:

SQL> create table other_company_events(

2 event_name varchar2(100),

3 event_date date,

4 event_timestamp timestamp);

表已创建。

SQL> insert into other_company_events(event_name,event_date,event_timestamp) values('Created COMPAN

_EVENTS table',sysdate,sysdate);

已创建 1 行。

SQL> column event_name format a28;

SQL> column event_date format a18;

SQL> column event_timestamp format a28;

SQL> select event_name,to_char(event_date,'DD-MON-YY HH24:MI:SS') event_date,event_timestamp from ot

her_company_events;

EVENT_NAME EVENT_DATE EVENT_TIMESTAMP

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

Created COMPANY_EVENTS table 31-12月-12 16:26:5 31-12月-12 04.26.59.000000

9 下午

在那几个事例中,大家向五个列EVENT_DATE和EVENT_TIMESTAMP中插入了SYSDATE。当从这么些表中甄选数据的时候,大家就可知见到TIMESTAMP列为SECOND字段提供了6位数字的精度,而DATE列没有存储小数部分的秒。

3. TIMESTAMP WITH TIME ZONE

TIMESTAMP WITH TIME ZONE数据类型是TIMESTAMP数据类型的扩张。语法如下:

<column_name> TIMESTAMP [SECONDS_PRECISION] WITH TIME ZONE

(1) 建立名为CONFERENCE_CALLS的表,然后插入与八个电话会议关于的音讯:

SQL> create table conference_calls(

2 title varchar2(100),

3 phone varchar2(20),

4 place varchar2(100),

5 starts timestamp with time zone)

6 /

表已创建。

SQL> insert into conference_calls(title,phone,place,starts)

2 values('Sales Strategy','212.123.4567','Washington',TIMESTAMP '2001-12-01 15:00:00.000000 EST')

已创建 1 行。

(2) 查询所处的时区

SQL> select dbtimezone from dual;

DBTIME

------

-07:00

(3) 查询所有在现阶段当地时间15:00的笔录

SQL> select title,phone from conference_calls

2 where starts=TIMESTAMP '2001-12-01 15:00:00.000000 -7:00';

未选定行

4. TIMESTAMP WITH LOCAL TIME ZONE

TIMESTAMP WITH LOCAL TIME ZONE与TIMESTAMP WITH TIME
ZONE大体相同,只是在前一种意况中,要根据用户会话时区在列中储存时区数据。语法如下:

<column_name> TIMESTAME [SECONDS_PRECISION] WITH LOCAL TIME ZONE

如:

SQL> create table local_conference_calls(

2 title varchar2(100),

3 phone varchar2(20),

4 place varchar2(100),

5 starts timestamp with local time zone);

表已创建。

SQL> insert into local_conference_calls(title,phone,place,starts)

2 values('Sales Strategy','212.123.4567','New York',TIMESTAMP '2001-12-01 15:00:00.000000 EST');

已创建 1 行。

ALTER SESSION SQL语句为我们的对话设置时区。

SQL> alter session set time_zone='-05:00';

会话已更改。

SQL> column title format a25;

SQL> column stats format a30;

SQL> select title,starts from local_conference_calls;

TITLE

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

STARTS

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

Sales Strategy

01-12月-01 03.00.00.000000 下午

英国时区:

SQL> alter session set time_zone='GMT';

会话已更改。

SQL> select title,starts from local_conference_calls;

TITLE

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

STARTS

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

Sales Strategy

01-12月-01 08.00.00.000000 下午

5. INTERVAL YEAR TO MONTH

它可以用来存储月或者年的时刻周期。

INTERVAL YEAR [(YEAR_PRECISION)] TO MONTH

本条年精度(YEAR_PRECISION)值规定了可以在间隔值的YEAR字段中富含的数字数量。合法值为0到9,默许值是2。

6. INTERVAL DAY TO SECOND

INTERVAL DAY TO SECOND是Oracle
9i中的另一个间距数据类型,它可以用来存储天、小时、分钟以及秒。语法如下:

INTERVAL DAT [(DAY_PRECISION)] TO SECOND [(SECONDS_PRECISION)]

如下:

SQL> create table employee_breaks(

2 employee_id number,

3 break_reason varchar2(100),

4 break_time interval day(1) to second(2));

表已创建。

SQL> insert into employee_breaks values(100,'COFFEE BREAK',TIMESTAMP '2001-09-03 12:47:00.000000'-TI

MESTAMP '2001-09-03 13:13:00.000000');

已创建 1 行。

SQL> column break_reason format a20;

SQL> column break_time format a20;

SQL> select employee_id,break_reason,break_time from employee_breaks;

EMPLOYEE_ID BREAK_REASON BREAK_TIME

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

100 COFFEE BREAK -0 00:26:00.00

3.4.4 ANSI数据类型

Oracle协理工业标准的ANSI数据类型,以及IBM
DB/2和SQL/DS数据类型。这几个系列出于一些缘故会很有用:

  • 一对数据库设计工具得以导出可以被其余品类的数据库使用的ANSI包容SQL。
  • 有的在任何数据库上利用的SQL脚本不要求更换成为Oracle语法就可以在Oracle中应用。

1. 数值数据类型转换表

表3-2 数值数据类型转换表

可用SQL数据类型

Oracle等价数据类型

NUMERIC(PRECISION,SCALE)

NUMBER(PRECISION,SCALE)

DECIMAL(PRECISION,SCALE)

NUMBER(PRECISION,SCALE)

INTEGER

NUMBER(38)

INT

NUMBER(38)

SMALLINT

NUMBER(38)

FLOAT(b)

NUMBER

DOUBLE PRECISION

NUMBER

REAL

NUMBER

2. 字符数据类型转换表

表3-3 字符数据类型转换表

可用SQL数据类型

Oracle等价数据类型

CHARACTER(size)

CHAR(size)

CHAR(size)

CHAR(size)

CHARACTER VARYING(size)

VARCHAR(size)

CHAR VARYING(size)

VARCHAR(size)

NATIONAL CHARACTER(size)

NCHAR(size)

NATIONAL CHAR(size)

NCHAR(size)

NCHAR(size)

NCHAR(size)

NATIONAL CHARACTER VARYING(size)

NVARCHAR2(size)

NATION CHAR VARYING(size)

NVARCHAR2(size)

NCHAR VARYING(size)

NVARCHAR2(size)

3.5 建立表

创制表的最简便和最普遍的方法会如下语法:

CREATE TABLE [SCHEMA.].<table_name>(

<column_name> <data type> [DEFAULT <expression>] [<constraint>]

[,<column_name> <data type> [DEFAULT <expression>] [<constraint>]

[,…]

);

SCHEMA。那是表所属的用户名称,或者格局名称。

TABLE_NAME。那是要建立的表的称谓。

COLUMN_NAME。这是在表中要树立的列的名目。

DATA TYPE。

DEFAULT
<expression>。对于每个列,用户都足以定义一个默许值,以用来没有为列插入语句提供值的事态。

CONSTRAINT。用户可以采纳在用户建立的次第列上定义约束。

3.5.1 约束

在Oracle中,可以接纳部分申明型完整性约束,来保管用户数量科学。

申明型完整性(declarative integrity)是足以用来表列的恫吓规则。

参考完整性(referential
integrity)是使Oracle成为关全面据库的重中之重组成部分。

1. 封锁语法

CREATE TABLE [SCHEMA.].<table_name>(

<column_name> <data type> [DEFAULT <expression>] [<constraint>]

[,<column_name> <data type> [DEFAULT <expression>] [<constraint>]

[,…]

);

还足以行使ALTER TABLE 语句向表中加上约束,如下所示:

ALTER TABLE [SCHEMA.]<table_name>

ADD [CONSTRAINT [<name>]]

<constraint definition>

);

2. 主键

表的主键可以确保在一个表中没有重新行。固然用户可以建立没有主键的表,不过那平日被认为是不佳的习惯,应该尽量幸免。

用户的表中定义主键的时候要求牢记的一些中央如下所示:

  • 在自由给定表上只可以够有一个主键。
  • 表中不可能有其余两行兼备相同的主键。
  • 主键列不能为NULL。

SQL> create user hr_audit identified by zyf

2 /

用户已创建

SQL> grant create session,dba to hr_audit

2 /

授权成功

SQL> create table another_dept as select * from scott.dept;

表已创建。

SQL> alter table another_dept

2 add constraint another_dept_pk

3 primary key(deptno);

表已更改。

3. 外键

在Oracle中,表可以通过利用所谓的外键约束举行关联。约束可以放置在一个表(子表)中的一个列或者一组列上。作为约束定义的组成部分,必要求定义子表的列去参考另一个表中(父表)的一个匹配列或者列组。

在使用外键的时候,必要牢记一些要义:

  • 在父表中被参照的列必须是唯一键依旧主键
  • Oracle,外键可以由多少个列构成。那么些列被叫作复合外键。复合外键所所有的子表列要与父表列的多寡相匹配。
  • 当在子表中插入记录的时候,不论父表在相应的列中是或不是享有NULL值,外键列都可以插入NULL值。
  • 外键可以是自参照约束,也就是说它们得以指回到相同的表。

SQL> grant select on emp to hr_audit;

授权成功。

SQL> create table another_emp as select * from scott.emp;

表已创建。

SQL> alter table another_emp

2 add constraint another_dept_fk foreign key(deptno) references another_dept(deptno)

3 /

表已更改。

4. 唯一性约束

唯一性约束(unique
constraints)可以有限扶助表中的各行,对于值为非NULL的给定列或者列组都拥有唯一值。就好像于外键约束,在动用唯一性约束的时候也有一部分中央:

  • 在表中,可以有多个行在对应的唯一性约束列中享有NULL值。由于NULL值不对等另一个NULL值,所以可以认为在唯一性约束列中负有NULL值的列唯一。
  • 可以使用四个列建立唯一性约束。这一个列称为复合唯一键。
  • 唯一键可以由最多32个列构成。
  • 当定义唯一键束缚的时候,Oracle会在后台建立一个唯一性索引来强制唯一性。

SQL> alter table another_emp

2 add(

3 ssn varchar2(9)

4 );

表已更改。

SQL> alter table another_emp

2 add constraint another_emp_ssn_uk

3 unique(ssn);

表已更改。

5. CHECK约束

CHECK约束是用以表中积德的评估标准。即使在建立约束的时候,针对表中任何笔录的规格评估为FALSE,那么它的建立就会败北。

SQL> alter table another_emp

2 add(

3 gender varchar(10));

表已更改。

SQL> alter table another_emp

2 add constraint ck_gender

3 check(gender in ('MALE','FEMALE'));

表已更改。

SQL> select * from another_emp where sal>1500;

SQL> update another_emp set gender='MALE' where mod(empno,2)=0;

SQL> update another_emp set gender='FEMALE' where mod(empno,2)=1;

SQL> select empno,job,sal,gender from another_emp where sal>3000;

EMPNO JOB SAL GENDER

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

7839 PRESIDENT 5000 FEMALE

3.5.2 CREATE TABLE AS SELECT

复制表结构

CREATE TABLE <table_name> AS SELECT

注意:

当使用CREATE TABLE … AS SELECT
语法建立表的时候,辅助对象(例如约束、索引和触发器)将不会作为操作的结果建立。

3.6 数据词典

用作数据词典视图的简练示例,这是一个可以被抱有数据库用户使用的视图。

SQL> describe user_tables;

对视图所处的长空感兴趣,则如下所示:

SQL> select table_name,tablespace_name from user_tables order by table_name

TABLE_NAME TABLESPACE_NAME

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

ANOTHER_DEPT SYSTEM

ANOTHER_EMP SYSTEM

BONUS SYSTEM

DEPT SYSTEM

EMP SYSTEM

SALGRADE SYSTEM

已选择6行。

任何视图:

  • USER_TAB_COLUMNS——那些视图不仅提供了有关表中的列的多寡,而且还提供了关于属于当前用户的视图和簇中的列的数据。
  • USER_TAB_MODIFICATIONS——那些表包含了自从Oracle优化器最终几回对表举行辨析以来,在时下用户所负有的表上举行的改观。
  • USER_TAB_PRIVS——那么些表包含了具备针对表举办的授权。
  • USER_TABLES——这些视图包罗了用户所拥有的表的元数据。

数码词典范围

USER_TABLES视图只好向大家来得与目前用户所负有的表有关的音讯。而一方面,数据库管理账号却得以利用DBA_TABLES视图。

SQL> select owner,table_name from all_tables order by owner,table_name;

3.7 小结

小说按照自己明白浓缩,仅供参考。

摘自:《Oracle编程入门经典》 南开大学出版社 http://www.tup.com.cn/

相关文章