函數(shù)在SQL數(shù)據(jù)庫(kù)中使用十分廣泛庄拇,下面分別介紹了一些比較常用的函數(shù)用法,具體請(qǐng)看下表韭邓。
函數(shù)名稱(chēng) | 作用 |
---|---|
ABS(x) | 返會(huì)的絕對(duì)值 |
SQRT(x) | 返會(huì)x的非負(fù)2次方根 |
MOD(x,y) | 返會(huì)x被y除后的余數(shù) |
CEILING(x) | 返會(huì)不小于x的最小整數(shù) |
FLOOR(x) | 返會(huì)不大于x的最大整數(shù) |
ROUND(x,y) | 對(duì)x進(jìn)行四舍五入措近,小數(shù)點(diǎn)后保留y位 |
TRUNCATE(x,y) | 舍去x中的小數(shù)點(diǎn)y位后面的數(shù) |
SIGN(x) | 返會(huì)x的符號(hào)(正負(fù)1、0) |
函數(shù)名稱(chēng) | 作用 |
---|---|
LENGTH(str) | 返會(huì)字符串的長(zhǎng)度 |
CONCAT(S1 女淑,...瞭郑,S n ) |
返會(huì)一個(gè)或者多個(gè)字符串連接產(chǎn)生的新字符串 |
trim(str) | 刪除字符串兩則的空格 |
replace(str,S1 鸭你,S 2 ) |
使用字符串S2替代字符串str中的所有字符串S1 |
substring(str屈张,n,len) | 返會(huì)字符串str的子串袱巨,起始位置為n阁谆,長(zhǎng)度為len |
reverse(str) | 返會(huì)字符串反轉(zhuǎn)后的結(jié)果 |
lacate(S1,str) | 返會(huì)字符串S1在字符串str中的起始位置 |
比較懶...就不做表格了愉老,直接上圖
函數(shù)功能(續(xù))
舉幾個(gè)實(shí)際中使用函數(shù)的語(yǔ)句
- (1)
SELECT CONCAT( id,'_', name,'_', grade,'_', gender)
FROM student;
- (2)
SELECT if(total_price % 2 = 1,total_price, 0)
FROM tb_order;
- (3)
SELECT CONCAT( id,'_', name,'_', grade,'_', gender)
FROM student;
關(guān)于表和字段的別名
- 為表取別名
SELECT * FROM 表 名 [AS] 別名;
- 為字段取別名
SELECT 字段 名 [AS] 別名[, 字段 名 [AS] 別名,…]
FROM 表 名;
多表操作(SQL中的重點(diǎn)操作)
(1) 外鍵
【概述】:外 鍵 是指 引用 另一個(gè) 表中 的 一列 或 多列场绿, 被 引 用的 列 應(yīng)該 具 有主 鍵 約束 或 唯一 性 約束。
【注意】:引入外鍵后嫉入,外鍵列的值只能是參照列的值焰盗,并且參照列中的值不能被刪除璧尸。
- 為表添加外鍵約束
alter table 表 名 add constraint FK_ ID foreign
key( 外 鍵 字段 名) REFERENCES 外表 表 名( 主 鍵 字段 名);
【補(bǔ)充】show create table 表名:可執(zhí)行此操作來(lái)查看約束效果。
【例】
create table 表名(
字段描述熬拒,
constraint fk_name foreign
key (外鍵字段名) references 外鍵表表名(主鍵字段)
)
constraint fk_name foreign key (cat_id)
references tb_category(id)
【注意點(diǎn)】:
1爷光、建立外鍵的表必須是InnoDB型。
2梦湘、定義外鍵名時(shí)不能加引號(hào)瞎颗。
添加外鍵約束參數(shù)
alter table 表 名 add constraint FK_ ID foreign key(外鍵字段名)
REFERENCES 外表表名( 主鍵字段名);
[ON DELETE {CASCADE | SET NULL | NO ACTION || RESTRICT}]
[ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT}]
- 關(guān)于幾個(gè)外鍵約束參數(shù)的功能匯總表
參數(shù)名稱(chēng)(小寫(xiě)) | 作用描述 |
---|---|
cascade | 刪除包含與已刪除鍵值有參照關(guān)系的所有記錄 |
set null | 修改包含與已刪除鍵值有參照關(guān)系的所有記錄,并使用NULL值替換(不用于已標(biāo)記的Not NULL字段) |
no action | 不進(jìn)行任何操作 |
restrict | 拒絕主表刪除或者修改外檢關(guān)聯(lián)列捌议。(在不定義ON DALETE 和ON UPDATE 的子句時(shí)哼拔,這是默認(rèn)設(shè)置,也是比較安全的設(shè)置) |
- 刪除外鍵約束
alter table 表名 drop foreign key 外鍵名;
關(guān)于 - 操作關(guān)聯(lián)表
主要分為三種情況:
1瓣颅、多對(duì)一(員工與部門(mén))外鍵倦逐;
2、多對(duì)多(課程與學(xué)生)關(guān)系表宫补;
3檬姥、一對(duì)一(證件號(hào)碼與個(gè)體)一般情況;
連接查詢(xún)
主要分為交叉連接粉怕、內(nèi)連接以及外連接三種情況健民。
- 交叉連接
【笛卡兒積】:兩個(gè)表行數(shù)的乘積。
交叉連接返會(huì)的就是笛卡爾積贫贝。
SELECT * FROM department(部門(mén)) CROSS JOIN employee(員工);
- 內(nèi)連接
【解釋】:在內(nèi)連接查詢(xún) 中秉犹, 只有滿(mǎn)足 條件的記錄才能出現(xiàn)在查詢(xún)結(jié)果中。
SELECT 查詢(xún) 字段 FROM 表 1
[INNER] JOIN 表 2 ON 表 1\. 關(guān)系字段 = 表 2\. 關(guān)系字段
- 外連接
【解釋】: 返回查詢(xún)結(jié)果中不僅包含符合條件的數(shù)據(jù)稚晚,而且還包括左表( 左連接或左外連接)崇堵、右表(右連接或右外連接)或兩個(gè)表(全外連接)中的所有數(shù)據(jù)。
SELECT 所 查字 段 FROM 表 1 LEFT| RIGHT [OUTER] JOIN 表 2
ON 表 1\. 關(guān)系 字段= 表 2\. 關(guān)系 字段 WHERE 條件
關(guān)于左連接與右連接的區(qū)別
- LEFT JOIN(左連接):返會(huì)包括左表中的所有記錄和右表中符合連接的條件的記錄客燕;
- RIGHT JOIN(右連接):返會(huì)包括右表中的所有記錄和左表中符合連接的條件的記錄鸳劳;(沒(méi)有數(shù)據(jù)的部分,使用NULL來(lái)補(bǔ)充)
子查詢(xún)
【解釋】:指 一個(gè)查詢(xún)語(yǔ)句嵌套在另 一個(gè)查詢(xún)語(yǔ)句內(nèi)部的查詢(xún)也搓。
- 帶 IN 關(guān)鍵字的子查詢(xún)
SELECT * FROM department WHERE did
IN( SELECT did FROM employee WHERE age= 20);
- 帶 ANY 關(guān)鍵字的子查詢(xún)
SELECT * FROM department
WHERE did > any( select did from employee);
- 帶 ALL 關(guān)鍵字的子查詢(xún)
SELECT * FROM department
WHERE did > all( select did from employee);
- 帶 比較運(yùn)算符 的子查詢(xún)
SELECT * FROM department
WHERE did=( select did from employee where name=' GGG');