mysql基礎(chǔ)篇-語法/數(shù)據(jù)類型/運(yùn)算符/常用函數(shù)

sql分類

SQL語言共分為三大類:數(shù)據(jù)操縱語言DML(數(shù)據(jù)查詢語言DQL),數(shù)據(jù)定義語言DDL藐吮,數(shù)據(jù)控制語言DCL。
  1. 數(shù)據(jù)查詢語言DQL
    數(shù)據(jù)查詢語言DQL基本結(jié)構(gòu)是由SELECT子句浪规,F(xiàn)ROM子句招刹,WHERE
    子句組成的查詢塊:
    SELECT <字段名表>
    FROM <表或視圖名>
    WHERE <查詢條件>
    數(shù)據(jù)操縱語言DML
    數(shù)據(jù)操縱語言DML主要有三種形式:插入:INSERT,更新:UPDATE审丘,刪除:DELETE
  2. 數(shù)據(jù)定義語言DDL
    數(shù)據(jù)定義語言DDL用來創(chuàng)建數(shù)據(jù)庫中的各種對(duì)象-----表吏够、視圖、
    索引滩报、同義詞稿饰、聚簇等如:
    CREATE TABLE/VIEW/INDEX/SYN/CLUSTER
    DDL操作是隱性提交的!不能rollback
  3. 數(shù)據(jù)控制語言DCL
    數(shù)據(jù)控制語言DCL用來授予或回收訪問數(shù)據(jù)庫的某種特權(quán)露泊,并控制
    數(shù)據(jù)庫操縱事務(wù)發(fā)生的時(shí)間及效果,對(duì)數(shù)據(jù)庫實(shí)行監(jiān)視等旅择。如:
    GRANT:授權(quán)惭笑,revoke:回收。
    ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一點(diǎn)生真。
    回滾---ROLLBACK
    回滾命令使數(shù)據(jù)庫狀態(tài)回到上次最后提交的狀態(tài)沉噩。其格式為:
    SQL>ROLLBACK;
    COMMIT [WORK]:提交。
    在數(shù)據(jù)庫的插入柱蟀、刪除和修改操作時(shí)川蒙,只有當(dāng)事務(wù)在提交到數(shù)據(jù)
    庫時(shí)才算完成。在事務(wù)提交前长已,只有操作數(shù)據(jù)庫的這個(gè)人才能有權(quán)看
    到所做的事情畜眨,別人只有在最后提交完成后才可以看到昼牛。
    提交數(shù)據(jù)有三種類型:顯式提交、隱式提交及自動(dòng)提交康聂。下面分
    別說明這三種類型:
    1)顯式提交
    用COMMIT命令直接完成的提交為顯式提交贰健。其格式為:
    SQL>COMMIT;
    2)隱式提交
    用SQL命令間接完成的提交為隱式提交恬汁。這些命令是:
    ALTER伶椿,AUDIT,COMMENT氓侧,CONNECT脊另,CREATE,DISCONNECT约巷,DROP偎痛,
    EXIT,GRANT载庭,NOAUDIT看彼,QUIT,REVOKE囚聚,RENAME靖榕。
    3)自動(dòng)提交
    若把AUTOCOMMIT設(shè)置為ON,則在插入顽铸、修改茁计、刪除語句執(zhí)行后,
    系統(tǒng)將自動(dòng)進(jìn)行提交谓松,這就是自動(dòng)提交星压。其格式為:
    SQL>SET AUTOCOMMIT ON;
dcl語句主要是運(yùn)維同時(shí)用的比較多鬼譬,私下了解就行
ddl語句匯總

1.創(chuàng)建數(shù)據(jù)庫 CREATE DATABASE dbname
2.選擇數(shù)據(jù)庫 USE dbname
3.數(shù)據(jù)庫中創(chuàng)建的所有數(shù)據(jù)表 show tables
4.刪除數(shù)據(jù)庫 drop database dbname(慎用)
5.創(chuàng)建表

CREATE TABLE tablename (column_name_1 column_type_1 constraints,column_name_2 column_type_2 constraints)

6.查看表定義 DESC tablename / show create table tal_name
7.刪除表 DROP TABLE tablename(慎用)
8.修改表

(1)修改表字段類型娜膘,語法如下:ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST | AFTERcol_name]
(2)增加表字段,語法如下:ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST | AFTER col_name]
(3)刪除表字段优质,語法如下:ALTER TABLE tablename DROP [COLUMN] col_name
(4)字段改名竣贪,語法如下:ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_definition[FIRST|AFTER col_name]
(5)更改表名,語法如下:ALTER TABLE tablename RENAME [TO] new_tablename

tips > change 與 modify的區(qū)別是什么巩螃?

dml語句匯總
1.插入記錄INSERT INTO 
tablename (field1,field2,…,fieldn) VALUES(value1,value2,…,valuen);
可以一次性插入多條記錄(節(jié)省網(wǎng)絡(luò)開銷提高效率)演怎,語法如下:
INSERT INTO tablename (field1, field2, …, fieldn)VALUES(record1_value1, record1_value2, …, record1_valuesn),(record2_value1, record2_value2, …, record2_valuesn)
2.更新記錄
UPDATE tablename SET field1=value1,field2.=value2,…,fieldn=valuen [WHERECONDITION]
update命令可以同時(shí)更新多個(gè)表中數(shù)據(jù),語法如下:
UPDATE t1,t2,…,tn set t1.field1=expr1,tn.fieldn=exprn [WHERE CONDITION]
3.刪除記錄(慎用避乏,注意where條件)
DELETE FROM tablename [WHERE CONDITION]
在MySQL中可以一次刪除多個(gè)表的數(shù)據(jù)爷耀,語法如下:
DELETE t1,t2,…,tn FROM t1,t2,…,tn [WHERE CONDITION]
4.查詢記錄(條件查詢)
SELECT * FROM tablename [WHERE CONDITION]
不重復(fù)查詢 在重復(fù)字段前加 distinct 關(guān)鍵字
排序及限制查詢 ORDER BY后面可以跟多個(gè)不同的排序字段,并且每個(gè)排序字段可以有不同的排序順序拍皮,按照排序字段依次排序展示歹叮。limit限制展示數(shù)量跑杭。
5.聚合
SELECT [field1,field2,…,fieldn] fun_nameFROM tablename[WHERE where_contition][GROUP BY field1,field2,…,fieldn[WITH ROLLUP]][HAVING where_contition]
6.子查詢
某些情況下,當(dāng)進(jìn)行查詢的時(shí)候盗胀,需要的條件是另外一個(gè)select語句的結(jié)果艘蹋,這個(gè)時(shí)候,就要用到子查詢票灰。用于子查詢的關(guān)鍵字主要包括 in女阀、not in、=屑迂、!=浸策、exists、not exists等惹盼。(子查詢和表連接的轉(zhuǎn)換)
7.記錄聯(lián)合
SELECT * FROM t1UNION|UNION ALLSELECT * FROM t2

tips > where 與 having的區(qū)別庸汗?count(*)與 count(ID)的區(qū)別?union 與 union all的區(qū)別手报?

dml表連接

當(dāng)需要同時(shí)顯示多個(gè)表中的字段時(shí)蚯舱,就可以用表連接來實(shí)現(xiàn)這樣的功能。從大類上分掩蛤,表連接分為內(nèi)連接和外連接枉昏,它們之間的最主要區(qū)別是,內(nèi)連接僅選出兩張表中互相匹配的記錄揍鸟,而外連接會(huì)選出其他不匹配的記錄兄裂。我們最常用的是內(nèi)連接。


image.png
參考連接:
https://blog.csdn.net/github_36849773/article/details/76940987?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase

數(shù)據(jù)類型

每一個(gè)常量阳藻、變量和參數(shù)都有數(shù)據(jù)類型晰奖,它用來指定一定的存儲(chǔ)格式、約束和有效范圍腥泥。MySQL提供了多種數(shù)據(jù)類型匾南,主要包括數(shù)值型、字符串類型蛔外、日期和時(shí)間類型蛆楞。

數(shù)值類型

1.整數(shù)類型,如果超出類型范圍的操作冒萄,會(huì)發(fā)生“Out of range”錯(cuò)誤提示。MySQL還支持在類型名稱后面的小括號(hào)內(nèi)指定顯示寬度橙数,例如int(5)表示當(dāng)數(shù)值寬度小于5位的時(shí)候在數(shù)字前面填滿寬度尊流,如果不顯示指定寬度則默認(rèn)為int(11)。一般配合zerofill使用灯帮,顧名思義崖技,zerofill就是用“0”填充的意思逻住,也就是在數(shù)字位數(shù)不夠的空間用字符“0”填滿。整數(shù)類型還有一個(gè)屬性:AUTO_INCREMENT迎献。在需要產(chǎn)生唯一標(biāo)識(shí)符或順序值時(shí)瞎访,可利用此屬性,這個(gè)屬性只用于整數(shù)類型吁恍。AUTO_INCREMENT值一般從1開始扒秸,每行增加1。在插入NULL到一個(gè)AUTO_INCREMENT列時(shí)冀瓦,MySQL插入一個(gè)比該列中當(dāng)前最大值大1 的值伴奥。


image.png

tips>int(2)輸入10000,能正常存入嗎?

2.浮點(diǎn)數(shù)和定點(diǎn)數(shù)翼闽。浮點(diǎn)數(shù)包括 float(單精度)和double(雙精度)拾徙,而定點(diǎn)數(shù)則只有decimal一種表示。定點(diǎn)數(shù)在MySQL內(nèi)部以字符串形式存放尼啡,比浮點(diǎn)數(shù)更精確崖瞭,適合用來表示貨幣等精度高的數(shù)據(jù)读恃。浮點(diǎn)數(shù)和定點(diǎn)數(shù)都可以用類型名稱后加“(M,D)”的方式來進(jìn)行表示寺惫,float和double在不指定精度時(shí)西雀,默認(rèn)會(huì)按照實(shí)際的精度(由實(shí)際的硬件和操作系統(tǒng)決定)來顯示艇肴,而decimal在不指定精度時(shí)再悼,默認(rèn)的整數(shù)位為10冲九,默認(rèn)的小數(shù)位為0莺奸。


image.png

3.BIT(位)類型温学,用于存放位字段值仗岖,BIT(M)可以用來存放多位二進(jìn)制數(shù)箩帚,M范圍從1~64紧帕,如果不寫則默認(rèn)為1位。對(duì)于位字段鹅搪,直接使用SELECT命令將不會(huì)看到結(jié)果丽柿,可以用bin()(顯示為二進(jìn)制格式)或者h(yuǎn)ex()(顯示為十六進(jìn)制格式)函數(shù)進(jìn)行讀取甫题。


image.png

tips>對(duì)于插入數(shù)據(jù)先轉(zhuǎn)換再存儲(chǔ)。

日期時(shí)間類型
image.png

如果要用來表示年月日,通常用DATE來表示潦闲。如果要用來表示年月日時(shí)分秒歉闰,通常用DATETIME表示新娜。如果只用來表示時(shí)分秒,通常用TIME來表示私杜。如果需要經(jīng)常插入或者更新日期為當(dāng)前系統(tǒng)時(shí)間救欧,則通常使用TIMESTAMP來表示笆怠。TIMESTAMP值返回后顯示為“YYYY-MM-DD HH:MM:SS”格式的字符串瓢捉,顯示寬度固定為19個(gè)字符泡态。如果想要獲得數(shù)字值某弦,應(yīng)在TIMESTAMP 列添加“+0”。如果只是表示年份亮钦,可以用YEAR來表示蜂莉,它比DATE占用更少的空間。YEAR有2位或4位格式的年蚁滋。默認(rèn)是4位格式辕录。在4位格式中走诞,允許的值是1901~2155和0000碑幅。如果超出這個(gè)范圍沟涨,在默認(rèn)的SQLMode下,系統(tǒng)會(huì)進(jìn)行錯(cuò)誤提示篮昧,并將以零值來進(jìn)行存儲(chǔ)懊昨。


image.png

tips>我們用int存儲(chǔ)的時(shí)間戳有什么問題月帝?

  • 注意簿姨,可以發(fā)現(xiàn)扁位,系統(tǒng)給TIMESTAMP屬性的列自動(dòng)創(chuàng)建了默認(rèn)值CURRENT_TIMESTAMP(系統(tǒng)日期),MySQL只給表中的第一個(gè)TIMESTAMP字段設(shè)置默認(rèn)值為系統(tǒng)日期泼掠,如果有第二個(gè)TIMESTAMP類型,則默認(rèn)值設(shè)置為0值沐鼠。TIMESTAMP還有一個(gè)重要特點(diǎn)乘盖,就是和時(shí)區(qū)相關(guān)析苫。
  • 日期類型的插入格式有很多,包括整數(shù)(如2100)茫死、字符串(如 2038-01-19 11:14:08)忆首、函數(shù)(如NOW())详幽。
字符串類型
image.png
  • CHAR和VARCHAR很類似,都用來保存MySQL中較短的字符串。二者的主要區(qū)別在于存儲(chǔ)方式的不同:CHAR列的長度固定為創(chuàng)建表時(shí)聲明的長度炒嘲,長度可以為從0~255的任何值;而VARCHAR列中的值為可變長字符串,長度可以指定為0~255(MySQL 5.0.3版本以前)或者65535(MySQL 5.0.3版本以后)之間的值。在檢索的時(shí)候,CHAR列刪除了尾部的空格,而VARCHAR則保留這些空格。

TIPS> v varchar(4),c char(4) 分別存入"ab", select length(v),length(v)?

  • BINARY和VARBINARY類型婆赠,BINARY和VARBINARY類似于CHAR和VARCHAR,不同的是它們包含二進(jìn)制字符串而不包含非二進(jìn)制字符串。當(dāng)保存BINARY值時(shí),在值的最后通過填充“0x00”(零字節(jié))以達(dá)到指定的字段定義長度。

  • ENUM類型呕缭,ENUM中文名稱叫枚舉類型睬愤,它的值范圍需要在創(chuàng)建表時(shí)通過枚舉方式顯式指定厢岂,對(duì)1~255個(gè)成員的枚舉需要1個(gè)字節(jié)存儲(chǔ)窗怒;對(duì)于255~65535個(gè)成員,需要2個(gè)字節(jié)存儲(chǔ)堪置。最多允許有65535個(gè)成員。ENUM類型是忽略大小寫的宛逗,在存儲(chǔ)“M”坎匿、“f”時(shí)將它們都轉(zhuǎn)成了大寫,對(duì)于插入不在 ENUM 指定范圍內(nèi)的值時(shí)雷激,并沒有返回警告替蔬,而是插入了enum('M','F')的第一個(gè)值“M”。ENUM類型只允許從值集合中選取單個(gè)值屎暇,而不能一次取多個(gè)值承桥。

  • SET類型SET和ENUM類型非常類似,也是一個(gè)字符串對(duì)象根悼,里面可以包含0~64個(gè)成員凶异。根據(jù)成員的不同蜀撑,存儲(chǔ)上也有所不同。1~8成員的集合唠帝,占1個(gè)字節(jié)屯掖。9~16成員的集合,占2個(gè)字節(jié)襟衰。17~24成員的集合贴铜,占3個(gè)字節(jié)。25~32成員的集合瀑晒,占4個(gè)字節(jié)绍坝。33~64成員的集合,占8個(gè)字節(jié)苔悦。SET 和 ENUM 除了存儲(chǔ)之外轩褐,最主要的區(qū)別在于 SET 類型一次可以選取多個(gè)成員,而ENUM則只能選一個(gè)玖详。對(duì)于超出允許值范圍的值把介,將不允許注入到上面例子中設(shè)置的SET類型列中,而對(duì)于('a,d,a')這樣包含重復(fù)成員的集合將只取一次蟋座,寫入后的結(jié)果為“a,d”拗踢。

MySQL中的運(yùn)算符

算術(shù)運(yùn)算符
image.png

在除法運(yùn)算和模運(yùn)算中,如果除數(shù)為0向臀,將是非法除數(shù)巢墅,返回結(jié)果為NULL。對(duì)于模運(yùn)算券膀,還有另一種表達(dá)方式君纫,使用MOD(a,b)函數(shù)與a%b效果一樣。

比較運(yùn)算符
image.png

image.png
  • 比較運(yùn)算符可以用于比較數(shù)字芹彬、字符串和表達(dá)式蓄髓。數(shù)字作為浮點(diǎn)數(shù)比較,而字符串以不區(qū)分大小寫的方式進(jìn)行比較舒帮。NULL不能用=/<>,但是卻可以用<=>安全等于比較双吆。

tips LIKE "%c" 與 "%c%"的區(qū)別?

邏輯運(yùn)算符
image.png
  • “NOT”或“会前!”表示邏輯非好乐。返回和操作數(shù)相反的結(jié)果:當(dāng)操作數(shù)為0(假),則返回值為 1瓦宜,否則值為 0蔚万。但是有一點(diǎn)除外,那就是NOT NULL的返回值為NULL
    -“XOR”表示邏輯異或临庇。當(dāng)任意一個(gè)操作數(shù)為NULL時(shí)反璃,返回值為NULL昵慌。對(duì)于非NULL的操作數(shù),如果兩個(gè)的邏輯真假值相異淮蜈,則返回結(jié)果1斋攀,否則返回0
位運(yùn)算符 常用的
image.png
  • “位與”對(duì)多個(gè)操作數(shù)的二進(jìn)制位做邏輯與操作,例如2&3梧田,因?yàn)?的二進(jìn)制數(shù)是10淳蔼, 3是11,所有10&11的結(jié)果是10裁眯,十進(jìn)制數(shù)字還是2

常用函數(shù)

常用的函數(shù)有字符串函數(shù)鹉梨、日期函數(shù)和數(shù)值函數(shù)。在MySQL數(shù)據(jù)庫中穿稳,函數(shù)可以用在SELECT語句及其子句(例如WHERE存皂、ORDER BY、HAVING等)中逢艘,也可以用在UPDATE旦袋、DELETE語句及其子句中

字符串函數(shù)常用的
image.png

image.png
  • CONCAT(S1,S2,…Sn)函數(shù):把傳入的參數(shù)連接成為一個(gè)字符串。把“aaa”它改、“bbb”疤孕、“ccc”3個(gè)字符串連接成了一個(gè)字符串“aaabbbccc”。另外搔课,任何字符串與NULL進(jìn)行連接的結(jié)果都將是NULL胰柑。
  • INSERT(str,x,y,instr)函數(shù):將字符串str從第x位置開始截亦,y個(gè)字符長的子串替換為字符串instr爬泥。下面的例子把字符串“beijing2008you”中從第12個(gè)字符開始以后的3個(gè)字符替換成“me”。mysql> select INSERT('beijing2008you',12,3, 'me') ;
  • LOWER(str)和UPPER(str)函數(shù):把字符串轉(zhuǎn)換成小寫或大寫。
  • LEFT(str,x)和RIGHT(str,x)函數(shù):分別返回字符串最左邊的x個(gè)字符和最右邊的x個(gè)字符。如果第二個(gè)參數(shù)是NULL谍倦,那么將不返回任何字符串衅檀。下例中顯示了對(duì)字符串“beijing2008”應(yīng)用函數(shù)后的結(jié)果。mysql> SELECT LEFT('beijing2008',7),LEFT('beijing',null),RIGHT('beijing2008',4);
  • LPAD(str,n,pad)和RPAD(str,n,pad)函數(shù):用字符串pad對(duì)str最左邊和最右邊進(jìn)行填充理盆,直到長度為n個(gè)字符長度。
  • LTRIM(str)和RTRIM(str)函數(shù):去掉字符串str左側(cè)和右側(cè)空格。
  • REPEAT(str,x)函數(shù):返回str重復(fù)x次的結(jié)果嗅剖。
  • REPLACE(str,a,b)函數(shù):用字符串b替換字符串str中所有出現(xiàn)的字符串a(chǎn)。
  • STRCMP(s1,s2)函數(shù):比較字符串s1和s2的ASCII碼值的大小嘁扼。如果s1比s2小信粮,那么返回-1;如果s1與s2相等趁啸,那么返回0强缘;如果s1比s2大督惰,那么返回1,如下例所示旅掂。
  • TRIM(str)函數(shù):去掉目標(biāo)字符串的開頭和結(jié)尾的空格赏胚。
  • SUBSTRING(str,x,y)函數(shù):返回從字符串str中的第x位置起y個(gè)字符長度的字串。
數(shù)值函數(shù)常用的
image.png
  • ABS(x)函數(shù):返回x的絕對(duì)值商虐。
  • CEIL(x)函數(shù):返回大于x的最小整數(shù)觉阅。
  • FLOOR(x)函數(shù):返回小于x的最大整數(shù),和CEIL的用法剛好相反称龙。
  • MOD(x,y)函數(shù):返回x/y的模留拾。和x%y的結(jié)果相同,模數(shù)和被模數(shù)任何一個(gè)為NULL結(jié)果都為NULL
  • RAND()函數(shù):返回0~1內(nèi)的隨機(jī)值鲫尊。

tips 10/100/1000 如何獲取

  • ROUND(x,y)函數(shù):返回參數(shù)x的四舍五入的有y位小數(shù)的值痴柔。
  • TRUNCATE(x,y)函數(shù):返回?cái)?shù)字x截?cái)酁閥位小數(shù)的結(jié)果。注意TRUNCATE和ROUND的區(qū)別在于TRUNCATE僅僅是截?cái)嘁呦颍贿M(jìn)行四舍五入咳蔚。
日期和時(shí)間函數(shù)常用函數(shù)
image.png
  • CURDATE()函數(shù):返回當(dāng)前日期,只包含年月日
  • CURTIME()函數(shù):返回當(dāng)前時(shí)間搔驼,只包含時(shí)分秒谈火。
  • NOW()函數(shù):返回當(dāng)前的日期和時(shí)間,年月日時(shí)分秒全都包含舌涨。
  • UNIX_TIMESTAMP(date)函數(shù):返回日期date的UNIX時(shí)間戳糯耍。
  • FROM_UNIXTIME(unixtime)函數(shù):返回 UNIXTIME 時(shí)間戳的日期值,和UNIX_TIMESTAMP(date)互為逆操作囊嘉。
  • WEEK(DATE)和 YEAR(DATE)函數(shù):前者返回所給的日期是一年中的第幾周温技,后者返回所給的日期是哪一年。
  • HOUR(time)和MINUTE(time)函數(shù):前者返回所給時(shí)間的小時(shí)扭粱,后者返回所給時(shí)間的分鐘舵鳞。
  • MONTHNAME(date)函數(shù):返回date的英文月份名稱。mysql> select MONTHNAME(now());
  • DATE_FORMAT(date,fmt)函數(shù):按字符串 fmt 格式化日期 date 值琢蛤,此函數(shù)能夠按指定的格式顯示日期蜓堕,mysql> select DATE_FORMAT(now(),'%M,%D,%Y');


    image.png
  • DATE_ADD(date,INTERVAL expr type)函數(shù):返回與所給日期date相差 INTERVAL時(shí)間段的日期。其中INTERVAL是間隔類型關(guān)鍵字博其,expr是一個(gè)表達(dá)式套才,這個(gè)表達(dá)式對(duì)應(yīng)后面的類型, type是間隔類型慕淡。mysql> select now() current,date_add(now(),INTERVAL 31 day) after31days,date_add(now(),INTERVAL '1_2' year_month) after_oneyear_twomonth;


    image.png
  • 同樣也可以用負(fù)數(shù)讓它返回之前的某個(gè)日期時(shí)間背伴,如下第1列返回了當(dāng)前日期時(shí)間,第2列返回距離當(dāng)前日期31天前的日期時(shí)間,第3列返回距離當(dāng)前日期一年兩個(gè)月前的日期時(shí)間挂据。mysql> select now() current,date_add(now(),INTERVAL -31 day) after31days, date_add(now(),INTERVAL '-1_-2' year_month) after_oneyear_twomonth;
  • DATEDIFF(date1以清,date2)函數(shù):用來計(jì)算兩個(gè)日期之間相差的天數(shù)。

距離北京冬奧會(huì)開幕時(shí)間崎逃?

流程函數(shù) 常用函數(shù)
image.png
  • IF(value,t,f)函數(shù):這里認(rèn)為月薪在2000元以上的職員屬于高薪掷倔,用“high”表示;而2000元以下的職員屬于低薪个绍,用“l(fā)ow”表示勒葱。
  • IFNULL(value1,value2)函數(shù):這個(gè)函數(shù)一般用來替換 NULL 值,我們知道 NULL 值是不能參與數(shù)值運(yùn)算的巴柿。
  • CASE WHEN [value1] THEN[result1]…ELSE[default]END函數(shù):這里也可以用 case when…then函數(shù)凛虽。
  • CASE [expr] WHEN [value1] THEN[result1]…ELSE[default]END函數(shù):這里還可以分多種情況把職員的薪水分多個(gè)檔次,比如下面的例子分成高广恢、中凯旋、低3種情況。
其他函數(shù) 常用函數(shù)
image.png
  • INET_ATON(IP)函數(shù):返回IP地址的網(wǎng)絡(luò)字節(jié)序表示钉迷。
  • INET_NTOA(num)函數(shù):返回網(wǎng)絡(luò)字節(jié)序代表的IP地址至非。

tips
按照正常的思維,應(yīng)該用字符串來進(jìn)行比較糠聪,下面是字符串的比較結(jié)果:mysql> select * from t where ip>='192.168.1.3' and ip<='192.168.1.20';
結(jié)果沒有如我們所愿荒椭,竟然是個(gè)空集。其實(shí)原因就在于字符串的比較是一個(gè)字符一個(gè)字符的比較舰蟆,當(dāng)對(duì)應(yīng)字符相同時(shí)趣惠,就比較下一個(gè),直到遇到能區(qū)分出大小的字符才停止比較身害,后面的字符也將忽略味悄。顯然,在此例中题造,“192.168.1.3”其實(shí)比“192.168.1.20”要“大”傍菇,因?yàn)椤?”比“2”大猾瘸,而不能用我們?nèi)粘5乃季S 3<20界赔,所以“ip>='192.168.1.3' and ip<='192.168.1.20'”必然是個(gè)空集。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末牵触,一起剝皮案震驚了整個(gè)濱河市淮悼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌揽思,老刑警劉巖袜腥,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異钉汗,居然都是意外死亡羹令,警方通過查閱死者的電腦和手機(jī)鲤屡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來福侈,“玉大人酒来,你說我怎么就攤上這事》玖荩” “怎么了堰汉?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長伟墙。 經(jīng)常有香客問我翘鸭,道長,這世上最難降的妖魔是什么戳葵? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任就乓,我火速辦了婚禮,結(jié)果婚禮上拱烁,老公的妹妹穿的比我還像新娘档址。我一直安慰自己,他們只是感情好邻梆,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布守伸。 她就那樣靜靜地躺著,像睡著了一般浦妄。 火紅的嫁衣襯著肌膚如雪尼摹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天剂娄,我揣著相機(jī)與錄音蠢涝,去河邊找鬼。 笑死阅懦,一個(gè)胖子當(dāng)著我的面吹牛和二,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播耳胎,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼惯吕,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了怕午?” 一聲冷哼從身側(cè)響起废登,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎郁惜,沒想到半個(gè)月后堡距,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年羽戒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缤沦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡易稠,死狀恐怖疚俱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情缩多,我是刑警寧澤呆奕,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站衬吆,受9級(jí)特大地震影響梁钾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜逊抡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一姆泻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冒嫡,春花似錦拇勃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蟀架,卻和暖如春瓣赂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背片拍。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國打工煌集, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捌省。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓苫纤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親纲缓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子卷拘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359