select 字段名 from 表名;算法
select salary from s_emp ; (分號表明結束)
select 字段名1 ,字段名2 from 表名;sql
select ID , FIRST_NAME , SALARY from s_emp ;
標準寫法:一個一個列出來oracle
簡單寫法:*號能夠代替全部的字段名(可是這樣不知道里面有哪些字段)函數
select * from 表名;3d
+ - * / blog
select salary , salary - 100 from s_emp ;
這樣輸出後,底層記錄的salary是沒有變化的字符串
以salary+100算出一年的年薪:數學
select salary , 12*(salary + 100) from s_emp ;
一個月按照22天算,計算天天的薪水:it
select salary , salary / 22 from s_emp ;(除數不會取整,和C不同)
select 字段名1 ,字段名2 別名 from 表名;io
一個字段或者表達式只能有一個別名(也能夠沒有),別名會自動處理成大寫
「別名」會原樣顯示所取的別名
select salary , salary*13 yearsal from s_emp ;
兩個別名會報錯:
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
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 ;
select id, first_name, manager_id, nvl(manager_id, -1)
dstinct會把全部重複的數據剔除
聯合排重(多字段排重,要兩個字段都相同的纔會剔除)
select salary from s_emp ; 查出全部薪水
select distinct salary from s_emp ; 把重複的剔除
select distinct title , salary from s_emp ;聯合排重