Oracle 10g數據庫基礎之基本查詢語句-上程序員
書寫SQL語句的原則算法
大小寫不敏感,但單引和雙引內的大小寫是敏感的。切記!sql
關鍵字不能縮寫數據庫
能夠分行書寫,但關鍵字不能被跨行書寫,單引內也不要跨行書寫。express
通常每一個子句是一行ide
能夠排版來增長可讀性函數
字符串用單引工具
列的別名用雙引性能
查詢指定的行spa
查詢指定的列
多張表聯合查詢
Select 語句能夠查詢指定的行,指定的列,也能夠多張表聯合查詢來得到數據。上面的三句話,開宗明義的定義了SQL 的基本功能,書寫高效的SQL語句是咱們永恆的追求,無論你是程序員仍是數據庫管理員。Select既是入門所必備,又是數據庫之顛峯。
大寫的爲關鍵字
小寫的爲咱們指定的名稱
SELECT子句指定你所關心的列
FROM子句指定你所要查詢的表
之因此稱之爲簡易語法,由於徹底的SELECT語法很長,涉及到不少的邏輯關係,咱們由淺入深。雖然
不能大成,但小成總會有的。
通常咱們將select 叫作select子句,from 叫作from 子句。
該實驗的目的是初步認識sql語句,執行一個最簡單的查詢.
使用scott在PL/ SQL.Developer.7工具上登陸
查看emp表的全部信息.
查詢emp表的全部行,全部列。對於小的表咱們能夠這樣書寫,對於大的表咱們通常查詢指定條件的行和選定的列。Emp表在scott用戶下.scott用戶是一個練習賬號,密碼是tiger,若是你沒有這個賬號能夠隨時創建,練習完了能夠隨時刪除.招之既來,揮之既去.
鎖定解鎖scott帳戶:
該實驗的目的是練習查詢指定的列.
列的名稱之間要使用逗號間隔,列的順序由咱們來指定.
該實驗的目的是使用表達式,對錶的部分列進行運算.
其中sal+300是表達式,它並不存在於數據庫中,是計算出來的結果。也可使用函數.
表達式的運算是有優先級的,和程序中的同樣,先乘除後加減,括號強制優先級.
+ - * / 先乘除,後加減,括號強制優先級
我的一年總工資,年終獎爲300元。
我的一年總工資,每月獎金爲300元。
登陸:
創建會話,和數據庫發生鏈接
鏈接到SCOTT用戶,密碼爲tiger
若是不寫密碼,你回車後會提示你輸入密碼。
進一步的幫助
顯示SQLPLUS命令的幫助,而不是SQL語法的幫助,它是查詢的數據庫內的一張表,因此你要獲得幫助須要兩個條件,1、數據庫是打開的。2、存在HELP表
顯示當前SQLPLUS的環境設置
顯示當前所登陸的用戶信息
該實驗的目的是查看簡單的數據字典,熟悉實驗環境.
顯示當前用戶所擁有的表和視圖。其中tab是數據字典,你在每一個用戶下查看都看到是當前用戶的表和視圖,這是最基本的字典,咱們必定要知道當前用戶下的表和視圖。
顯示DEPT表的全部行和全部列,* 表明全部的列。
查看錶結構
對這兩張表你們必定要熟悉,由於咱們全部的例題都是以這兩個表爲基礎
查看當前緩衝區內的語句。
簡寫爲l
修改scott的密碼
該實驗的目的是練習數據庫的一個重要值null的使用.
Null值
其中comm列中有一些行沒有值,是空值(null)。
Null值不等於0,也不等於空格。
Null值是未賦值的值,不入索引。
NULL是雙刃劍,使用好了提升性能,你對它不瞭解,每每是錯誤的根源,切記!
該實驗的目的是瞭解使用別名的目的和別名的使用方法.
別名的使用原則:
1。區分同名列的名稱
2。非法的表達式合法化
3。按照你的意願顯示列的名稱
4。特殊的別名要雙引
5。直接寫列的後面
6。使用as增長可讀性
SQL> Select sal as salary,hiredate 上班日期 ,sal*12 年工資 from emp;
該實驗的目的是使用distinct關鍵字,去掉重複的行.
SELECT 語句顯示重複的行。用DISTINCT語法來去掉重複的行。
咱們會看到不少重複的行,若是咱們想去掉重複的行,咱們須要distinct關鍵字。
在ORACLE數據庫的10G前版本,該語句須要排序才能去掉重複的行,而在10G中數據庫並不須要排序,而是使用HASH算法來去掉重複的行,因爲避免了排序,從而極大的提升了SQL語句的效率,由於10G的SQL內核改寫了。效率更加的高。由於沒有排序,因此輸出也是無序的。
Where和order by 子句
語法
Where 必定要放在FROM 子句的後面。
符合條件的行會被篩選出來。
Order by 放在最後,用來排序顯示結果
該實驗的目的是使用where子句.
只顯示10號部門的員工名稱。
顯示KING員工的詳細信息。
關係運算:
Between:含上下界
>select deptno 部門編號,ename 姓名,sal 工資 from emp where deptno in(10,20);
查詢NULL值
未知不等於未知,無窮不等於無窮.
not運算,補集,不是J打頭的員工。
4。 IS [NOT] NULL, LIKE, [NOT] IN
5。Between
該實驗的目的是掌握like的通配符.還有邏輯運算.
_ 通配一個,僅匹配一個字符,
% 通配沒有或多個字符
SQL> select deptno 部門編號,ename 姓名 from emp where ename like 'J%';
首字母爲J的員工,J後有沒有字符,有多少字符都無論。
SQL> select deptno 部門編號,ename 姓名 from emp where ename like '_A%';
尋找第二個字母爲A的員工,第一個字母必須有,是什麼無所謂。
當你想查詢_,%特殊字符時,請用escape.
咱們並不想查找S後必須有一個字符以上的員工,而是要剔除S,S出現的目的就是轉義,將_轉義了,這裏的_不是通配符,而是實際意義的_。
通常咱們使用/來轉義,以避免產生歧異。
該實驗的目的是掌握排序操做.
不指明都是二進制排序,若是你想按照拼音,部首,筆畫,法語等特殊的排序模式,請設定排序的環境變量。
默認是升序asc
降序要指定desc
位置排序,對集合操做時比較方便.
練習01:
查看scott中 emp表的信息:
練習02:
在scott中 emp表中,編號爲7369的部門編號?
在scott中 emp表中,job與7900 員工相同的員工有哪些?
練習03:
在scott中 emp表中,在10號部門中誰的工資+獎金最高?
select ename 姓名,sal+nvl(comm,0) 總工資 from emp where (sal+nvl(comm,0))=( select max(sal+nvl(comm,0)) from emp where deptno IN (10));
《完》
--xjzhujunjie
--2012/05/15