第5章 數(shù)據(jù)類型、表的操作和存儲(chǔ)引擎_第1頁(yè)
第5章 數(shù)據(jù)類型、表的操作和存儲(chǔ)引擎_第2頁(yè)
第5章 數(shù)據(jù)類型、表的操作和存儲(chǔ)引擎_第3頁(yè)
第5章 數(shù)據(jù)類型、表的操作和存儲(chǔ)引擎_第4頁(yè)
第5章 數(shù)據(jù)類型、表的操作和存儲(chǔ)引擎_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第5章數(shù)據(jù)類型、表的操作和存儲(chǔ)引擎學(xué)習(xí)目標(biāo):了解信息、數(shù)據(jù)和數(shù)據(jù)管理的基本概念,了解數(shù)據(jù)管理技術(shù)的發(fā)展歷史,理解數(shù)據(jù)庫(kù)系統(tǒng)的基本概念,理解概念模型、邏輯模型的相關(guān)概念,理解數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)。5.1數(shù)據(jù)類型5.1數(shù)據(jù)類型5.1.1數(shù)值類型1.整數(shù)類型及其取值范圍5.1數(shù)據(jù)類型2.浮點(diǎn)數(shù)類型和定點(diǎn)數(shù)類型及其取值范圍5.1數(shù)據(jù)類型3.?dāng)?shù)值類型的選擇在選擇數(shù)值類型時(shí),應(yīng)遵循如下原則。①選擇最小的可用類型。②對(duì)完全都是數(shù)字的,即無(wú)小數(shù)點(diǎn),可以選擇整數(shù)類型,如整數(shù)年齡。③浮點(diǎn)數(shù)類型用于有小數(shù)部分的數(shù),如帶小數(shù)的成績(jī)。④在MySQL中,定點(diǎn)數(shù)類型以字符串形式存儲(chǔ),因此,其精度比浮點(diǎn)數(shù)類型要高。如果對(duì)數(shù)據(jù)的精度要求比較高,就要選擇定點(diǎn)數(shù)類型DECIMAL。⑤不論是定點(diǎn)數(shù)類型還是浮點(diǎn)數(shù)類型,如果用戶指定的精度值超過(guò)精度范圍,則會(huì)進(jìn)行四舍五入的處理。5.1數(shù)據(jù)類型5.1.2字符串類型1.字符串類型及其取值范圍5.1數(shù)據(jù)類型2.字符串類型的選擇①?gòu)乃俣确矫婵紤],要選擇固定的列,可以使用CHAR[(size)]型;②要節(jié)省空間,使用可變長(zhǎng)度的列,可以使用VARCHAR[(size)]型;③要搜索的內(nèi)容不區(qū)分大小寫,可以使用TEXT[(size)]型;④要搜索的內(nèi)容區(qū)分大小寫,可以使用二進(jìn)制類型。5.1數(shù)據(jù)類型5.1.3日期和時(shí)間類型5.1數(shù)據(jù)類型5.1.4二進(jìn)制類型MySQL支持兩類字符串:文本字符串和二進(jìn)制字符串。二進(jìn)制字符串類型也稱為二進(jìn)制類型,MySQL中的二進(jìn)制類型有BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB類型。由于在實(shí)際中很少使用二進(jìn)制類型,故不進(jìn)行詳細(xì)介紹。5.1.5復(fù)合類型MySQL還支持兩種復(fù)合(數(shù)據(jù))類型:SET和ENUM。它們是基于字符串的集合類型,但是可以被視為不同的數(shù)據(jù)類型。1.SET(集合)型set_nameSET('value1','value2',…,'valuen')例如,將一個(gè)人的興趣愛好hobby用SET型表示,SQL語(yǔ)句如下:hobbySET('看電影','聽音樂','旅游','購(gòu)物','打游戲')5.1數(shù)據(jù)類型2.ENUM(枚舉)型set_nameENUM('value1','value2',…,'valuen')例如,sex列用ENUM型表示如下:sexENUM('男','女','未知')5.1數(shù)據(jù)類型5.2表的操作5.2.1創(chuàng)建表CREATE[TEMPORARY]TABLE[db_name.]tb_name(column_definition1[列級(jí)完整性約束條件1,][column_definition2[列級(jí)完整性約束條件2],][…,][column_definitionN[列級(jí)完整性約束條件N],][表級(jí)完整性約束條件])[table_option];5.2表的操作列的定義包括列名、數(shù)據(jù)類型、指定默認(rèn)值、注釋列名等屬性組成,各項(xiàng)之間用空格分隔。格式如下:column_namedata_type[DEFAULTdefault_value][AUTO_INCREMENT][COMMENT'String']…able_option:對(duì)表的操作,包括存儲(chǔ)引擎、默認(rèn)字符集、校對(duì)規(guī)則等,各項(xiàng)之間用空格分隔。格式如下:[ENGINE=engine_name][DEFAULTCHARSET=characterset_name][COLLATE=collation_name]5.2表的操作【例5-1】在數(shù)據(jù)庫(kù)student_db中,創(chuàng)建班級(jí)表class,該表的定義說(shuō)明見表5-6。要求對(duì)表使用InnoDB存儲(chǔ)引擎,設(shè)置該表的字符集為utf8mb4。5.2表的操作USEstudent_db;CREATETABLEclass(ClassIDCHAR(8)PRIMARYKEYCOMMENT'班級(jí)編號(hào)',ClassNameVARCHAR(20)NOTNULLCOMMENT'班級(jí)名稱',DepartmentNameVARCHAR(20)NOTNULL,GradeCHAR(4)NOTNULL,ClassNumSMALLINT)ENGINE=InnoDBDEFAULTCHARSET=utf8mb4;5.2表的操作【例5-2】創(chuàng)建臨時(shí)表temp_table1。SQL語(yǔ)句如下:CREATETEMPORARYTABLEtemp_table1(IDINTNOTNULL,NameVARCHAR(10),AgeINT);5.2表的操作5.2表的操作5.2表的操作5.2.2查看表1.查看表的名稱列表SHOWTABLES[{FROM|IN}db_name];【例5-3】查看全部表的名稱。USEstudent_db;SHOWTABLES;5.2表的操作2.查看表的基本結(jié)構(gòu)SHOWCOLUMNS{FROM|IN}tb_name[{FROM|IN}db_name];{DESCRIBE|DESC}tb_name;5.2表的操作【例5-4】查看class表的結(jié)構(gòu)。USEstudent_db;SHOWCOLUMNSFROMclass;或DESCclass;5.2表的操作5.2表的操作3.查看表的詳細(xì)結(jié)構(gòu)SHOWCREATETABLEtb_name;5.2表的操作【例5-5】查看class表的詳細(xì)結(jié)構(gòu)。SHOWCREATETABLEclass;5.2表的操作5.2.3修改數(shù)據(jù)表ALTERTABLEtb_nameADD[COLUMN]new_col_nametype[constraint_condition][{FIRST|AFTER}existing_col_names]|MODIFY[COLUMN]col_nametype[constraint_condition][{FIRST|AFTER}existing_col_names]|CHANGE[COLUMN]col_namenew_col_nametype[constraint_condition]|ALTER[COLUMN]col_name{SET|DROP}DEFAULT|DROP[COLUMN]col_name|AUTO_INCREMENT[=n]|RENAME[{AS|TO}]new_tb_name;5.2表的操作1.添加新列【例5-6】向class表中添加班主任HeadTeacher列,數(shù)據(jù)類型是VARCHAR(20),將該列添加到DepartmentName列后;添加入學(xué)日期EntryDate列,將該列添加到最后。ALTERTABLEclassADDCOLUMNHeadTeacherVARCHAR(20)AFTERDepartmentName;ALTERTABLEclassADDEntryDateDATE;5.2表的操作2.修改列的數(shù)據(jù)類型、約束【例5-7】把class表中ClassName列的數(shù)據(jù)類型寬度改為VARCHAR(10),約束為NOTNULL。ALTERTABLEclassMODIFYClassNameVARCHAR(10)NOTNULL;DESCclass;5.2表的操作3.改變列名【例5-8】把class表中的班主任HeadTeacher列名改為班長(zhǎng)Monitor列,數(shù)據(jù)類型和寬度不變;ClassNum改為Number,數(shù)據(jù)類型改為TINYINT。ALTERTABLEclassCHANGEHeadTeacherMonitorVARCHAR(20),CHANGEClassNumNumberTINYINT;5.2表的操作4.刪除列【例5-9】把class表中的Monitor列和EntryDate列刪除。ALTERTABLEclassDROPMonitor,DROPEntryDate;5.2表的操作5.重命名表名ALTERTABLEtb_nameRENAME[{AS|TO}]new_tb_name;RENAMETABLEtb_name1TOnew_tb_name1[,tb_name2TOnew_tb_name2]…;5.2表的操作【例5-10】分別使用上面兩種語(yǔ)句,修改class表名,先把class表名改為cla,然后再改回class。ALTERTABLEclassRENAMETOcla;SHOWTABLES;RENAMETABLEclaTOclass;SHOWTABLES;5.2表的操作5.2.4復(fù)制表結(jié)構(gòu)CREATETABLE[IFNOTEXISTS]new_table_nameLIKEold_table_name;例如,復(fù)制class表的結(jié)構(gòu),新表名為class1,SQL語(yǔ)句如下:CREATETABLEIFNOTEXISTSclass1LIKEclass;5.2表的操作5.2.5刪除表DROPTABLE[IFEXISTS]tb_name1[,tb_name2]…;【例5-11】刪除class表和class1表。SQL語(yǔ)句如下:DROPTABLEIFEXISTSclass;DROPTABLEIFEXISTSclass1;SHOWTABLES;5.2表的操作5.2.6使用NavicatforMySQL操作表1.創(chuàng)建表【例5-12】創(chuàng)建學(xué)生表student,student表的定義說(shuō)明見表5-7。5.2表的操作5.2表的操作5.2表的操作5.2表的操作2.查看和修改表結(jié)構(gòu)【例5-13】查看和修改student表的結(jié)構(gòu)。5.2表的操作3.使用NavicatforMySQL刪除表【例5-14】刪除student表。5.3MySQL的存儲(chǔ)引擎5.3.1常用的存儲(chǔ)引擎MySQL支持的存儲(chǔ)引擎包括MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDBCluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED、solidDB等。5.3.2查看存儲(chǔ)引擎1.查看默認(rèn)的存儲(chǔ)引擎SHOWVARIABLESLIKE'default_storage_engine';2.查看支持的存儲(chǔ)引擎SHOWENGINES;5.3MySQL的存儲(chǔ)引擎【例5-15】查看所安裝MySQL版本默認(rèn)的存儲(chǔ)引擎和支持的存儲(chǔ)引擎。SHOWVARIABLESLIKE'default_storage_engine';SHOWENGINES;5.3MySQL的存儲(chǔ)引擎5.3.3設(shè)置存儲(chǔ)引擎1.設(shè)置默認(rèn)存儲(chǔ)引擎例如,設(shè)置默認(rèn)存儲(chǔ)引擎為InnoDB,服務(wù)器參數(shù)如下:[mysqld]default-storage-engine=INNODB2.將已存在表的存儲(chǔ)引擎修改成

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論