SQL基礎學習6

2021-07-07 01:29:40 字數 4153 閱讀 6632

各種各樣的函式

函式的種類:

在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...