sql分類
SQL語言共分為三大類:數(shù)據(jù)操縱語言DML(數(shù)據(jù)查詢語言DQL),數(shù)據(jù)定義語言DDL藐吮,數(shù)據(jù)控制語言DCL。
- 數(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 - 數(shù)據(jù)定義語言DDL
數(shù)據(jù)定義語言DDL用來創(chuàng)建數(shù)據(jù)庫中的各種對(duì)象-----表吏够、視圖、
索引滩报、同義詞稿饰、聚簇等如:
CREATE TABLE/VIEW/INDEX/SYN/CLUSTER
DDL操作是隱性提交的!不能rollback - 數(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)連接。
參考連接:
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 的值伴奥。
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莺奸。
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)行讀取甫题。
tips>對(duì)于插入數(shù)據(jù)先轉(zhuǎn)換再存儲(chǔ)。
日期時(shí)間類型
如果要用來表示年月日,通常用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ǔ)懊昨。
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())详幽。
字符串類型
- 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)算符
在除法運(yùn)算和模運(yùn)算中,如果除數(shù)為0向臀,將是非法除數(shù)巢墅,返回結(jié)果為NULL。對(duì)于模運(yùn)算券膀,還有另一種表達(dá)方式君纫,使用MOD(a,b)函數(shù)與a%b效果一樣。
比較運(yùn)算符
- 比較運(yùn)算符可以用于比較數(shù)字芹彬、字符串和表達(dá)式蓄髓。數(shù)字作為浮點(diǎn)數(shù)比較,而字符串以不區(qū)分大小寫的方式進(jìn)行比較舒帮。NULL不能用=/<>,但是卻可以用<=>安全等于比較双吆。
tips LIKE "%c" 與 "%c%"的區(qū)別?
邏輯運(yùn)算符
- “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)算符 常用的
- “位與”對(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ù)常用的
- 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ù)常用的
- 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ù)
- 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ù)
- 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ù)
- 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è)空集。