# 合法的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
|
- 執行個體講解Oracle 9i資料壞塊的處理
- Oracle資料庫管理指令碼淺析
- Oracle 11g中實現自我調整功能