# 合法的Oracle標識符號
1、不能是保留關鍵字
2、必須使用1到30個字符。數據庫的名稱最多是8個字符。
3、必須以數據庫字符集中的字母字符開頭
4、只能夠包含數據庫字符集中的字母字符,以及以下字符:#、$、_,另外數據庫鏈接可以包含@符號和'.'(句號)
5、不能包含引號
# 建立用戶
create user angeos identifIEd by angeos;
建立了用戶:angeos,密碼為:angeos
# 對用戶授權
grant connect,resource to angeos;
對用戶angeos授予了連接數據庫和訪問資源的權限
# 對用戶授權
grant create session,dba to angeos;
CREATE SESSION是一個系統特權,它可以為用戶提供連接數據庫的能力。
DBA是一個具有超過120個系統特權的角色,所以它可以讓用戶在數據庫中完成幾乎任何工作。
# 改變用戶的密碼
alter user angeos identifIEd by oracle;將用戶angeos的密碼改變為:Oracle.
# 鎖定帳號以及解鎖
alter user oe account unlock;
然後用用戶oe登錄數據庫服務器,密碼為oe.注意:用戶解鎖後,要重啟服務。
# 修改表空間的設置
默認情況下,它會使用表空間SYSTEM和TEMP(用於存放臨時數據)。
不推薦采用這種方法。所以我們需要改變表空間。
通過系統用戶連接數據庫服務器
conn sys/sysadmin@hostname_services as sysdba;
然後查看表空間
select tablespace_name,contents from dba_tablespaces
order by tablespace_name;
使用USER表空間代替SYSTEM表空間
alter user angeos default tablespace users
temporary tablespace temp;
嘗試建立一張表
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.](
[default ] []
[, [default ] []]
[,...]
);
# 建表的例子
********************************************************************
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