各種各樣的函式
函式的種類:
在sql中函式大致可分為以下幾種:算術函式、字串函式、日期函式、轉換函式、聚合函式
算術函式:大多數函式對null(只有有乙個引數為null)的結果都為null
+(加法)、-(減法)、*(乘法)、/(除法)
abs(列名)--求絕對值:不考慮數值符號,表示乙個數到原點距離的數值。
mod(被除數列名,除數列名)--除法餘數的函式:只能對整數型別的列使用,sql server不支援該函式
round(物件數值,保留小數的位數)--四捨五入
字串函式:如果函式引數中包含null,其結果都為null
(字串1)||(字串2)--字串拼接:可以對兩個或兩個以上的字串進行拼接
length(字串)--字串長度:求取字串中包含多少個字元
lower(字串)--小寫轉換:只能針對英文本母使用,將引數中的字串全部轉換為小寫,並不影響原本就是小寫的字元
upper(字串)--大寫轉換:只能針對英文本母使用,將引數中的字串全部轉換為大寫,並不影響原本就是大寫的字元
replace(物件字串,替換前的字串,替換後的字串)--字元替換:將字串中的一部分替換為其它的字串
substring(物件字串 from 擷取的起始位置 for 擷取的字元數)--字串擷取:擷取的位置從左側開始計算
日期函式:
current_date--當前日期:能夠返回sql執行的日期,沒有引數
select current_date;
select current_time;
select current_timestamp;
extract(日期元素 from 日期)--擷取日期元素:可以截取出日期資料中的一部分
select current_timestamp,
extract(year from current_timestamp) as year,
extract(month from current_timestamp) as month,
extract(day from current_timestamp) as day,
extract(hour from current_timestamp) as hour,
extract(minute from current_timestamp) as minute,
extract(second from current_timestamp) as second;
轉換函式:一是資料型別的轉換,二是值的轉換
cast(轉換前的值 as 想要轉換的資料型別)--型別轉換
select cast('0001' as integer) as int_col;
coalesce(資料1,資料2,資料3, ...)--將null轉換為其它值:返回可變引數中左側開始第1個不是null的值
謂詞
何為謂詞:滿足返回值是真值的函式
like謂詞——字串的部分一致查詢:
select *
from samplelike
where strcol like 'dd%';
解釋:從表samplelike中選出開頭為「dd」的字串;其中「%」表示
0字元以上的任意字串
select *
from samplelike
where strcol like '_dd';
解釋:從表samplelike中選出開頭為任意乙個字元且以「dd」結尾的字串;其中「_」表示
任意1個字元
between謂詞——範圍查詢:需要使用三個引數
select name,price
from shop
where price between 100 and 1000;
解釋:從表shop中選出price在100~1000之間的產品資訊(結果中
包含臨界值100和1000);若
不想包含臨界值必須使用《和》
is null、is not null——判斷是否為null:
select name,price
from shop
where price is null;
解釋:從表shop中選出price為null的產品資訊
in謂詞——or的簡便用法:
select name,price
from shop
where price in (100,200,300);
解釋:從表shop中選出price為100、200、300的產品資訊;若要選出price
不是100、200、300的產品資訊,可以
使用否定形式
not in(not in 代表了「以外」這樣的否定含義)
p.s:使用in和not in 是無法選取出nulll資料的
使用子查詢作為in謂詞的引數:
in/not in 和子查詢:能夠將表作為in的引數,也可以認為「能夠將檢視作為in的引數」
exist謂詞:基本上可以使用in(或者not in)來代替
select name,price
from shop as s
where exists (select *
from producer as p
where p.code='000c'
and p.name=s.name);
解釋:從表producer中選出code為「000c」,且在表producer和表shop的name相同的產品資訊
exist謂詞的使用方法:判斷是否存在滿足某種條件的記錄,若存在則返回真,若不存在則返回為假
exist的引數:左側並沒有任何引數,右側通常是乙個子查詢(關聯子查詢)
子查詢中的select *:在exist的子查詢中書寫select *為sql的一種習慣
使用not exist替換not in:當不存在滿足子查詢中指定條件的記錄時返回真
case表示式
何為case表示式:一種表示(條件)分歧的函式
case表示式的語法:分為簡單case表示式和搜尋case表示式(搜尋case包含了簡單case的全部功能)
--搜尋case表示式
case when 判斷表示式 then 表示式
when 判斷表示式 then 表示式
...else 表示式
end
解釋:when子句中的判斷表示式就是類似「列=值」這樣,返回值為真值的表示式;
case表示式從最初的when子句中的判斷表示式進行判斷開始執行。若判斷為真,則返回then子句的表示式,case表示式的執行到此為止;若判斷為假,則跳轉到下一條when子句的判斷之中。如果直到最後的when子句為止返回結果都為假,則返回else中的表示式,執行終止。
else子句可以省略不寫,自動預設為「else null」
case表示式的書寫位置:可以是任意位置
select name
case
when class='衣服' then 'a:' || class
when class='辦公用品' then 'b:' || class
when class='廚房用具' then 'c:' || class
else null
end as abc_class
from shop;
SQL學習(基礎)
sql簡介 是一種結構化查詢語言 structured query language 用於訪問和處理資料庫的標準的計算機語言。sql的作用 create select insert update delete drop 1 sql 面向資料庫執行查詢 2 sql 可從資料庫取回資料 3 sql 可在...
SQL基礎學習
order by排序語句 select limit子句 select 語句用於從資料庫中選取資料。結果被儲存在乙個結果表中,稱為結果集。sql select 語法 選取table中列為為column name的列 select column name,column name from table n...
SQL 基礎學習
1 查詢當前資料庫下所有使用者建立的表 select from sysobjects where xtype u 2 查詢當前資料庫下所有使用者建立的儲存 select from sysobjects where xtype p 解釋xtype引數的含義 c check 約束 d 預設值或 defa...