![《PHP+MySQL動態(tài)網(wǎng)站開發(fā)》 課件-第6章 MySQL基礎(chǔ)(下)_第1頁](http://file4.renrendoc.com/view12/M03/3E/1C/wKhkGWd57suAXWyXAACb0sG_wIM132.jpg)
![《PHP+MySQL動態(tài)網(wǎng)站開發(fā)》 課件-第6章 MySQL基礎(chǔ)(下)_第2頁](http://file4.renrendoc.com/view12/M03/3E/1C/wKhkGWd57suAXWyXAACb0sG_wIM1322.jpg)
![《PHP+MySQL動態(tài)網(wǎng)站開發(fā)》 課件-第6章 MySQL基礎(chǔ)(下)_第3頁](http://file4.renrendoc.com/view12/M03/3E/1C/wKhkGWd57suAXWyXAACb0sG_wIM1323.jpg)
![《PHP+MySQL動態(tài)網(wǎng)站開發(fā)》 課件-第6章 MySQL基礎(chǔ)(下)_第4頁](http://file4.renrendoc.com/view12/M03/3E/1C/wKhkGWd57suAXWyXAACb0sG_wIM1324.jpg)
![《PHP+MySQL動態(tài)網(wǎng)站開發(fā)》 課件-第6章 MySQL基礎(chǔ)(下)_第5頁](http://file4.renrendoc.com/view12/M03/3E/1C/wKhkGWd57suAXWyXAACb0sG_wIM1325.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第6章MySQL基礎(chǔ)(下)《PHP+MySQL動態(tài)網(wǎng)站開發(fā)》學(xué)習(xí)目標(biāo)/Target掌握MySQL中字符集的設(shè)置和使用掌握MySQL中常用字段類型的使用掌握MySQL中常用數(shù)據(jù)類型的使用掌握MySQL中數(shù)據(jù)表的常用屬性章節(jié)概述/Summary在數(shù)據(jù)庫中,數(shù)據(jù)表用來組織和保存各種數(shù)據(jù),它是由表結(jié)構(gòu)和數(shù)據(jù)組成的。在設(shè)計表結(jié)構(gòu)時,經(jīng)常需要根據(jù)實際需求,選擇合適的字段類型和屬性。本章將圍繞數(shù)據(jù)表的字符集、校對集、數(shù)據(jù)類型和屬性進(jìn)行詳細(xì)講解。目錄/Contents01020304字符集校對集數(shù)據(jù)類型屬性字符集6.16.1.1什么是字符集
先定一個小目標(biāo)!熟悉什么是字符集,能夠說出字符集的概念,并能列舉常見的字符集6.1.1什么是字符集字符(Character):計算機(jī)中保存的各種文字和符號,包括每個國家的文字、標(biāo)點符號、圖形符號、數(shù)字等。字符編碼:將用戶輸入的字符按照一定的規(guī)則轉(zhuǎn)換為二進(jìn)制保存。字符集(CharacterSet,CHARSET):一系列字符編碼規(guī)則的組合。6.1.1什么是字符集常用的字符集:ASCII:美國信息交換標(biāo)準(zhǔn)碼,一般為英文符號,占用1個字節(jié)存儲。latin1:拉丁文字符集,向下兼容ASCII,占用1個字節(jié)存儲。GB2312:最早一版的中文編碼,已經(jīng)囊括了生活中常用的漢字,占2個字節(jié)存儲。GBK:中文編碼標(biāo)準(zhǔn),在GB2312基礎(chǔ)上擴(kuò)容向下兼容GB2312,占1個字節(jié)存儲。Unicode:萬國碼或統(tǒng)一碼,為每種語言中的每個字符設(shè)定了統(tǒng)一且唯一的二進(jìn)制編碼,滿足跨語言、跨平臺進(jìn)行文本轉(zhuǎn)換、處理的要求。UTF-8:一種可變長度字符編碼,用來表示Unicode標(biāo)準(zhǔn)中的任何字符,目前通用編碼規(guī)則,建議使用UTF-8字符集進(jìn)行數(shù)據(jù)存儲。6.1.2MySQL字符集
先定一個小目標(biāo)!熟悉MySQL字符集,能夠查看MySQL中可用的字符集,并能說出latin1、gbk、utf8字符集的區(qū)別6.1.2MySQL字符集查看可用字符集:SHOWCHARACTERSET;語法格式6.1.2MySQL字符集MySQL支持的字符集列表:Charset:字符集名稱Defaultcollation:默認(rèn)校對集Description:描述信息Maxlen:單字符的最大長度6.1.2MySQL字符集字符集單字符最大長度支持的語言latin11字節(jié)西歐字符、希臘字符等gbk2字節(jié)簡體和繁體中文、日文、韓文等utf83字節(jié)世界上大部分國家的文字MySQL常用字符集:6.1.2MySQL字符集腳下留心utf8字符集與UTF-8(RFC3629)的差別:utf8一個字符最多使用3個字節(jié),UTF-8一個字符最多使用4個字節(jié)。導(dǎo)致問題:UTF-8中的一些特殊字符(如emoji符號)無法在MySQL的utf8中使用。解決方法:MySQL從5.5.3版本新增了utf8mb4字符集,一個字符擴(kuò)展到4個字節(jié)。如果需要支持RFC3629規(guī)范,應(yīng)使用utf8mb4字符集。6.1.3字符集變量
先定一個小目標(biāo)!掌握字符集變量,能夠說出字符集變量的作用,能夠查看或設(shè)置字符集變量的值6.1.3字符集變量查看字符集相關(guān)變量:MySQL服務(wù)器提供了與字符集相關(guān)的變量來記錄客戶端的字符集,保障服務(wù)器端正確識別客戶端的數(shù)據(jù)。SHOWVARIABLESLIKE'character%';語法格式6.1.3字符集變量查看字符集相關(guān)變量:6.1.3字符集變量字符集變量說明:變量名說明character_set_client客戶端字符集character_set_connection客戶端與服務(wù)器連接使用的字符集character_set_database默認(rèn)數(shù)據(jù)庫使用的字符集(從5.7.6版本開始不推薦使用)character_set_filesystem文件系統(tǒng)字符集character_set_results將查詢結(jié)果(如結(jié)果集或錯誤消息)返回給客戶端的字符集character_set_server服務(wù)器默認(rèn)字符集character_set_system服務(wù)器用來存儲標(biāo)識符的字符集character_sets_dir安裝字符集的目錄6.1.3字符集變量設(shè)置字符集變量:為了使客戶端輸入的字符和輸出的查詢結(jié)果都不出現(xiàn)亂碼,可以設(shè)置character_set_client、character_set_connection和character_set_results變量的字符集。setcharacter_set_client=gbk;setcharacter_set_connection=gbk;setcharacter_set_results=gbk;快速設(shè)置字符集變量:使用“setnames字符集;”直接修改上述3個變量的值。如“setnamesgbk;”。set變量名=值;語法格式代碼示例校對集6.26.2.1什么是校對集
先定一個小目標(biāo)!熟悉什么是校對集,能夠說出校對集的作用,能夠查看MySQL中有哪些校對集6.2.1什么是校對集校對集:為不同字符集指定比較和排序規(guī)則,校對集依賴字符集。如latin1字符集對應(yīng)校對集latin1_swedish_ci。校對集的命名規(guī)則:由“_”分割成3部分,開頭是對應(yīng)的字符集,中間是國家名或general,結(jié)尾是ci、cs或bin。latin1_swedish_ci命名規(guī)則代碼示例ci(caseinsensitive)表示不區(qū)分大小寫cs(casesensitive)表示區(qū)分大小寫bin表示以二進(jìn)制方式比較6.2.1什么是校對集查看校對集:查看MySQL可用的校對集。SHOWCOLLATION;語法格式6.2.1什么是校對集Collaction:校對集的名稱
Default
:是否為對應(yīng)字符集的默認(rèn)校對集Charset
:對應(yīng)的字符集
Compiled
:是否已編譯
Id
:校對集IDSortlen:排序的內(nèi)容需求量MySQL可用校對集:6.2.2字符集與校對集的設(shè)置
先定一個小目標(biāo)!掌握字符集與校對集的設(shè)置,能夠為數(shù)據(jù)庫、數(shù)據(jù)表和字段設(shè)置字符集與校對集6.2.2字符集與校對集的設(shè)置數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫時設(shè)定字符集和校對集。[DEFAULT]CHARACTERSET[=]charset_name[DEFAULT]COLLATE[=]collation_name語法格式CHARACTERSET用于指定字符集COLLATE用于指定校對集注意:若僅指定字符集,表示使用該字符集的默認(rèn)校對集;若僅指定校對集,表示使用該校對集對應(yīng)的字符集。6.2.2字符集與校對集的設(shè)置數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫時設(shè)定字符集和校對集。#創(chuàng)建數(shù)據(jù)庫,指定字符集為utf8,使用默認(rèn)校對集utf8_general_ciCREATEDATABASE`mydb`CHARACTERSETutf8;#創(chuàng)建數(shù)據(jù)庫,指定字符集為utf8,校對集為utf8_binCREATEDATABASE`mydb`CHARACTERSETutf8COLLATEutf8_bin;代碼示例6.2.2字符集與校對集的設(shè)置數(shù)據(jù)表數(shù)據(jù)表的字符集與校對集在表選項中設(shè)定。[DEFAULT]CHARACTERSET[=]charset_name[DEFAULT]COLLATE[=]collation_name語法格式6.2.2字符集與校對集的設(shè)置數(shù)據(jù)表數(shù)據(jù)表的字符集與校對集在表選項中設(shè)定。#指定數(shù)據(jù)表字符集為utf8,校對集為utf8_binCREATETABLE`my_table`(`username`VARCHAR(20))CHARACTERSETutf8COLLATEutf8_bin;代碼示例提示:可以將CHARACTERSET簡寫為CHARSET。6.2.2字符集與校對集的設(shè)置字段字段的字符集與校對集在字段屬性中設(shè)定。[CHARACTERSETcharset_name][COLLATEcollation_name]語法格式6.2.2字符集與校對集的設(shè)置字段的字符集與校對集在字段屬性中設(shè)定。#指定username字段的字符集為utf8,校對集為utf8_binCREATETABLE`my_table`(`username`VARCHAR(20)CHARACTERSETutf8COLLATEutf8_bin);代碼示例字段6.2.3校對集的應(yīng)用
先定一個小目標(biāo)!掌握校對集的應(yīng)用,能夠通過設(shè)置校對集改變ORDERBY語句的排序規(guī)則6.2.3校對集的應(yīng)用校對集的應(yīng)用:創(chuàng)建不同的校對規(guī)則,對字段進(jìn)行排序觸發(fā)校對集。創(chuàng)建數(shù)據(jù)表。分別創(chuàng)建默認(rèn)校對規(guī)則數(shù)據(jù)表和二進(jìn)制校對規(guī)則數(shù)據(jù)表并插入數(shù)據(jù)。STEP01#創(chuàng)建默認(rèn)校對規(guī)則表(不區(qū)分大小寫)mysql>CREATETABLE`my_table1`(->`name`VARCHAR(1)->)CHARSETutf8mb4;mysql>INSERTINTO`my_table1`VALUES('B'),('A'),('b'),('a');#創(chuàng)建二進(jìn)制校對規(guī)則表(區(qū)分大小寫)mysql>CREATETABLE`my_table2`(->`name`VARCHAR(1)->)CHARSETutf8mb4COLLATEutf8mb4_bin;mysql>INSERTINTO`my_table2`VALUES('B'),('A'),('b'),('a');6.2.3校對集的應(yīng)用校對集的應(yīng)用:創(chuàng)建不同的校對規(guī)則,對字段進(jìn)行排序觸發(fā)校對集。排序觸發(fā)校對集。對name字段進(jìn)行排序。STEP02#默認(rèn)校對規(guī)則表排序mysql>SELECT*FROM`my_table1`ORDERBY`name`;+------+|name|+------+|A||a||B||b|+------+#二進(jìn)制校對規(guī)則表排序mysql>SELECT*FROM`my_table2`ORDERBY`name`;+------+|name|+------+|A|65|B|66|a|97|b|98+------+對應(yīng)ASCII碼值6.3數(shù)據(jù)類型6.3.1數(shù)字類型
先定一個小目標(biāo)!掌握數(shù)字類型的使用,能夠利用整數(shù)類型、浮點數(shù)類型、定點數(shù)類型保存數(shù)據(jù)6.3.1數(shù)字類型整數(shù)類型分類TINYINTSMALLINTMEDIUMINTINTBIGINT整數(shù)類型整數(shù)類型:用于保存整數(shù)。6.3.1數(shù)字類型數(shù)據(jù)類型字節(jié)數(shù)無符號數(shù)的取值范圍有符號數(shù)的取值范圍TINYINT10~255-128~127SMALLINT20~65535-32768~32767MEDIUMINT30~16777215-8388608~8388607INT40~4294967295-2147483648~2147483647BIGINT80~18446744073709551615-9223372036854775808~9223372036854775807提示:無符號類型存儲的數(shù)據(jù)為0或者正數(shù);有符號類型可以存儲負(fù)數(shù)。使用無符號類型,需要在數(shù)據(jù)類型右邊加上UNSIGNED關(guān)鍵字,如INTUNSIGNED。整數(shù)類型整數(shù)類型的取值范圍:6.3.1數(shù)字類型mysql>CREATETABLE`my_int`(->`int_1`INT,->`int_2`INTUNSIGNED,->`int_3`TINYINT,->`int_4`TINYINTUNSIGNED->);案例:整數(shù)類型的使用代碼示例創(chuàng)建數(shù)據(jù)表。int_1和int_3是有符號類型,int_2和int_4是無符號類型。STEP016.3.1數(shù)字類型#①插入成功測試mysql>INSERTINTO`my_int`VALUES(1000,1000,100,100);QueryOK,1rowaffected(0.00sec)#②插入失敗測試mysql>INSERTINTO`my_int`VALUES(1000,-1000,100,100);ERROR1246(22003):Outofrangevalueforcolumn'int_2'atrow1案例:整數(shù)類型的使用代碼示例插入記錄進(jìn)行測試。數(shù)值在合法取值范圍內(nèi),可以成功插入數(shù)據(jù),反之無法插入,提示錯誤信息。STEP02注意:-1000超出了無符號INT類型取值范圍,數(shù)據(jù)插入失敗,提示int_2字段超出取值范圍。6.3.1數(shù)字類型注意:有符號類型符號也占用一個寬度,例如,255的顯示寬度為3,-128的顯示寬度為4。顯示寬度顯示寬度:在數(shù)據(jù)類型后用括號指定數(shù)字,表示數(shù)據(jù)類型能表示的最大值對應(yīng)的數(shù)字個數(shù)。6.3.1數(shù)字類型顯示寬度零填充(ZEROFILL):若數(shù)值寬度小于顯示寬度,在左側(cè)填充0。mysql>CREATETABLE`my_int2`(->`int_1`INT(3)ZEROFILL,->`int_2`TINYINT(6)ZEROFILL->);QueryOK,0rowsaffected(0.01sec)mysql>INSERTINTO`my_int2`VALUES(1234,2);QueryOK,1rowaffected(0.00sec)創(chuàng)建數(shù)據(jù)表并插入數(shù)據(jù)運(yùn)行結(jié)果6.3.1數(shù)字類型浮點數(shù)類型浮點數(shù):用于保存小數(shù),分為單精度浮點數(shù)類型(FLOAT)和雙精度浮點數(shù)類型(DOUBLE)。數(shù)據(jù)類型字節(jié)數(shù)負(fù)數(shù)的取值范圍非負(fù)數(shù)的取值范圍FOLAT4-3.402823466E+38~-1.175494351E-380和1.175494351E-38~3.402823466E+38DOUBLE8-1.7976931348623157E+308~-2.2250738585072014E-3080和2.2250738585072014E-308~1.7976931348623157E+308注意:浮點數(shù)類型的取值范圍很大,但是精度并不高。FLOAT的精度為6位或7位,DOUBLE的精度大約為15位。如果超出精度,可能會導(dǎo)致給定的數(shù)值與實際保存的數(shù)值不一致,發(fā)生精度損失。6.3.1數(shù)字類型案例:浮點數(shù)類型的使用代碼示例創(chuàng)建數(shù)據(jù)表并插入測試數(shù)據(jù)。插入未超出精度和超出精度的數(shù)字,插入7位數(shù)字和8位數(shù)字。STEP01#①創(chuàng)建表,選取FLOAT類型進(jìn)行測試mysql>CREATETABLE`my_float`(`f1`FLOAT,`f2`FLOAT);#②插入未超出精度的數(shù)字mysql>INSERTINTO`my_float`VALUES(111111,1.11111);#③插入超出精度的數(shù)字mysql>INSERTINTO`my_float`VALUES(1111111,1.111111);#④插入7位數(shù),第7位四舍五入mysql>INSERTINTO`my_float`VALUES(1111114,1.111115);#⑤插入8位數(shù),第7位四舍五入,第8位忽略mysql>INSERTINTO`my_float`VALUES(11111149,1.1111159);6.3.1數(shù)字類型案例:浮點數(shù)類型的使用代碼示例查詢結(jié)果。查看浮點數(shù)類型的保存結(jié)果。STEP026.3.1數(shù)字類型定點數(shù)類型定點數(shù)類型(DECIMAL):用于保存小數(shù),通過DECIMAL(M,D)設(shè)置位數(shù)和精度,M表示數(shù)字總位數(shù),最大值為65,默認(rèn)值為10;D表示小數(shù)點后的位數(shù),最大值為30,默認(rèn)值為0。DECIMAL(5,2)代碼示例表示取值范圍是-999.99~999.996.3.1數(shù)字類型案例:定點數(shù)類型的使用代碼示例創(chuàng)建數(shù)據(jù)表。小數(shù)部分超出范圍,會四舍五入,出現(xiàn)Datatruncated(數(shù)據(jù)截斷)警告,整數(shù)超出范圍,插入失敗,提示Outofrangevalue(超出取值范圍)錯誤。STEP01#①創(chuàng)建表,選取DECIMAL類型進(jìn)行測試mysql>CREATETABLE`my_decimal`(`d1`DECIMAL(4,2),`d2`DECIMAL(4,2));#②插入的小數(shù)部分超出范圍時,會四舍五入并出現(xiàn)警告mysql>INSERTINTO`my_decimal`VALUES(1.234,1.235);QueryOK,1rowaffected,2warnings(0.00sec)#③插入的小數(shù)部分四舍五入導(dǎo)致整數(shù)部分進(jìn)位時,插入失敗mysql>INSERTINTO`my_decimal`VALUES(99.99,99.999);Error1264(22003):Outofrangevalueforcolumn'd2'atrow16.3.1數(shù)字類型案例:定點數(shù)類型的使用代碼示例查詢結(jié)果。查看定點數(shù)類型的保存結(jié)果。STEP026.3.2字符串類型
先定一個小目標(biāo)!掌握字符串類型的使用,能夠利用CHAR類型、VARCHAR類型、TEXT類型、ENUM類型、SET類型保存數(shù)據(jù)6.3.2字符串類型CHAR類型定長型:通過CHAR(L)表示,L表示字符串最大長度,最大值是255。案例:定長型的使用代碼示例#①創(chuàng)建表,選取CHAR類型進(jìn)行測試mysql>CREATETABLE`my_char`(`c1`char(5));#②插入小于指定長度的數(shù)據(jù)mysql>INSERTINTO`my_char`VALUES('12345');#③插入大于指定長度的數(shù)據(jù)時,插入失敗mysql>INSERTINTO`my_char`VALUES('123456');Error1406(22001):Datatoolongforcolumn'c1'atrow16.3.2字符串類型案例:變長型的使用代碼示例VARCHAR類型變長型:通過VARCHAR(L)表示,L表示字符串最大長度,最大值不能超過MySQL單行長度限制65535。#①創(chuàng)建表,選取VARCHAR類型進(jìn)行測試mysql>CREATETABLE`my_varchar`(`c2`varchar(5));#②插入指定長度的數(shù)據(jù)mysql>INSERTINTO`my_varchar`VALUES('12345');6.3.2字符串類型VARCHAR類型CHAR和VARCHAR占用字節(jié)對比:插入值CHAR(4)存儲長度VARCHAR(4)存儲長度''4字節(jié)1字節(jié)'ab'4字節(jié)3字節(jié)'abc'4字節(jié)4字節(jié)'abcd'4字節(jié)5字節(jié)注意:無論字符串長度是多少,CHAR(4)占用4個字節(jié),VARVCHAR(4)為實際長度加1。定長型的訪問效率較高,但是空間利用率不高;變長型在讀取時需要進(jìn)行長度計算,沒有定長型的訪問效率高。6.3.2字符串類型TEXT類型數(shù)據(jù)類型存儲范圍TINYTEXT0~28-1字節(jié)TEXT0~216-1字節(jié)MEDIUMTEXT0~224-1字節(jié)LONGTEXT0~232-1字節(jié)TEXT類型:用于保存大文本數(shù)據(jù),保存的最大字符數(shù)量取決于字符串實際占用的字節(jié)數(shù)。6.3.2字符串類型ENUM類型ENUM類型:又稱枚舉類型,枚舉列表最多可以有65535個值,每個值都有順序編號,保存在記錄中的是順序編號。ENUM('值1','值2','值3',…,'值n');語法格式('值1','值2','值3',…,'值n')稱為枚舉列表6.3.2字符串類型案例:ENUM類型的使用代碼示例#①創(chuàng)建表,選取ENUM類型進(jìn)行測試mysql>CREATETABLE`my_enum`(`gender`ENUM('male','female'));#②插入測試數(shù)據(jù)mysql>INSERTINTO`my_enum`VALUES('male'),('female');#③插入枚舉列表中沒有的值測試mysql>INSERTINTO`my_enum`VALUES('m');ERROR1265(01000):Datatruncatedforcolumn'gender'atrow16.3.2字符串類型SET類型SET類型:用于保存字符串對象,列表最多有64個值,每個值都有順序編號,實際保存的是順序編號。SET('值1','值2','值3',…,'值n');語法格式6.3.2字符串類型案例:SET類型的使用代碼示例#①創(chuàng)建表,選取SET類型進(jìn)行測試mysql>CREATETABLE`my_set`(`hobby`SET('book','game','code'));#②插入3條測試數(shù)據(jù)mysql>INSERTINTO`my_set`VALUES('book'),('book,code');運(yùn)行結(jié)果6.3.3時間日期類型
先定一個小目標(biāo)!掌握時間和日期類型的使用,能夠利用YEAR類型、TIMESTAMP類型、DATE類、DATETIME類型、TIME類型保存數(shù)據(jù)6.3.3時間日期類型YEAR類型案例:YEAR類型的使用代碼示例mysql>CREATETABLE`my_year`(`y`YEAR); #設(shè)置y字段的數(shù)據(jù)類型為YEARmysql>INSERTINTO`my_year`VALUES(2020); #插入年份數(shù)據(jù)為2020年YEAR類型:用于表示年份,取值范圍是1901~2155,使用“YYYY”來表示年,零值是0000。6.3.3時間日期類型YEAR類型指定YEAR類型值的3種格式:使用4位字符串或數(shù)字:'1901'~'2155'或1901~2155。
例如,輸入'2020'或2020,插入到數(shù)據(jù)庫中的值均為2020。使用2位字符串:'00'~'99''00'~'69'對應(yīng)2000~2069,'70'~'99'對應(yīng)1970~1999。
例如,輸入'20',插入到數(shù)據(jù)庫中的值為2020。使用2位數(shù)字:1~99
1~69對應(yīng)2001~2069,70~99對應(yīng)1970~1999的YEAR值。例如,輸入20,插入到數(shù)據(jù)庫中的值為2020。6.3.3時間日期類型TIMESTAMP類型案例:TIMESTAMP類型的使用代碼示例#創(chuàng)建表,選取TIMESTAMP類型進(jìn)行測試mysql>CREATETABLE`my_timestamp`(->`t1`INT,->`t2`TIMESTAMP->);QueryOK,0rowsaffected(0.01sec)#插入測試數(shù)據(jù)mysql>INSERTINTO`my_timestamp`VALUES->(1,'2020-01-0100:00:00'),->(2,'20200101000000');TIMESTAMP類型:用于表示日期和時間,占用4個字節(jié),使用“YYYY-MM-DDHH:MM:SS”表示。運(yùn)行結(jié)果6.3.3時間日期類型TIMESTAMP類型案例:代碼示例#新增t3字段mysql>ALTERTABLE`my_timestamp`ADD`t3`TIMESTAMPNULL->ONUPDATECURRENT_TIMESTAMP;#更新t1的值,查看t3記錄的更新時間mysql>UPDATE`my_timestamp`SET`t1`=3;自動更新修改時間:在記錄被修改時,自動更新修改時間。運(yùn)行結(jié)果CURRENT_TIMESTAMP表示使用系統(tǒng)當(dāng)前日期和時間作為默認(rèn)值。ONUPDATE表示當(dāng)一條記錄的其他字段被修改時,自動更新當(dāng)前日期和時間。6.3.3時間日期類型DATE類型案例:DATE類型的使用代碼示例#創(chuàng)建表,選取DATE類型進(jìn)行測試mysql>CREATETABLE`my_date`(`d`DATE);#插入DATE類型的數(shù)據(jù)mysql>INSERTINTO`my_date`VALUES('2020-01-01');mysql>INSERTINTO`my_date`VALUES(CURRENT_DATE);mysql>INSERTINTO`my_date`VALUES(NOW());DATE類型:用于表示日期,不包含時間部分。6.3.3時間日期類型指定DATE類型值的4種格式:字符串格式:以'YYYY-MM-DD'或者'YYYYMMDD'表示。
例如,輸入'2020-01-01'或'20200101',插入數(shù)據(jù)庫中的日期都為2020-01-01。字符串格式:以'YY-MM-DD'或者'YYMMDD'表示。
例如,輸入'20-01-01'或'200101',插入數(shù)據(jù)庫中的日期都為2020-01-01。數(shù)字格式:以YY-MM-DD或者YYMMDD表示。
例如,輸入20-01-01或200101,插入數(shù)據(jù)庫中的日期都為2020-01-01。獲取當(dāng)前系統(tǒng)日期:使用CURRENT_DATE或者NOW()獲取日期。DATE類型6.3.3時間日期類型字符串格式:以'YYYY-MM-DDHH:MM:SS'或'YYYYMMDDHHMMSS'表示,
取值范圍為'1000-01-0100:00:00'~'9999-12-3123:59:59'。字符串格式:以'YY-MM-DDHH:MM:SS'或者'YYMMDDHHMMSS'表示。數(shù)字格式:以YYYYMMDDHHMMSS或者YYMMDDHHMMSS表示。獲取當(dāng)前系統(tǒng)日期和時間:使用NOW()來獲取日期和時間。DATETIME類型DATETIME類型:表示日期和時間,占用8個字節(jié),形式為'YYYY-MM-DDHH:MM:SS'。指定DATETIME類型值的4種格式:6.3.3時間日期類型DATETIME類型#創(chuàng)建表mysql>CREATETABLE`my_datetime`(`st`TIMESTAMP,`dt`DATETIME);#插入數(shù)據(jù)mysql>INSERTINTO`my_datetime`VALUES(NULL,NULL);mysql>INSERTINTO`my_date`VALUES(NOW(),NOW());DATETIME和TIMESTAMP區(qū)別對比:創(chuàng)建數(shù)據(jù)表插入數(shù)據(jù)。STEP016.3.3時間日期類型DATETIME類型#修改時區(qū)mysql>SETtime_zone='+9:00';DATETIME和TIMESTAMP區(qū)別對比:修改時區(qū)。STEP026.3.3時間日期類型DATETIME類型DATETIME和TIMESTAMP區(qū)別總結(jié):TIMESTAMP表示從格林威治時間(1970年01月01日00時00分00秒)起至現(xiàn)在的總秒數(shù)DATETIME表示具體的時間日期插入NULL時:TIMESTAMP類型會自動儲存當(dāng)前時間,DATETIME類型儲存的為NULL修改時區(qū)時:TIMESTAMP類型的字段保存的數(shù)據(jù)會更改跨時區(qū)的業(yè)務(wù)或記錄自動插入和更新時間的功能,TIMESTAMP更合適6.3.3時間日期類型TIME類型TIME類型:用于表示時間值,顯示形式為HH:MM:SS指定TIME類型值的3種格式:字符串或數(shù)字格式:以'HHMMSS'或者HHMMSS表示。
例如,輸入'102030'或102030,插入數(shù)據(jù)庫中時間為10:20:30(10時20分30秒)。字符串格式:以'DHH:MM:SS'表示。其中D表示日,取值0~34,HH值為D*24+HH。
例如,輸入'210:20:30',插入數(shù)據(jù)庫中的時間為58:20:30。獲取當(dāng)前系統(tǒng)日期:使用CURRENT_DATE或者NOW()獲取。6.4屬性6.4.1屬性的作用
先定一個小目標(biāo)!熟悉屬性的作用,能夠能夠說出為什么給字段設(shè)置屬性6.4.1屬性的作用什么是屬性:屬性定義在字段類型的后面,建立對字段類型之外的其他約束。添加或刪除屬性語法格式#①添加屬性ALTERTABLE數(shù)據(jù)表名MODIFY字段名字段類型屬性;#②刪除屬性,直接去掉屬性ALTERTABLE數(shù)據(jù)表名MODIFY字段名字段類型;6.4.2非空屬性
先定一個小目標(biāo)!掌握非空屬性的使用,能夠為字段添加非空約束6.4.2非空屬性非空屬性:字段的值不能為NULL。語法格式字段名數(shù)據(jù)類型NOTNULL;6.4.2非空屬性案例:非空屬性的使用代碼示例#①創(chuàng)建my_not_null數(shù)據(jù)表mysql>CREATETABLE`my_not_null`(`n1`INT,`n2`INTNOTNULL);#②省略n2字段,插入失敗,提示n2沒有默認(rèn)值mysql>INSERTINTO`my_not_null`VALUES();Error1364(HY000):Field'n2'doesn'thaveadefaultvalue#③將n2字段設(shè)為NULL,插入失敗,提示n2字段不能為NULLmysql>INSERTINTO`my_not_null`VALUES(NULL,NULL);Error1048(23000):Column'n2'cannotbenull#④
省略n1字段,插入成功mysql>INSERTINTO`my_not_null`(`n2`)VALUES(20);6.4.3默認(rèn)屬性
先定一個小目標(biāo)!掌握默認(rèn)屬性的使用,能夠為字段設(shè)置默認(rèn)值6.4.3默認(rèn)屬性默認(rèn)屬性:用于為數(shù)據(jù)中的字段指定默認(rèn)值,默認(rèn)值是通過DEFAULT關(guān)鍵字定義的。語法格式字段名數(shù)據(jù)類型DEFAULT默認(rèn)值;注意:TEXT類型數(shù)據(jù)類型不支持默認(rèn)屬性。6.4.3默認(rèn)屬性案例:創(chuàng)建默認(rèn)屬性數(shù)據(jù)表代碼示例#創(chuàng)建my_default數(shù)據(jù)表mysql>CREATETABLE`my_default`(->`name`VARCHAR(10),->`age`INTUNSIGNEDDEFAULT18);表結(jié)構(gòu)信息6.4.3默認(rèn)屬性案例:默認(rèn)屬性的使用代碼示例#①在插入記錄時省略name和age字段mysql>INSERTINTO`my_default`VALUES();#②在插入記錄時省略age字段mysql>INSERTINTO`my_default`(`name`)VALUES('a');#③在age字段中插入NULL值mysql>INSERTINTO`my_default`VALUES('b',NULL);#④在age字段中使用默認(rèn)值mysql>INSERTINTO`my_default`VALUES('c',DEFAULT);查詢結(jié)果6.4.4主鍵屬性
先定一個小目標(biāo)!掌握主鍵屬性的使用,能夠為數(shù)據(jù)表設(shè)置主鍵6.4.4主鍵屬性主鍵屬性:記錄的唯一標(biāo)識,通過PRIMARYKEY定義,每個表最多只允許含有一個主鍵。語法格式#列級字段名數(shù)據(jù)類型PRIMARYKEY;#表級PRIMARYKEY(字段名1,字段名2,…)6.4.4主鍵屬性案例:創(chuàng)建主鍵屬性數(shù)據(jù)表代碼示例#創(chuàng)建my_primary數(shù)據(jù)表mysql>CREATETABLE`my_primary`(->`id`INTUNSIGNEDPRIMARYKEY,->`name`VARCHAR(20));表結(jié)構(gòu)信息6.4.4主鍵屬性案例:主鍵屬性的使用代碼示例#①插入測試記錄,插入成功mysql>INSERTINTO`my_primary`VALUES(1,'Tom');#②為主鍵插入NULL值,插入失敗mysql>INSERTINTO`my_primary`VALUES(NULL,'Jack');Error1048(23000):Column'id'cannotbenull#③為主鍵插入重復(fù)值,插入失敗mysql>INSERTINTO`my_primary`VALUES(1,'Alex');Error1062(23000):Duplicateentry'1'forkey'PRIMARY'6.4.5主鍵管理
先定一個小目標(biāo)!掌握主鍵的管理,能夠為數(shù)據(jù)表添加或刪除主鍵約束6.4.5主鍵管理主鍵管理:添加或刪除主鍵屬性。代碼示例#①刪除主鍵屬性mysql>ALTERTABLE`my_primary`DROPPRIMARYKEY;QueryOK,1rowaffected(0.00sec)Record:1Duplicates:0Warnings:0#②
添加主鍵屬性mysql>ALTERTABLE`my_primary`ADDPRIMARYKEY(`id`);QueryOK,0rowsaffected(0.00sec)Record:0Duplicates:0Warnings:06.4.6自增屬性
先定一個小目標(biāo)!掌握自動增長屬性的使用,能夠通過AUTO_INCREMENT實現(xiàn)自動增長6.4.6自增屬性自增屬性:自動生成主鍵的值,通過AUTO_INCREMENT設(shè)置。語法格式字段名數(shù)據(jù)類型AUTO_INCREMENT;6.4.6自增屬性使用自增屬性注意事項:一個表中只能有一個自動增長字段,該字段的數(shù)據(jù)類型是整型,且必須定義為鍵,如主鍵PRIMARYKEY、唯一鍵UNIQUEKEY。插入NULL、0、DEFAULT或插入時省略該字段,則使用自動增長值;若插入的是一個具體值,則不會使用自動增長值。自動增長值從1開始自增,每次加1。若插入的值大于自動增長的值,則下次插入的自動增長值會自動使用最大值加1;若插入的值小于自動增長值,則不會對自動增長值產(chǎn)生影響。使用DELETE刪除記錄時,自動增長值不會減小或填補(bǔ)空缺。6.4.6自增屬性案例:創(chuàng)建自增屬性數(shù)據(jù)表代碼示例#創(chuàng)建my_auto數(shù)據(jù)表,為id字段添加自動增長屬性mysql>CREATETABLE`my_auto`(->`id`INTUNSIGNEDPRIMARYKEYAUTO_INCREMENT,->`name`VARCHAR(20));表結(jié)構(gòu)信息6.4.6自增屬性案例:自增屬性的使用代碼示例#①插入時省略id字段,將會使用自動增長值mysql>INSERTINTO`my_auto`(`name`)VALUES('Tom');#②為id字段插入NULL,將會使用自動增長值mysql>INSERTINTO`my_auto`VALUES(NULL,'Jack');#③為id字段插入具體值mysql>INSERTINTO`my_auto`VALUES(5,'Alex');#④為id字段插入0,使用自動增長值mysql>INSERTINTO`my_auto`VALUES(0,'Andy');查詢結(jié)果6.4.7自增管理
先定一個小目標(biāo)!掌握自動增長管理,能夠修改自動增長值、刪除自動增長,以
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- MCN解除合同范本
- 客運(yùn)線路租賃承包合同范本
- 買二手車付定金合同范本
- 廣告加工制作合同范本
- 公會運(yùn)營合作合同范本
- 工地圍墻工程建設(shè)施工合同
- 出租車股權(quán)合同范本
- 2025年農(nóng)村電網(wǎng)改造升級供電合同范本
- 2024-2025年中國聚氨酯建筑用保溫材料行業(yè)市場行情動態(tài)分析及發(fā)展前景趨勢預(yù)測報告
- 2025年升級版計件制勞動合同(新能源行業(yè))
- 2024-2025學(xué)年中小學(xué)校第二學(xué)期師德師風(fēng)工作計劃:必看!新學(xué)期師德師風(fēng)建設(shè)秘籍大公開(附2月-7月工作安排表)
- 《急性心力衰竭的急救處理》課件
- 小學(xué)六年級數(shù)學(xué)上冊《簡便計算》練習(xí)題(310題-附答案)
- 青海省西寧市海湖中學(xué)2025屆中考生物仿真試卷含解析
- 2024年河南省《輔警招聘考試必刷500題》考試題庫及答案【全優(yōu)】
- -情景交際-中考英語復(fù)習(xí)考點
- 安全隱患報告和舉報獎勵制度
- 地理標(biāo)志培訓(xùn)課件
- 2023行政主管年終工作報告五篇
- 2024年中國養(yǎng)老產(chǎn)業(yè)商學(xué)研究報告-銀發(fā)經(jīng)濟(jì)專題
- GA/T 1003-2024銀行自助服務(wù)亭技術(shù)規(guī)范
評論
0/150
提交評論