如何從表中查詢一個字端的數據
select 字段名 from 表名;
演示:從s_emp表中把月薪查詢出來
select salary from s_emp ; (分號代表結束)
如何從表中查詢多個字段的內容
select 字段名1 ,字段名2 from 表名;
演示:把s_emp表中的id first_name salary的數據查詢出來
select ID , FIRST_NAME , SALARY from s_emp ;
如何查詢表中所有字段對應的值
標准寫法:一個一個列出來
簡單寫法:*號可以代替所有的字段名(但是這樣不知道里面有哪些字段)
select * from 表名;
字段的數學運算(sql的數學運算)
+ - * /
演示:把s_emp 表中工資和工資減去100之后的工資顯示出來
select salary , salary - 100 from s_emp ;
這樣輸出后,底層記錄的salary是沒有變化的
以salary+100算出一年的年薪:
select salary , 12*(salary + 100) from s_emp ;
一個月按照22天算,計算每天的薪水:
select salary , salary / 22 from s_emp ;(除數不會取整,和C不一樣)
給字段起別名
select 字段名1 ,字段名2 別名 from 表名;
一個字段或者表達式只能有一個別名(也可以沒有),別名會自動處理成大寫
“別名”會原樣顯示所取的別名
演示:一年按照13個月計算 來計算每個人的年薪,列出每個月的月薪
select salary , salary*13 yearsal from s_emp ;
兩個別名會報錯:
sql中如何表達字符串
sql中的字符串使用單引號表達(C里使用雙引號表達字符串字面值)
‘ ‘ ‘ ‘ ‘a’ ‘hello world’ 都是字符串
select first_name from s_emp ;也是字符串
如何拼接字符串
字符串拼接符:| |(只針對oracle,其他的可以查一下)
演示:
select first_name , last_name from s_emp ;
把名字拼接到一起:
select first_name || last_name name from s_emp ;
在姓名之間拼接一個單引號:
(在C語言中表達‘%’是%%,一個%就是占位符,%d;這里是一樣的,用兩個 ’ 表示單引號)
select first_name || ‘ ’’ ’ || last_name name from s_emp ;
在姓名之間拼接兩個單引號:
select first_name || ‘ ‘’ ’ || ‘ ‘’ ’|| last_name name from s_emp ;
或者:
select first_name || ‘ ‘’ ‘’ ’ || last_name name from s_emp ;
空值(NULL值)的處理
空值(NULL值)和任何值做運算結果都是NULL
演示:一年按照12個月進行計算,考慮提成,總共的年薪是月薪乘以12,再加上提成(表中已有的的提成是COMMISSION_PCT)
salary*12+salary*12*(COMMISSION_PCT / 100)
或者:
salary*12*(1+COMMISSION_PCT / 100)
空值處理函數:nvl ( par1 , par2 )
可以處理任何類型的數據,但要求par1和par2的類型保持一致
這個函數,當par1為空時,返回par2的值;par1不為NULL時,返回par1的值
NULL要盡早處理
演示:
select salary , commission_pct , nvl ( salary*12*(1+commission_pct/100) , 0 ) from s_emp ;
是不行的,要盡早處理,不能等着運算完再處理
正確寫法:
select salary , commission_pct , salary*12*(1+nvl ( commission_pct , 0 ) /100) from s_emp ;
演示:把每個員工的id first_name manager_id顯示出來,如果manager_id是NULL,就把manager_id顯示成-1
select id, first_name, manager_id, nvl(manager_id, -1)
數據的排重 distinct(封裝的算法我們不用了解)
dstinct會把所有重復的數據剔除
聯合排重(多字段排重,要兩個字段都相同的才會剔除)
演示:
select salary from s_emp ; 查出所有薪水
select distinct salary from s_emp ; 把重復的剔除
select distinct title , salary from s_emp ;聯合排重