Oracle-18-select語句初步&SQL中用算術運算式&別名的使用&串連運算子%distinct&where子句

來源:互聯網
上載者:User

標籤:

一、一般SELECT語句的格式如下:

1.查詢指定表的所有列

select * from 表名 [where 條件] [group by分組列名] [having 彙總函式] [order by排序列名 ASC| DESC]

在表名地方,可以寫多個表

 

2.查詢指定表的部分列:

select {[distinct]列名,列名,…}from表名 [where 條件] [group by分組列名] [having 彙總函式] [order by排序列名 ASC| DESC]

其中關鍵字distinct表示去除部分列中重複資料,

只是在查詢的時候去除,而該表內部資料紋絲不動

 

二、查詢指定的列

如果想查詢某一個或是多個指定列,可以編寫類似於下面的SQL語句。

 

例1:查詢學生表部分列,如學號、姓名

select sno,snamefrom student

其中sno,sname分別為學生表的列名,student為學生表的表名,如:


例2:查詢學生表所有資訊,如:


三、在SQL語句中可以使用算術運算式:

+、-、*、/。

 

如:selectempno,ename,sal+500 from emp;

所以sal列可以做運算,然後在查詢結果中顯示

【注意】select後如果加*,那麼*之後不能再加別的東西,比如

select *, sname from A是錯誤的。

 

例3:如查詢學生表部分列,且age列各項資料加20,如:


【注意】雖然查詢結果中將age列所有資料加20,但是實際表中的資料沒有發生改變。

 

四、查詢語句中別名的使用

在查詢語句中,我們可以為表或者列加上別名

1.在列上加別名:

(1)第一種寫法

select empno as “員工編號”,ename as “員工名稱” from emp


(2)第二種寫法

select empno 員工編號,ename 員工名稱 from emp


(3)第三種寫法

select empno “員工編號”,ename “員工名稱” from emp


例4:為學生表中的sno和sname添加別名,如:


2.為表加別名

select empno, ename from empa

即將原表名emp改成別名a

 

例5:根據現有的student表和sc表,查詢s001學號的學產生績。

解:先查詢student表和sc表資訊,如:



再兩表聯查,這個後續會學到:


對於命令:

SQL>selecta.sno,sname,score from student a, sc b

      2 where a.sno = ‘s001’ and a.sno = b.sno;

其中a和b分別為student表和sc表別名。

所以為表定義別名的用處是簡化代碼書寫,原來的student.sno現在簡化成a.sno。

 

五、串連運算子

在SQL查詢語句中可以將兩列查詢的結果串連在一起,通過“||”實現。

SQL>select empno || ename from emp;


例6:將student表中的sno和sname兩列合并。


為了美觀,可以為列加上別名:


拓展:可以為每列中的資料合併新的資料。比如把student表中sname和sno列合并且合并新資料。


【注意】查詢語句select再怎麼操作都不會改變表中的資料。


六、DISTINCT使用

如果查詢的結果中有重複的值,可以使用DISTINCT對重複值進行過濾。

文法結構:SQL>select distinct列名from 表名;

 

例7:查詢sc表中資訊,去重複

解:首先查詢sc表中全部資料


然後查詢sc表的cno列資料


利用distinct去重複


七、WHERE子句使用

在SELECT語句中使用WHERE子句來過濾查詢出來的結果。

文法格式:

(1)where列名比較操作符數值;

(2)where列名比較操作符運算式;

(3)where列名比較操作符列名;

Oracle提供了如下常用的比較操作符:

(1)>

(2)<

(3)=

(4)<=

(5)>=

(6)<>或 != (這倆都表示不等於)

(7)between … and …

(8)in

(9)like

 

例8:利用where子句過濾出student表中姓名為3個字的學生資訊。

解:查詢student表所有資料


利用where過濾出姓名為3個字的學生資訊


其實如中SQL語句也是where子句,兩表聯查後續會詳解。


例9:查詢工資大於1500元的員工編號和姓名

select empno,ename from emp where sal > 1500;

例10:查詢職位不是“CLERK”的員工編號和姓名

select empno,ename from emp where job <> ‘CLERK’

例11:查詢工資從1500到2900的員工資訊

select empno,ename from emp where sal between 1500 and 2900

例12:查詢工資是1500,3000,2000的員工資訊

select empno,ename from emp where sal in (1500,3000,2000);


八、AND、OR、NOT使用

AND、OR、NOT是作為Oracle中的3個邏輯運算子(操作符)。它們可以把搜尋條件中的各個部分組合起來。

 

比如:查詢工資大於1500且職位為“SALESMAN”的員工資訊

SQL>selectempno, ename from emp

2 where sal > 1500 and job =’SALESMAN’;

比如:查詢“comm”這列非空的員工資訊

SQL>selectempno, ename, comm from emp

      2 where comm is notnull’;

 

例13:查詢player表中game_id列的非空資料和空資料

解:首先查詢player表所有資料


然後查詢player表game_id列中非空資料


查詢player表game_id列中空資料


Oracle-18-select語句初步&SQL中用算術運算式&別名的使用&串連運算子%distinct&where子句

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.