1. 程式人生 > >Oracle從入門到精通 關於簡單查詢的問題

Oracle從入門到精通 關於簡單查詢的問題

oracle http 同時 操作 png mark sql rom mage

視頻課程:李興華 Oracle從入門到精通視頻課程

學習者:陽光羅諾

視頻來源:51CTO學院




如果要進行查詢,肯定使用的時DML中的查詢部分支持,相對於簡單查詢而言,通俗的理解,就是全部記錄都查詢,但是可以通過語法控制列的顯示與否。
簡單查詢的SQL語法結構如下所示:

        ②SELECT [DISTINCT] * |列[別名],別[別名],…….①FROM 表名稱[別名];

兩者在執行的順序上是先從①開始執行,然後再去執行②

舉例:如果再select子句之中使用了“*”表示的是查詢一張表中的所有數據列。

範例:查詢emp表中的全部記錄

        SELECT * FROM emp;

在本程序中,from子句是確定數據來源,來源只要是表結構(行與列的集合),而select子句控制的是所需要的數據列。

範例:進行數據的投影————控制所需要顯示的數據列。
    查詢每個員工的編號、姓名、基本工資

語法格式:

            SELECT empno,ename,sal,job FROM emp;
 ![](http://i2.51cto.com/images/blog/201807/03/7d3aff027d278824f6971af6d095430e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

除了進行基本的查詢列之外,在簡單查詢之中也支持四則運算,並且可以直接使用列的內容進行四則運算。

要求查詢出每一個雇員的編號、姓名、基本年薪(月工資sal,年薪*12);

語法格式:

            SELECT empno,ename,sal*12  FROM emp;

發現此時部分的列表名稱不好看,為了達到美觀效果,可以進行別名的設置。
我們可以這樣子去寫。但是在一般情況下,**都不建議使用中文。**

        SELECT empno 員工編號,ename員工姓名,sal*12 年薪 FROM emp;

實際上在以後定義的數據表名稱或者是列名稱的時候中文也支持,但是你想讓你開發正常點,盡量都去使用英文。
![](http://i2.51cto.com/images/blog/201807/03/2dd48cf236d99667b03a64f51166baf8.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
實際上在進行簡單查詢的過程之中,還支持數據的連接操作,使用“||”進行連接。

範例:觀察連接。

        SELECT empno || ename FROM emp;

結果圖如下:
 ![](http://i2.51cto.com/images/blog/201807/03/5cb68e816646d0fe52fd0f801e8b7acb.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
相信這個結果圖,很多人看了肯定是這是什麽玩意?為了使得這個連接效果變得更好看一點。我們可以在中間使用一些文字描述。
例如:現在希望最終的格式是:“編號:XXX,姓名:XXX”,對於我們的編號和姓名都是通過數據表的查詢出來的數據列。針對於一些固定輸出的內容就必須進行處理,對於此部分的處理暫時只考慮使用兩種類型的數據:

        普通數字:那麽直接編寫。(SELECT ename || 1 FROM emp;)
 ![](http://i2.51cto.com/images/blog/201807/03/bfbf86d4ede2f505c969fa6766eedbd5.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
        字符串:使用單引號說明。(SELECT empno || ‘hello’ FROM emp;)
 ![](http://i2.51cto.com/images/blog/201807/03/c772c508f582a3ca36af5fca06443813.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
範例:實現格式化輸出
語法格式:

            SELECT ‘編號:’ || empno || ‘姓名:’ename FROM emp;
 ![](http://i2.51cto.com/images/blog/201807/03/f62be5d5b627d609023d607cf58a7f4b.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

在簡單查詢中,有一個DISTINCT關鍵字,此關鍵字的主要目的是消除重復內容。

範例:查詢所有雇員的職位信息。
 ![](http://i2.51cto.com/images/blog/201807/03/0c3c32fbe18d0dab3f74c70fcf61142a.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
在圖中,我們會發現,又很很多人一起辦公,那麽現在如果不希望在裏面出現重復的內容,那麽就可以在SELECT子句中使用DISTINCT來消除重復的內容。
語法格式:

        SELECT DISTINCT Job FROM emp;
結果如圖: 
![](http://i2.51cto.com/images/blog/201807/03/a0ff2028b3eacb77050ccc13e91f3c5f.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
註意:如果消除重復內容,指的是查詢出來的數據所有列的內容都重復查詢的結果。

範例:觀察如下查詢的結果

        SELECT DISTINCT ename,Job FROM emp;

結果如下: 
![](http://i2.51cto.com/images/blog/201807/03/cdb6a7c0e4a41d3525bbb9ddefb57e3e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
相信你會看到又是出現14行的數據內容。此時
因為姓名和職位沒有同時重復的內容,那麽將無法刪除掉那些重復的內容。

**總結:簡單查詢的最大特征在於:控制數據列,但是它無法進行數據列的控制。**

Oracle從入門到精通 關於簡單查詢的問題