1.列出目前使用者的全部表:
select * from tab;
2.sqlplus還可以執行作業系統本身的命令。命令格式為:HOST 作業系統命令
例如開啟windows註冊表,使用:host regedit;開啟詞本程式使用:host notepad
3.退出sqlplus
exit或quit
4.help命令
格式為:help 命令名稱
如:help desc
5.清屏命令
clear screen或clear src
在sqlplus中也可以使用host cls;來清屏
6.顯示目前使用者
show user
7.set linesize 設定行寬
8.set pagesize 設定每頁的行數
9.distinct關鍵字用來消除重複
10.in和not in
11.and,or,not,between...and,order by,like
12.SQL(structured query language)結構查詢語言
DML(Data Manipulation Language)資料操作語言---用於檢索或者修改資料
DDL(Data Definition Language)資料定義語言 (Data Definition Language)---用於定義資料的結構,如建立、修改或者刪除資料庫物件
DCL(Data Control Language)資料控制語言---用於定義資料庫使用者的許可權
13.資料庫系統中,各個資料庫之間的最大區別就在於函數的支援上,使用函數可以完成一系列的操作功能。
14.使用ed buf.sql(檔案名稱隨便取),會建立一個buf.sql文字檔,我們的sql指令碼可以寫在buf.sql上。儲存,然後運行@buf.sql(對於*.sql形式的文本,直接運行@buf.sql也可以)。
就可以執行剛才在buf.sql上儲存的sql指令碼。
15.針對14,使用start 檔案名稱也可以的。例如,start buf.sql
16.視圖是一種特殊的表,是建立在基表上的虛表。它可以由一個基表中選擇的某些行和列組成,也可以由幾個表中滿足一定條件的資料行組成。視圖反映了一個或多個基表的局部
資料,但它本身並不存放資料,其資料仍然儲存在基表中。因此,視圖是基表的一個資料視窗,但通過視圖可對錶中資料操作。視圖是實現對資料的保密及資料安全性的一種手段,
同時也簡化了對資料庫的存取操作。要引用視圖必須先建立視圖,視圖建立後,可以通過視圖對資料庫表中的資料進行查詢、增加、刪除等操作。對已建立的視圖,如果不再使用
也可以將其刪除。
●建立視圖的一般格式為:
create view 視圖名(視圖列表名)
as [select語句]
例如:建立一個視圖,使它包含10號部門職員的職工名、工程、月工資及全年的工資總額的資訊。可輸入如下命令:
create index emp10_view(person,title,salary,annual_sal)
as
select ename,job,sal,sal*12 from emp where deptno = 10;
●視圖的使用
視圖是基表的資料視窗,通過視圖可對基表中資料進行查詢、增加、刪除及修改資料等操作,這對使用者來講,對視圖可如同對錶一樣進行操作。
要求通過視圖emp10_view查詢10號部門中工資低於5000元的職工的有關資訊。並按工資由高到低順序顯示。
select * from emp10_view where salary<5000 order by salary desc;
對基表emp查詢查詢10號部門中工資低於5000元的職工的有關資訊。並按工資由高到低順序顯示。
select * from emp where sal<5000 and deptno=10 order by sal desc;
通過視圖執行查詢與通過對應的基表執行查詢,其結果相同。
對視圖進行查詢,實際是使用者通過視圖對資料庫基表中的資料進行查詢。但使用視圖簡化了使用者查詢命令,因為視圖定義的子查詢中,可帶有一定的條件,這樣對錶進行
複雜查詢的部分條件可放在視圖定義中,所以使用者不需要複雜的條件就能通過視圖獲得相同的資訊。
視圖查詢所用條件"salary<5000"等價於基表所用的查詢條件"deptno=10 and sal<5000"的部分。
通過視圖對錶中對錶中的資料做增,刪,改等更新操作,如同對基表操作一樣,但需要注意以下幾點:
●刪除操作(delete)
①僅能對意表建立的視圖進行操作
②定義視圖的子查詢中,不含有group by子句,distinct子句及各分組函數等項。
●更新操作(update)
①僅能對意表建立的視圖進行操作
②定義視圖的子查詢中,不含有group by子句,distinct子句及各分組函數等項。
③子查詢中沒有定義任何帶有運算式的更新列
●插入操作(insert)
①僅能對意表建立的視圖進行操作
②定義視圖的子查詢中,不含有group by子句,distinct子句及各分組函數等項。
③子查詢中沒有定義任何帶有運算式的更新列
④定義視圖的基表中所有"not null"列,都要在該視圖中出現。
●刪除視圖
drop view 視圖名
17.子查詢中不能含有"order by"子句,因為子查詢的結果不顯示,只作主查詢的條件。
18.in 和not in表示是否包含,是否在;any表示的語義是"至少比..."。all表示的主義是"比所有的都"。
19.索引(index)
①建立索引
create [unique] index 索引名 on 表名(欄位...)
如:為emp表建立以empno為索引列的惟一性索引
create unique index index_no on emp(empno);
②刪除索引
drop index 索引名稱
20.oracle時間函數
①當前日期
select sysdate from dual; 或者 select current_date from dual;
②to_char函數
●取得時間的年月日
select hiredate,to_char(hiredate,'YYYY') year,to_char(hiredate,'MM') month,to_char(hiredate,'dd') day from emp;
21.常用聚焦函數
●count():求出全部的記錄籽
●max():求出一組中的最大值
●min():求出一組中的最小值
●avg():求出平均值
●sum():求和
22.分組統計
範例:求出每個部門的員工數量
select deptno,count(empno) from emp group by deptno;
如下sql指令碼是錯誤的:select deptno,max(sal) from emp;會提示:不是單組分組函數。需要遵循的如下:
①如果程式中使用了分組函數,則有兩種可以使用的情況。
●程式中存在了group by,並指定了分組條件,這樣可以將分組條件一起查詢出來。
●如果不使用分組的話,則只能單獨使用分組函數
②在使用分組函數時,不能出現分組函數和分組條件之外的欄位
select deptno,empno,count(empno) from emp group by deptno;
這裡會報錯,提示empno不是group by 運算式。這裡違反了②。
③分組函數只能在分組中使用,不允許在where子句中出現。而只能通過having子句。
④全部分組函數都忽略空值(null),只有count(*)除外(注意只有是*的時候不忽略)。
23.union運算子
UNION 運算子通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)並消去表中任何重複行而派生出一個結果表。(需要記住它去掉了重複行)當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重複行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。 使用union必須要保證兩個中間結果具有相同的列數,且對應列數的資料類型要一致。
24.表複製
create talbe 表名 as select * from talbe_name