详解Oracle建立用户和对用户的管理
2009-03-19 13:10:38 来源:WEB开发网尝试建立一张表
create table table1
(
fieldA varchar2(10)
)
# 删除用户
angeos
drop user angeos;
由于用户angeos有一张表table1,所以删除用户时,我们需要指定关键字CASCADE
drop user angeos cascade;
# 解释术语模式Schema
数据库的模式定义为数据库对象的集合,而模式的名称就是拥有或者控制这个数据库对象集合的用户名称。
所有数据库对象,例如表、视图、索引、触发器、Java存储过程、PL/SQL程序包,函数等,都是由Oracle
数据库中的一个用户所拥有。甚至Oracle的数据词典,系统编目也是名为SYS的模式的一部分。
用户的传统解释就是能够唯一标识一组信任凭证的名称和密码组合。
# 解释系统特权
在Oracle数据库中有两类特权:
(1)对象级别特权是由用户赋予的访问或者操作数据库对象的特权。
(2)系统特权不是控制对指定数据库对象的访问,而是用来许可对各种特性的访问,或者许可Oracle数据库中的特定任务。
查询特权
connect system/sysadmin
desc dba_sys_privs;
查询
select distinct privilege from dba_sys_privs order by privilege
赋予系统特权的语句
GRANT system_priviege to username [with admin option];
撤销系统特权的语句
REVOKE system_priviege from username;
注意:在任何用户能够连接到Oracle数据库之前,都需要向它们赋予CREATE SESSION特权,为他们提供连接许可。
##################################
# 建立数据表
##################################
# 语法规则
CREATE TABLE [SCHEMA.] (
[,
[,...]
);
# 建表的例子
********************************************************************
CREATE TABLE CD_COLLECTION (
ALBUM_TITLE VARCHAR2(100),
ARTISTVARCHAR2(100),
COUNTRYVARCHAR2(25),
RELEASE_DATE DATE,
LABELVARCHAR2(25),
PRIMARY KEY (ALBUM_TITLE, ARTIST)
);
********************************************************************
CREATE TABLE seagal.SONGS (
SONG_TITLEVARCHAR2(100),
COMPOSER VARCHAR2(100),
LENGTHNUMBER,
TRACKNUMBER,
ARTISTVARCHAR2(100),
ALBUM_TITLE VARCHAR2(100),
FOREIGN KEY (ARTIST, ALBUM_TITLE) REFERENCES seagal.CD_COLLECTION(ARTIST, ALBUM_TITLE),
PRIMARY KEY (SONG_TITLE, ARTIST, ALBUM_TITLE)
);
********************************************************************
select * from seagal.cd_collection;
select * from seagal.songs;
********************************************************************
********************************************************************
INSERT INTO seagal.CD_COLLECTION
VALUES('Black Sheets of Rain', 'Bob Mould', 'USA',to_date('01-01-92','DD-MM-YY'), 'Virgin');
INSERT INTO seagal.CD_COLLECTION
VALUES('Candy Apple Grey', 'Husker Du', 'USA',to_date('01/01/86','DD/MM/YY'), 'Warner Brothers');
INSERT INTO seagal.SONGS
VALUES('Black Sheets of Rain','Mould', NULL,1, 'Bob Mould', 'Black Sheets of Rain');
INSERT INTO seagal.SONGS
VALUES('Crystal','Mould', 3.28, 1, 'Husker Du', 'Candy Apple Grey');
INSERT INTO seagal.SONGS
VALUES('Don''t want to know if you are lonely ','Hart', 3.28, 2, 'Husker Du', 'Candy Apple Grey');
INSERT INTO seagal.SONGS
VALUES('I don''t know for sure','Mould', 3.28, 3, 'Husker Du', 'Candy Apple Grey');
INSERT INTO SONGS VALUES('Black Sheets of Rain','Mould', NULL,1, 'Bob Mould', 'Black Sheets of Rain');
COMMIT;
*******************************************************
******************************************************
DROP TABLE FRUITS;
CREATE TABLE FRUITS (
FRUIT VARCHAR2(12),
COLOR VARCHAR2(12),
QUANTITY NUMBER,
PRICE NUMBER,
PICKED DATE
);
INSERT INTO FRUITS VALUES('Apple', 'Green', 12, 0.5, '12-Sep-2002');
INSERT INTO FRUITS VALUES('Apple', 'Red', 12, 0.5, '15-Sep-2002');
INSERT INTO FRUITS VALUES('Mango', 'Yellow', 10, 1.5,
'22-Sep-2002');
INSERT INTO FRUITS VALUES('Mangosteen', 'Purple', 5, 2,
'25-Sep-2002');
INSERT INTO FRUITS VALUES('Durian', 'NULL', 2, 15, NULL);
INSERT INTO FRUITS VALUES('Orange', 'Orange', 10, 1.5, '28-Aug-2002');
COMMIT;
*********************************************************
COMMIT;
# CREATE TABLE AS SELECT的语句
通过查询一个表,并且将查询结果集物化到一个常规表中来建立表。
复制表的结构,但是约束、索引和触发器等对象不会被放入新的表中。
例子:
create table emp_copy as
select * from scott.emp;
# 数据词典
每一个数据库都有一个数据词典,任何管理Oracle数据库,或者使用Oracle构建应用的用户都需 要使用数据词典。
数据词典是Oracle数据库的编目。
当建立用户、表、约束和其它数据库对象的时候,Oracle都会自动维护一个在数据库中存储的项 目编目。
例如:USER_TABLES视图可以展示当前用户所拥有的所有表的信息。
使用DESCRIBE命令查看USER_TABLES视图的结构信息。
具有DBA权限的用户可以查看DBA_TABLES
select owner ,table_name,tablespace_name from dba_tables
where owner in('SCOTT','HR')
order by owner,tablesapce_name,table_name
更多精彩
赞助商链接