1. 程式人生 > >Oracle基礎操作手冊內容分享

Oracle基礎操作手冊內容分享

Oracle基礎操作手冊 查詢系統當前時間 顯示當前使用者 查看錶結構或列出函式、儲存過程等的資訊 Oracle中行稱為記錄,列稱為欄位。 註釋 查詢資料檔案的存放位置、大小和狀態。 distinct 去重 select用法 schame方案/使用者名稱 AS是為欄位起別名的關鍵字 可以使用各種運算子和函式對欄位的值進行計算 <>或!=(不等於) 字串匹配 使用關鍵字IN進行查詢。其語法格式如下: ORDER BY 子句 統計函式 group by 多個選項 HAVING子句 Dual虛擬表 union集合查詢 使用集合的交運算 表的建立需要CREATE TABLE系統許可權,表的基本建立語法如下: AS子查詢建立表 五種約束條件 主鍵約束primary key 主鍵約束primary 包含兩種約束:非空和唯一 約束的例項 外來鍵 constraint關鍵字 Drop刪除表 Alter更改表結構 修改表名 Synonym create user Grant授權

查詢系統當前時間

select sysdate from dual

顯示當前使用者

SHOW USER

SELECT USER FROM dual

1. ###儲存一段命令到指定檔案

2. 例3.4 使用SPOOL命令記錄操作內容。

3. 步驟1:執行命令:

4. SPOOL C:\TEST

5. 步驟2:執行命令:

6. SELECT*FROM emp;

7. 步驟3:執行命令:

8. SELECT*FROM dept;

9. 步驟4:執行命令:

10. SPOOL OFF

查看錶結構或列出函式、儲存過程等的資訊

SQL>DESC emp;

Oracle中行稱為記錄,列稱為欄位。

註釋

在一行中插入“–”,將其後的內容註釋掉。

使用/……/,可以用來註釋任何一段的內容。

查詢資料檔案的存放位置、大小和狀態。

SQL> set linesize 600

SQL> select status,bytes,name from v$datafile;

distinct 去重

SELECT[ ALL | DISTINCT ] select_list

select用法

SELECT[ ALL | DISTINCT ] select_list

FROM [schema.] table_name | [schema.] view_name

[ WHERE search_condition ]

[ GROUP BY group_by_expression [ HAVING search_condition ] ]

[ORDER BY order_expression [ ASC | DESC ] ]

schame方案/使用者名稱

[schema.] table_name:指定要查詢的資料來源的表名稱和它的方案名,如果表是當前資料庫連線使用者方案下的表,則方案名可以省略。

AS是為欄位起別名的關鍵字

SELECT column_name1 [AS] alias,column_name2 [AS] alias,········

FROM [ schema.] table_name | [schema.] view_name

可以使用各種運算子和函式對欄位的值進行計算

算術運算子包括加(+)、減(-)、乘(*)、除(/)和取模( % )運算。

SELECT ename || ‘的工作是’|| job AS 僱員,sal +300 AS 新工資 FROM scott.emp;

<>或!=(不等於)

字串匹配

匹配字串可以是一個完整的字串,也可以使用%和_兩種匹配符。

%代表字串中包含零個或多個任意字元;

_代表字串中包含一個任意字元。

NOT關鍵字是對LIKE運算子的否定,表示可以查詢那些不匹配的記錄。

SELECT * FROM scott .emp

WHERE ename LIKE ‘A%’ ;

使用關鍵字IN進行查詢。其語法格式如下:

SELECT select_list FROM [schema.] table_name | [schema.] view_name

WHERE column_name [ NOT ] IN (value1,value2,………)

ORDER BY 子句

ASC:表示按升序排列,可省略。

DESC:表示按降序排列。

SELECT * FROM scott.emp

WHERE job=’SALESMAN’

ORDER BY sal DESC

統計函式

AVG(欄位)

Max

MIN

Count(*/欄位)

Sum(dictinct)欄位))

group by 多個選項

統計scott方案下的emp表中各個部門中的各種工作的僱員人數。

SELECT deptno,job,COUNT(*) AS 人數

FROM scott.emp

GROUP BY deptno,job;

HAVING子句

在SELECT語句中,當同時存在GROUP BY子句、HAVING子句和WHERE子句時, 其執行順序為:先WHERE子句,後GROUP BY 子句,再HAVING子句。 即先用WHERE子句從資料來源中篩選出符合條件的記錄, 接著再用GROUP BY子句對篩選的記錄按指定的欄位分組、彙總, 最後再用HAVING子句篩選出符合條件的組。 例6.23 統計scott方案下的emp表中平均工資大於2500的工作。 SELECT job,AVG(sal) AS 平均工資 FROM scott.emp GROUP BY job HAVING AVG (sal)>2500;

Dual虛擬表

我的學習群64弍46衣3凌9,或加資料群69似64陸0吧3

Dual表主要用來選擇系統變數或求一個表示式的值

引入Dual表的原因:

SELECT sysdate FROM dual

而Oracle的SELECT語法的限制為:

SELECT * | [column1 [AS alias1], column2 [AS alias2]] FROM table

所以,沒有表名就沒有辦法查詢,而時間日期並不存放在任何表中,於是這個dual虛擬表的概念就被引入了。

union集合查詢

並集,合併兩個操作的結果,去掉重複的部分

例7.16:查詢部門10和部門20的所有職務。

執行以下查詢:

SELECT job FROM emp WHERE deptno=10

UNION

SELECT job FROM emp WHERE deptno=20;

使用集合的交運算

例7.17:查詢部門10和20中是否有相同的職位和工資。

執行以下查詢:

SELECT job,sal FROM emp WHERE deptno=10

INTERSECT

SELECT job,sal FROM emp WHERE deptno=20;

表的建立需要CREATE TABLE系統許可權,表的基本建立語法如下:

CREATE TABLE 表名 (列名 資料型別(寬度)[DEFAULT 表示式][COLUMN CONSTRAINT], … [TABLE CONSTRAINT] [TABLE_PARTITION_CLAUSE] ); /* DEFAULT 表示式:用來定義列的預設值。 COLUMN CONSTRAINT:用來定義列級的約束條件。 TABLE CONSTRAINT:用來定義表級的約束條件。 TABLE_PARTITION_CLAUSE:定義表的分割槽子句。*/ 建立學生表(student) CREATE TABLE student (Sno char(6), Sname varchar2(8), Sex char(2), Birthday date, Sdept char(20) );

AS子查詢建立表

CREATE TABLE emp_30(ename,job,sal)
AS
SELECT ename,job,sal FROM emp WHERE deptno=30;

五種約束條件

表共有五種約束,它們是主鍵、非空、唯一、檢查和外來鍵。

資料完整性由主鍵(PRIMARY KEY)、非空(NOT NULL)、唯一(UNIQUE)和檢查(CHECK)約束條件定義,參照完整性由外來鍵(FOREIGN KEY)約束條件定義。

主鍵約束primary key

主鍵約束primary 包含兩種約束:非空和唯一

CREATE TABLE student

(Sno char(6) PRIMARY KEY,

Sname varchar2(8),

Sex char(2),

Birthday date,

Sdept char(20)

);

約束的例項

CREATE TABLE student

(Sno char(6) PRIMARY KEY,主鍵

Sname varchar2(8) NOT NULL,非空

Sex char(2) CONSTRAINT ch_sex CHECK(Sex=’男’ or Sex=’女’),檢查

Birthday date UNIQUE,唯一

Sdept char(20)

外來鍵

CONSTRAINT fk_sc FOREIGN KEY(Cno) REFERENCES course(Cno)###將course中的Cno作為外來鍵,本表可以沒有主鍵

constraint關鍵字

在以上5種約束的語法中,CONSTRANT關鍵字用來定義約束名,如果省略,則系統自動生成以SYS_開頭的惟一約束名。

Drop刪除表

drop table Student;

Alter更改表結構

ALTER TABLE 表名 [ADD (列名 資料型別[DEFAULT 表示式 ][COLUMN CONSTRAINT]……)] [MODIFY(列名 資料型別[DEFAULT 表示式 ][COLUMN CONSTRAINT]……)] [DROP COLUMN 列名] 例8.10給student表增加一個memo欄位,型別為varchar2(20)。 ALTER TABLE student ADD memo VARCHAR2(20); 例8.11 修改student表中所在系sdept欄位的長度改為30。 ALTER TABLE student MODIFY sdept VARCHAR2(30); 3.修改列名 使用ALTER TABLE … RENAME COLUMN語句實現修改列的名稱。 例8.12 修改student表中所在系sdept欄位的欄位名為new_sdept。 ALTER TABLE student RENAME COLUMN sdept to new_sdept; 4.刪除列名 使用ALTER TABLE … DROP COLUMN語句實現直接刪除列。 例8.13 刪除student表中的性別欄位。 ALTER TABLE student DROP COLUMN sex;

修改表名

表名的修改可以使用使用ALTER TABLE … RENAME TO語句實現,也可直接執行RENAME … TO語句。

例8.14 將student表改名為new_student表。

ALTER TABLE student

RENAME TO new_student;

Synonym

CREATE [OR REPLACE] [PUBLIC] SYNONYM [schema .]synonym_name

FOR [schema .] object_name

其中各引數的意義如下:

PUBLIC:表示建立一個公有同義詞,允許對原物件具有許可權的所有使用者使用。

Synonym_name:新建的同義詞名稱。

Object_name:原物件的名稱。

create user

CREATE USER 使用者名稱 INDENTIFIED BY 口令 [DEFAULT TABLESPACE 表空間名] [TEMPORARY TABLESPACE 表空間名] [QUOTA {正整數[K|M] |UNLIMITED } ON表空間名…] [PASSWORD EXPIRE] [ACC0UNT {LOCKL|UNLOCK}] [PR0FILE 環境檔名|DEFAULT];

QUOTA 如果沒有指定了預設表空間之後,一般需使用QUOTA子句來為使用者在預設表空間中分配空間配額。 [PASSWORD EXPIRE] 設定使用者初次登入後密碼失效,必須重新設定。 [PR0FILE 環境檔名|DEFAULT]; 顯式的配置概要檔案

Grant授權

Grant授權 GRANT SYSTEM_PRIV[,SYSTEM_PRIV,…] TO {PUBLIC|ROLE|USER}[,PUBLIC|ROLE|USER}]… [WITH ADMIN OPTION] SYSTEM_PRIV:表示要授予的系統許可權的名稱,該選項允許為使用者同時授予多個系統許可權,之間用逗號隔開。 USER:表示獲得該系統許可權的使用者名稱稱,該選項允許同時為多個使用者授予相同的許可權,之間用逗號隔開。 ROLE:表示被授予的角色。 PUBLIC:表示對系統中所用使用者授權,可以使用它為系統中的每個使用者快速設定許可權。 WITH ADMIN OPTION:它是可選項,表示將系統許可權授予某個使用者後,該使用者不僅獲得該許可權的使用權,還獲得該許可權的管理權,包括可以將該許可權繼續授予其它使用者,或從其它使用者處回收該許可權。該選項的影響力較大,要慎重使用