SQL(Structued Query Language,結構查詢語言)是一個功能強大的資料庫語言。SQL通常用于與資料庫通訊。ANSI(美國國家标準學會)聲稱,SQL是關系資料庫管理系統的标準語言。
Oracle資料庫之是以發展的很好,主要也是因為Oracle是全世界最早采用SQL語句的資料庫産品。
DML(Data Manipulation Language,資料操作語言)—-用于檢索或者修改資料
DDL(Data Definition Language,資料定義語言)—-用于定義資料的結構,如:建立、修改或者删除資料庫對象;
DCL(Data Control Language,資料控制語言)—-用于定義資料庫使用者的權限
簡單查詢指的是一張表中的所有的資料,簡單查詢的文法如下:
1
<code>SELECT [DISTINCT] *| 字段 [别名] [字段 [别名]]FROM 表名稱 [别名]</code>
範例1: 查詢dept表的全部記錄
<code>SELECT * FROM dept ;</code>
SQL> SELECT * FROM dept ;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL>
範例2:查詢出第個雇員的編号、姓名、基本工資
<code>SELECT empno,ename,sal FROM emp ;</code>
SQL> SELECT empno,ename,sal FROM emp ;
EMPNO ENAME SAL
---------- ---------- ----------
7369 SMITH 800
7499 ALLEN 1600
7521 WARD 1250
7566 JONES 2975
7654 MARTIN 1250
7698 BLAKE 2850
7782 CLARK 2450
7788 SCOTT 3000
7839 KING 5000
7844 TURNER 1500
7876 ADAMS 1100
7900 JAMES 950
7902 FORD 3000
7934 MILLER 1300
已選擇14行。
範例3:查詢出每個雇員的編号、姓名、職位
<code>SELECT empno,ename,job FROM emp ;</code>
SQL> SELECT empno,ename,job FROM emp ;
EMPNO ENAME JOB
---------- ---------- ---------
7369 SMITH CLERK
7499 ALLEN SALESMAN
7521 WARD SALESMAN
7566 JONES MANAGER
7654 MARTIN SALESMAN
7698 BLAKE MANAGER
7782 CLARK MANAGER
7788 SCOTT ANALYST
7839 KING PRESIDENT
7844 TURNER SALESMAN
7876 ADAMS CLERK
7900 JAMES CLERK
7902 FORD ANALYST
7934 MILLER CLERK
範例4:查詢出每個雇員的職位
<code>SELECT job FROM emp ;</code>
SQL> SELECT job FROM emp ;
JOB
---------
CLERK
SALESMAN
MANAGER
ANALYST
PRESIDENT
由上可知,查詢出的job内容出現了重複的資料,而之是以資料會有重複,主要的原因是現在沒有消除掉重複記錄,可以使用DISTINCT消除掉所有的重複内容:
範例5:查詢出每個職位的不重複的記錄
<code>SELECT DISTINCT job FROM emp ;</code>
SQL> SELECT DISTINCT job FROM emp ;
但是,對于重複資料,指的是一行中的每個列的記錄重複,才叫重複資料。
範例6:查詢出每個雇員的姓名、職位
<code>SELECT ename,job FROM emp ;</code>
SQL> SELECT ename,job FROM emp ;
ENAME JOB
---------- ---------
SMITH CLERK
ALLEN SALESMAN
WARD SALESMAN
JONES MANAGER
MARTIN SALESMAN
BLAKE MANAGER
CLARK MANAGER
SCOTT ANALYST
KING PRESIDENT
TURNER SALESMAN
ADAMS CLERK
JAMES CLERK
FORD ANALYST
MILLER CLERK
在進行簡單查詢的操作之中,也可以使用各個數學的四則運算符
範例7:要求顯示每個雇員的姓名、職位、基本年薪(incom)
<code>SELECT ename,job,(sal*</code><code>12</code><code>) </code><code>as</code> <code>income FROM emp ;</code>
SQL> SELECT ename,job,(sal*12) as income FROM emp ;
ENAME JOB INCOME
---------- --------- ----------
SMITH CLERK 9600
ALLEN SALESMAN 19200
WARD SALESMAN 15000
JONES MANAGER 35700
MARTIN SALESMAN 15000
BLAKE MANAGER 34200
CLARK MANAGER 29400
SCOTT ANALYST 36000
KING PRESIDENT 60000
TURNER SALESMAN 18000
ADAMS CLERK 13200
JAMES CLERK 11400
FORD ANALYST 36000
MILLER CLERK 15600
SQL> SELECT ename,job,(sal*12)income FROM emp ; //as可省略!
重點:但是對于别名,建議不要使用中文,隻要是程式的開發,都要回避中文,這不是中國的“易語言”。
範例8:公司福利好,每個月都有200元的飯食補貼及100元車費補助,這個時候的年薪
<code>SELECT ename,job,</code><code>12</code><code>*(sal+</code><code>200</code><code>+</code><code>100</code><code>) income FROM emp ;</code>
SQL> SELECT ename,job,12*(sal+200+100) income FROM emp ;
SMITH CLERK 13200
ALLEN SALESMAN 22800
WARD SALESMAN 18600
JONES MANAGER 39300
MARTIN SALESMAN 18600
BLAKE MANAGER 37800
CLARK MANAGER 33000
SCOTT ANALYST 39600
KING PRESIDENT 63600
TURNER SALESMAN 21600
ADAMS CLERK 16800
JAMES CLERK 15000
FORD ANALYST 39600
MILLER CLERK 19200
範例9:公司每年的年底都會多發一個月的基本工資
<code>SELECT ename,job,</code><code>12</code><code>*(sal+</code><code>200</code><code>+</code><code>100</code><code>)+sal income FROM emp ;</code>
SQL> SELECT ename,job,12*(sal+200+100)+sal income FROM emp ;
SMITH CLERK 14000
ALLEN SALESMAN 24400
WARD SALESMAN 19850
JONES MANAGER 42275
MARTIN SALESMAN 19850
BLAKE MANAGER 40650
CLARK MANAGER 35450
SCOTT ANALYST 42600
KING PRESIDENT 68600
TURNER SALESMAN 23100
ADAMS CLERK 17900
JAMES CLERK 15950
FORD ANALYST 42600
MILLER CLERK 20500
在簡單查詢之中也可以使用“||”連接配接查詢的字段
範例10:觀察“||”的使用
由于“,”(逗号)屬于原樣輸出的字元串,是以必須使用“’”(單引号)括起來,即:在SQL語句之中,“’”(單引号)表示的是字元串
範例11:要求現在的資料按照如下的格式顯示:
“雇員編号是:7369 雇員姓名是:SMITH 基本工資是:800職位是:CLERK ”
現在相當于查找:empno ename sal job字段,且使用||來連接配接,
<code>SELECT </code><code>'雇員編号是:'</code><code>||empno||</code><code>'的雇員姓名是:'</code><code>||ename||</code><code>',基本工資是:'</code><code>||sal||</code><code>',職位是:'</code><code>||job FROM emp ;</code>
<a href="http://beyondhdf.blog.51cto.com/attachment/201308/25/229452_1377396681JN5T.jpg"></a>
<code>SELECT </code><code>'雇員編号是:'</code><code>||empno||</code><code>'的雇員姓名是:'</code><code>||ename||</code><code>',基本工資是:'</code><code>||sal||</code><code>',職位是:'</code><code>||job||</code><code>'|'</code> <code>FROM emp ;</code>
<a href="http://beyondhdf.blog.51cto.com/attachment/201308/25/229452_1377396682Kn8p.jpg"></a>
<code>SELECT </code><code>'雇員編号是:'</code><code>||empno||</code><code>'的雇員姓名是:'</code><code>||ename||</code><code>',基本工資是:'</code><code>||sal||</code><code>',職位是:'</code><code>||job||</code><code>'|'</code><code>雇員資訊 FROM emp ;</code>
<a href="http://beyondhdf.blog.51cto.com/attachment/201308/25/229452_1377396683Jvkd.jpg"></a>
重點:
一定要記住,别名上的内容不要使用“’”(單引号)括起來,而隻有在SELECT子句之中出現的内容才使用“’”(單引号)。
什麼叫子句?一般習慣而言,SELECT後面的叫SELECT 子句,FROM後面的叫FROM子句。
範例12:
使用者(sys)連接配接到Oracle資料庫,去查詢使用者scott下的一張表emp(雇員表)的方法:
<code>SELECT </code><code>'雇員部門編号是:'</code><code>||empno||</code><code>'的雇員姓名是:'</code><code>||ename||</code><code>',基本工資'</code><code>||sal||</code><code>',上司編号'</code><code>||mgr||</code><code>',雇員職位是:'</code><code>||job||</code><code>',獎金是:'</code><code>||comm ||</code><code>'|'</code> <code>as</code> <code>雇員資訊 FROM scott.emp ;</code>
<a href="http://beyondhdf.blog.51cto.com/attachment/201308/25/229452_1377396683zu2x.jpg"></a>