MySQL學(xué)習(xí)day-33: 查詢數(shù)據(jù)

一、MySQL 中的 DML 操作

1.添加數(shù)據(jù)(INSERT):

(1)選擇插入:

語(yǔ)法:INSERTINTO 表名(列名 1氛堕,列名 2揉抵,列名 3.....)VALUES(值 1,值 2裁赠,值 3......)闯传;

(2)完全插入:

語(yǔ)法:INSERTINTO 表名 VALUES(值 1谨朝,值 2,值 3......);

(3)插入多條數(shù)據(jù):

語(yǔ)法:insert into 表名[(列名1,列名2....)] values(值1,值2...),(值21,值22...)...字币;

2.自動(dòng)增長(zhǎng)(auto_increment):

MySQL 中的自動(dòng)增長(zhǎng)類型要求:

1)一個(gè)表中只能有一個(gè)列為自動(dòng)增長(zhǎng)则披。?

2)自動(dòng)增長(zhǎng)的列的類型必須是整數(shù)類型。?

3)自動(dòng)增長(zhǎng)只能添加到具備主鍵約束與唯一性約束的列上洗出。?

4)刪除主鍵約束或唯一性約束士复,如果該列擁有自動(dòng)增長(zhǎng)能力,則需要先去掉自動(dòng)增長(zhǎng)然 后在刪除約束共苛。

(2)默認(rèn)值處理:

在 MySQL 中可以使用 DEFAULT 為字段設(shè)定一個(gè)默認(rèn)值判没。如果在插入數(shù)據(jù)時(shí)并未指

定該列的值,那么 MySQL 會(huì)將默認(rèn)值添加到該列中隅茎。

創(chuàng)建表時(shí)指定列的默認(rèn)值:

create table 表名(列名1 類型 約束 ,列名2 類型,列名3 類型 default 默認(rèn)值)嫉沽;

插入數(shù)據(jù)時(shí)的默認(rèn)值處理:

如果在插入數(shù)據(jù)時(shí)并未指定該列的值辟犀,那么 MySQL 會(huì)將默認(rèn)值添加到該列中。如果是 完全項(xiàng)插入需要使用 default 來占位绸硕。

3.更新數(shù)據(jù)(UPDATE):

語(yǔ)法:UPDATE 表名 SET 列名=值堂竟,列名=值 WHERE 條件;

(1)mysql 的 update 的特點(diǎn):

1)更新的表不能在 set 和 where 中用于子查詢;?

2)update 后面可以做任意的查詢玻佩。

4.刪除數(shù)據(jù)(DELETE):

(1)使用 DELETE 子句:

語(yǔ)法:DELETEFROM 表名 WHERE 條件出嘹;

(2)使用 TRUNCATE 清空表:

語(yǔ)法:TRUNCATETABLE 表名;

(3)DELETE 與 TRUNCATE 區(qū)別:

1)truncate 是整體刪除(速度較快)咬崔, delete 是逐條刪除(速度較慢)税稼;?

2)truncate 不寫服務(wù)器 log,delete 寫服務(wù)器 log垮斯,也就是 truncate 效率比 delete 高的原因郎仆;?

3)truncate 是會(huì)重置自增值,相當(dāng)于自增列會(huì)被置為初始值兜蠕,又重新從 1 開始記錄扰肌,而 不是接著原來的值。而 delete 刪除以后熊杨,自增值仍然會(huì)繼續(xù)累加曙旭。

5.MySQL 中的事務(wù)處理:

在 MySQL 中,默認(rèn)情況下晶府,事務(wù)是自動(dòng)提交的桂躏,也就是說,只要執(zhí)行一條 DML 語(yǔ)句 就開啟了事物郊霎,并且提交了事務(wù)沼头。

(1)關(guān)閉 MySQL 的事務(wù)自動(dòng)提交:

STARTTRANSACTION?

DML操作....?

COMMIT|ROLLBACK;

二、MySQL 查詢數(shù)據(jù)

1.MySQL 的基本查詢:

(1)MySQL 的列選擇:

SELECT*/投影列 FROM 表名;

(2)MySQL 的行選擇:

SELECT*| 投影列 FROM 表名 WHERE 選擇條件进倍;

2.SELECT 語(yǔ)句中的算術(shù)表達(dá)式:

1)+ :加法運(yùn)算土至;

2)- :減法運(yùn)算;

3)* :乘法運(yùn)算 猾昆;

4)/ :除法運(yùn)算陶因,返回商 ;

5)% :求余運(yùn)算垂蜗,返回余數(shù)楷扬;

3.MySQL 中定義空值:

包含空值的算術(shù)表達(dá)式計(jì)算結(jié)果為空。

4.MySQL 中的列別名:

語(yǔ)法:SELECT 列名 AS 列別名 FROM 表名 WHERE 條件贴见;

5.MySQL 中的連字符:

MySQL中并不支持||作為連字符烘苹,需要使用concat函數(shù)。在參數(shù)數(shù)量上與oracle的concat 函數(shù)有區(qū)別片部。

6.MySQL 中去除重復(fù):

在 SELECT 語(yǔ)句中用 DISTINCT 關(guān)鍵字除去相同的行镣衡。

7.約束和排序數(shù)據(jù):

(1)MySQL 中的比較條件:

比較運(yùn)算符:等于=;大于>档悠;大于等于>= 廊鸥;小于<;小于等于<=辖所;不等于!=或<>惰说;

(2)模糊查詢:

關(guān)鍵字:like

%表示任意多個(gè)任意字符 ;

_表示一個(gè)任意字符缘回。

(3)邏輯運(yùn)算符:

and 吆视、or 、not切诀;

(4)范圍查詢:

1)between...and揩环;

2)in 表示在一個(gè)非連續(xù)的范圍內(nèi)。

區(qū)別:

1)如果要讓選擇的結(jié)果在某一個(gè)范圍之內(nèi)的話可以用between和in這兩個(gè)關(guān)鍵字幅虑。

2)如果他們都為空的話丰滑,between會(huì)限制select語(yǔ)句讓它一條記錄都無法選出來,但是in的話則相反倒庵,這個(gè)限制條件不會(huì)起任何作用褒墨,會(huì)選擇出所有的記錄。

(5)空值判斷:

1)判斷空 isnull 擎宝;

2)判斷非空 is not null郁妈;

(6)使用 ORDERBY 排序:

用 ORDERBY 子句排序默認(rèn)升序;

1)ASC: 升序排序绍申;

2)DESC: 降序排序噩咪;

8.MySQL 中常見的單行函數(shù):

(1)大小寫控制函數(shù):

1)LOWER(str) 轉(zhuǎn)換大小寫混合的字符串為小寫字符串顾彰;

2)UPPER(str) 轉(zhuǎn)換大小寫混合的字符串為大寫字符串。

(2)字符處理:

1)CONCAT(str1,str2,...) 將 str1胃碾、str2 等字符串連接起來 涨享;

2)SUBSTR(str,pos,len) 從 str 的第 pos 位(范圍:1~str.length)開始,截取長(zhǎng)度為 len 的字符串仆百;

3)LENGTH(str) 獲取 str 的長(zhǎng)度 INSTR(str,substr) 獲取 substr 在 str 中的位置 厕隧;

4)TRIM(str) 從 str 中刪除開頭和結(jié)尾的空格(不會(huì)處理字符串中間含有的空格);

5)LTRIM(str) 從 str 中刪除左側(cè)開頭的空格 俄周;

6)RTRIM(str) 從 str 中刪除右側(cè)結(jié)尾的空格 吁讨;

(3)數(shù)字函數(shù):

1)ROUND(arg1,arg2):四舍五入指定小數(shù)的值。?

2)ROUND(arg1):四舍五入保留整數(shù)峦朗。?

3)TRUNC(arg1,arg2):截?cái)嘀付ㄐ?shù)的值建丧,不做四舍五入處理。?

4)MOD(arg1,arg2):取余甚垦。

(4)日期函數(shù):

1)SYSDATE() 或者 NOW() 返回當(dāng)前系統(tǒng)時(shí)間茶鹃,格式為 YYYY-MM-DDhh-mm-ss ;

2)CURDATE() 返回系統(tǒng)當(dāng)前日期艰亮,不返回時(shí)間 ;

3)CURTIME() 返回當(dāng)前系統(tǒng)中的時(shí)間挣郭,不返回日期 迄埃;

4)DAYOFMONTH(date) 計(jì)算日期 d 是本月的第幾天 ;

5)DAYOFWEEK(date) 日期 d 今天是星期幾兑障,1 星期日侄非,2 星期一,以此類推 流译;

6)DAYOFYEAR(date) 返回指定年份的天數(shù) 逞怨;

7)DAYNAME(date) 返回 date 日期是星期幾;

8)LAST_DAY(date) 返回 date 日期當(dāng)月的最后一天福澡。

(5)轉(zhuǎn)換函數(shù):

1)DATE_FORMAT(date,format) 將日期轉(zhuǎn)換成字符串(類似 oracle 中的 to_char())叠赦;

2)STR_TO_DATE(str,format) 將字符串轉(zhuǎn)換成日期(類似 oracle 中的 to_date());

(6)通用函數(shù):

1)IFNULL(expr1,expr2) 判斷 expr1 是否為 null革砸,如果為 null除秀,則用 expr2 來代替 null (類似 oracle 的 NVL()函數(shù));

2)NULLIF(expr1,expr2) 判斷 expr1 和 expr2 是否相等算利,如果相等則返回 null册踩,如果不 相等則返回 expr1 ;

3)IF(expr1,expr2,expr3) 判斷 expr1 是否為真(是否不為 null)效拭,如果為真暂吉,則使用 expr2 替代 expr1胖秒;如果為假,則使用 expr3 替代 expr1(類似 oracle 的 NVL2()函數(shù))慕的;

?4)COALESCE(value,...) 判斷 value 的值是否為 null阎肝,如果不為 null,則返回 value业稼;如 果為 null盗痒,則判斷下一個(gè) value 是否為 null……直至出現(xiàn)不為 null 的 value 并返回或者返回最 后一個(gè)為 null 的 value;

三低散、多表連接查詢

1)確定需要查詢的哪些列??

2)確定需要查詢的列分布在哪些表中??

3)確定表之間的關(guān)聯(lián)關(guān)系(主外鍵的關(guān)系)俯邓;

1.等值連接:

包含在內(nèi)連接和外連接中,因?yàn)閮?nèi)連接和外連接都是需要連接條件的熔号,條件為=則為等值連接稽鞭。

2.非等值連接:

使用between...and...或不等號(hào);

3.自連接:

自然連接是一種特殊的等值連接引镊,要求兩個(gè)關(guān)系表中進(jìn)行比較的必須是相同的屬性列朦蕴,無須添加連接條件,并且在結(jié)果中消除重復(fù)的屬性列弟头。

4.外連接(OUTERJOIN):

1)左外連接(LEFTOUTERJOIN)吩抓;

2)右外連接(RIGHTOUTERJOIN);

3)全外鏈接::MySQL 中不支持 FULLOUTERJOIN 連接 可以使用 union 實(shí)現(xiàn)全完連接赴恨。

4)union all:可以將兩個(gè)查詢結(jié)果集合并疹娶,返回的行都是唯一的,如同對(duì)整個(gè)結(jié)果集合使用了 DISTINCT伦连。

5)UNIONALL:只是簡(jiǎn)單的將兩個(gè)結(jié)果合并后就返回雨饺。這樣,如果返回的兩個(gè)結(jié)果集中有重復(fù)的數(shù)據(jù)惑淳, 那么返回的結(jié)果集就會(huì)包含重復(fù)的數(shù)據(jù)了额港。

語(yǔ)法:(SELECT 投影列 FROM 表名 LEFT OUTER JOIN 表名 ON 連接條件 )UNION (SELECT 投影列 FROM 表名 RIGHTOUTERJOIN 表名 ON 連接條件);

5.自然連接(NATURALJOIN):

自然連接是一種特殊的等值連接歧焦,要求兩個(gè)關(guān)系表中進(jìn)行比較的必須是相同的屬性列移斩,無須添加連接條件,并且在結(jié)果中消除重復(fù)的屬性列倚舀。

6.內(nèi)連接(INNERJOIN):

內(nèi)連接基本與自然連接相同叹哭,內(nèi)連接不要求兩屬性列同名,可以用using或on來指定某兩列字段相同的連接條件痕貌。

7.聚合函數(shù):

(1) AVG(arg)函數(shù):對(duì)分組數(shù)據(jù)做平均值運(yùn)算风罩;參數(shù)類型只能是數(shù)字類型。

(2)SUM(arg)函數(shù):對(duì)分組數(shù)據(jù)求和舵稠;參數(shù)類型只能是數(shù)字類型超升。

(3)MIN(arg)函數(shù):求分組中最小數(shù)據(jù)入宦;參數(shù)類型可以是字符、數(shù)字室琢、日期。

(4)MAX(arg)函數(shù):求分組中最大數(shù)據(jù)涯肩;參數(shù)類型可以是字符、數(shù)字病苗、日期。

(5)COUNT 函數(shù):返回一個(gè)表中的行數(shù)症汹。

8.數(shù)據(jù)組(group by):

通過group by子句對(duì)結(jié)果按某條件進(jìn)行分組硫朦;通過having子語(yǔ)句約束背镇。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瞒斩,隨后出現(xiàn)的幾起案子破婆,更是在濱河造成了極大的恐慌,老刑警劉巖胸囱,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荠割,死亡現(xiàn)場(chǎng)離奇詭異旺矾,居然都是意外死亡夺克,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門柬帕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來狡门,“玉大人陷寝,你說我怎么就攤上這事其馏。” “怎么了叛复?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)咖耘。 經(jīng)常有香客問我,道長(zhǎng)儿倒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任彻犁,我火速辦了婚禮慷吊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘溉瓶。我一直安慰自己,他們只是感情好疾宏,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布触创。 她就那樣靜靜地躺著,像睡著了一般哼绑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蛀恩,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天茂浮,我揣著相機(jī)與錄音,去河邊找鬼席揽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛幌羞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播程帕,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼愁拭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起盏混,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤惜论,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后馆类,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡句喜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年沟于,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片展懈。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡供璧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出睡毒,到底是詐尸還是另有隱情,我是刑警寧澤吕嘀,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布偶房,位于F島的核電站,受9級(jí)特大地震影響棕洋,放射性物質(zhì)發(fā)生泄漏乒融。R本人自食惡果不足惜摄悯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一愧捕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧次绘,春花似錦、人聲如沸邮偎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)泻云。三九已至,卻和暖如春壶愤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背征椒。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留碍讨,地道東北人蒙秒。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像晕讲,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子弄息,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 數(shù)據(jù)庫(kù)概念 定義1 數(shù)據(jù)庫(kù)(database)是按照數(shù)據(jù)結(jié)構(gòu)來組織勤婚、存儲(chǔ)、管理數(shù)據(jù)的建立在計(jì)算機(jī)存儲(chǔ)設(shè)備上的倉(cāng)庫(kù) ...
    好好秦先生閱讀 1,162評(píng)論 0 3
  • 手動(dòng)不易缨称,轉(zhuǎn)發(fā)請(qǐng)注明出處 --Trance 數(shù)據(jù)庫(kù)系統(tǒng)命令: (1).查看存儲(chǔ)過程狀態(tài):show pro...
    Trance_b54c閱讀 1,663評(píng)論 0 8
  • 1.簡(jiǎn)介 數(shù)據(jù)存儲(chǔ)有哪些方式?電子表格器净,紙質(zhì)文件,數(shù)據(jù)庫(kù)掌动。 那么究竟什么是關(guān)系型數(shù)據(jù)庫(kù)宁玫? 目前對(duì)數(shù)據(jù)庫(kù)的分類主要是...
    喬震閱讀 1,715評(píng)論 0 2
  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 5,744評(píng)論 0 10
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí)眷射,會(huì)觸發(fā)此異常佛掖。 O...
    我想起個(gè)好名字閱讀 5,312評(píng)論 0 9