1. 程式人生 > >表的查詢操作

表的查詢操作

查詢語法

select 【distinct】* form 表名

*代表所有列 ,查詢時儘量不用select *, 效率非常低

a)查詢某列

select 列名1,列名2 表名 from 表名

b)去重查詢 distinct筆試

select distinct 列名 from 表名

若加多個列名用逗號隔開,代表兩列資料都相同時才會去掉
c)對查詢的列進行算術運算

select 列名1+列名2 from 表名

d)對查詢結果重新命名 as 筆試

select 列名1+列名2 as ‘新名’ from 表名

as可省略

eg: select math+english+chinese as ’總成績’from student;

eg:將所有姓唐的學生總成績增加%60 --》先寫結果最後寫條件

 select name,(chinese+math+english)*1.6 from student 
where name like ’唐%’

%為萬用字元 表示找唐xx/ ’%唐’則是找xx唐
e)where 子句

比較運算子:between...and  閉區間查詢
           in() 具體值查詢(列舉)
           like’’
           not like’’
           is null
           > < >= <= !=
邏輯運算子:and
           or
           not

用as起的別名不能作為查詢的列名

f)排序

select * from [表名] order by [列名] asc/desc;

此處的order by 後的列名 可以引用別名
order by 語句要放在命令的最後.
g)分頁

select [列名] from [表名] where 條件 limit 啟始位置,記錄條數

select [列名] from [表名] where 條件 limit記錄條數 offset 起始位置

聚合函式
a)count 函式

select count(*)|count(列名) from [table_name] where condition

count(*)會統計一共的記錄數,count(列名)會排除為null的情況
b) sum函式返回滿足where條件的行的和

select sum(列名) {,sum(列名)...} from tbl_name [where condition]

sum僅對數值起作用,否則無意義
c)avg函式

select avg(列名) [,avg(列名),...] from tbl_name [where condition];

d) max/min函式返回滿足where條件的一列的大/小值

select max(列名) from tbl_name [where condition]

e) 對指定列進行分組
題中出現“每個”的字樣,一般需要用到分組。

select column1, column2, .. from table group by column;

having和group by配合使用,對group by結果進行過濾

select avg(sal) as myavg from EMP group by deptno having myavg<2000

多表查詢:

select column1, column2, .. from table1,table2 【where 條件】

若沒有where子句,直接用from 字句查詢兩個表,則是用的笛卡兒積查詢,這樣就有大量的重複內容,因此需要用where子句
兩個表中有列名相同的,則需要通過[表名].列名 指出需要用哪個表中的列名。
自查尋:
須在from後給表起別名,然後通過[別名.列名](select中也需這樣引用) 的方式呼叫列名
合併多個表的select執行結果
union 去重合並
union all 不去重合並
SQL查詢中各個關鍵字的執行先後順序== from > on> join > where > group by > with > having > select > distinct > order by > limit==