標籤:
一、一般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子句