版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章
數(shù)據(jù)定義7.1定義數(shù)據(jù)庫(kù)教學(xué)內(nèi)容1創(chuàng)建數(shù)據(jù)庫(kù)2選擇和查看數(shù)據(jù)庫(kù)3修改與刪除數(shù)據(jù)庫(kù)基本語(yǔ)法格式:
create
database[ifnotexists]db_name
[[default]characterset[=]charset_name]
指定數(shù)據(jù)庫(kù)字符集
[[default]]collate[=]collation_name];指定字符集的校對(duì)規(guī)則語(yǔ)法說明:[]內(nèi)為可選項(xiàng),|為選擇項(xiàng),db_name數(shù)據(jù)庫(kù)名,ifnotexists是否存在已建好的同名數(shù)據(jù)庫(kù)>>創(chuàng)建數(shù)據(jù)庫(kù)>>操作1.使用SQL語(yǔ)句創(chuàng)建名為“test1”的數(shù)據(jù)庫(kù)createdatabasetest1;createdatabasedb_schoolDefaultcharactersetgb2312Defaultcollategb2312_Chinese_ci;2.使用SQL語(yǔ)句創(chuàng)建名為“db_school”的數(shù)據(jù)庫(kù),字符集為gb2312,校對(duì)規(guī)則為gb2312_Chinese_ci>>選擇與查看數(shù)據(jù)庫(kù)選擇數(shù)據(jù)庫(kù)
語(yǔ)法格式:usedb_name;從一個(gè)數(shù)據(jù)庫(kù)跳轉(zhuǎn)到另一個(gè)數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)庫(kù)之后,需要使用use命令指定當(dāng)前數(shù)據(jù)庫(kù),才能對(duì)該數(shù)據(jù)庫(kù)進(jìn)行各種操作。
示例:usedb_school;查看數(shù)據(jù)庫(kù)
語(yǔ)法格式:showdatabases;列出當(dāng)前用戶權(quán)限內(nèi)的所有數(shù)據(jù)庫(kù)名稱
示例:查看當(dāng)前用戶(root)可查看的數(shù)據(jù)庫(kù)列表
showdatabases;查看指定數(shù)據(jù)庫(kù)
語(yǔ)法格式:showcreatedatabasedb_name;列出指定的數(shù)據(jù)庫(kù)名稱
示例:查看test1數(shù)據(jù)庫(kù);
showcreatedatabasetest1;>>修改與刪除數(shù)據(jù)庫(kù)修改數(shù)據(jù)庫(kù)
語(yǔ)法格式:
alterdatabase[db_name]
[[default]characterset[=]charset_name]
[[default]]collate[=]collation_name];注意:使用此命令時(shí),用戶必須具有對(duì)數(shù)據(jù)庫(kù)修改的權(quán)限。修改當(dāng)前數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)名可省略
示例:修改db_school的默認(rèn)字符集為utf8 alterdatabasedb_school
defaultcharactersetutf8
defaultcollateutf8_general_ci;刪除數(shù)據(jù)庫(kù)
語(yǔ)法格式:dropdatabasedb_name;將指定的數(shù)據(jù)庫(kù)及所有數(shù)據(jù)從磁盤刪除
示例:刪除test1數(shù)據(jù)庫(kù),并查看數(shù)據(jù)庫(kù);Dropdatabasetest1;>>編程題(1)創(chuàng)建一個(gè)名為“test1”的數(shù)據(jù)庫(kù),字符編碼為默認(rèn)設(shè)置;(2)創(chuàng)建一個(gè)名為“test2”的數(shù)據(jù)庫(kù),字符編碼為“utf8”(3)創(chuàng)建一個(gè)名為“test3”的數(shù)據(jù)庫(kù),字符編碼為“gbk”(4)檢查一下是否有名為“test”的數(shù)據(jù)庫(kù),如果沒有則創(chuàng)建一個(gè),默認(rèn)字符編碼為utf-8(5)檢查一下是否有名為“test1”的數(shù)據(jù)庫(kù);(6)查看所有數(shù)據(jù)庫(kù);(7)查看test2數(shù)據(jù)庫(kù);
(8)修改test3數(shù)據(jù)庫(kù)字符編碼規(guī)則為utf8;(9)刪除test3數(shù)據(jù)庫(kù);(10)查看所有數(shù)據(jù)庫(kù)。7.2定義表教學(xué)內(nèi)容1創(chuàng)建與查看2修改與刪除3表的約束表(Table)是數(shù)據(jù)庫(kù)中數(shù)據(jù)存儲(chǔ)最常見和最簡(jiǎn)單的一種形式,數(shù)據(jù)庫(kù)可以將復(fù)雜的數(shù)據(jù)結(jié)構(gòu)用較為簡(jiǎn)單的二維表來表示。二維表是由行和列組成的,分別都包含著數(shù)據(jù);表由若干行和列組成。在數(shù)據(jù)庫(kù)中表中的行被稱為記錄,表中的列被稱為字段。記錄由若干字段組成,字段用于保存每條記錄的特定信息。數(shù)據(jù)表的一列包含了某個(gè)特定字段的全部信息。>>表概述:什么是表(table)學(xué)號(hào)姓名性別年齡17071401張三男2017071402李四女1817071403王五男2117071404趙六女19>>創(chuàng)建表使用如下SQL語(yǔ)句來選擇數(shù)據(jù)庫(kù):USE數(shù)據(jù)庫(kù)名使用SQL語(yǔ)句創(chuàng)建表,創(chuàng)建表的SQL語(yǔ)法格式:createtable表名(
字段名1數(shù)據(jù)類型1[列完整性約束條件][默認(rèn)值],
字段名2數(shù)據(jù)類型2[列完整性約束條件][默認(rèn)值],
字段名3數(shù)據(jù)類型3[列完整性約束條件][默認(rèn)值], ···
字段名n數(shù)據(jù)類型n[列完整性約束條件][默認(rèn)值]
[,表級(jí)完整性約束條件])[engine=引擎類型];說明:createtable為創(chuàng)建表的固定語(yǔ)法格式;‘表名’為要?jiǎng)?chuàng)建的表的名稱,‘字段名’為二維表中每一列的列名;‘?dāng)?shù)據(jù)類型’為該字段所存儲(chǔ)的數(shù)據(jù)的類型;‘完整性約束條件’為可選項(xiàng),指的是對(duì)字段的某些特殊約束。不同字段之間用‘,’隔開,最后一個(gè)字段沒有逗號(hào)。>>示例使用SQL語(yǔ)句創(chuàng)建“student”學(xué)生表:學(xué)生表(學(xué)號(hào),姓名,性別,籍貫,出生日期,系,專業(yè))字段名數(shù)據(jù)類型描述idINT(8)id表示學(xué)生編號(hào)nameVARCHAR(20)name表示學(xué)生姓名genderVARCHAR(1)gender表示學(xué)生性別ageINT(2)age表示學(xué)生年齡>>示例規(guī)范化的關(guān)系模式(下劃線表示主碼,灰底表示外碼):Student(學(xué)生表)(學(xué)號(hào)ID,姓名name,性別gender,籍貫,出生日期birth,系,專業(yè),班號(hào))課程表(課程號(hào),課程名,所屬系,課時(shí),學(xué)分)班級(jí)表(班號(hào),專業(yè),所屬系,人數(shù),教室,班主任)教師表(教師號(hào),教師名,性別,出生日期,職稱,職務(wù))成績(jī)表(學(xué)號(hào),課程號(hào),成績(jī),學(xué)期)講授表(課號(hào),班號(hào),教師號(hào),上課教室,學(xué)期,上課評(píng)價(jià))系部表(系號(hào),系名稱,辦公室,辦公電話)>>查看表查看表的基本結(jié)構(gòu)(包括字段、類型及長(zhǎng)度、是否允許空值、默認(rèn)值等)
describe(desc)
表名;查看表的詳細(xì)結(jié)構(gòu)(顯示創(chuàng)建表的語(yǔ)法格式)showcreatetablestudent;查看所有表Showtables;>>修改表修改表名
altertable舊表名rename[to]新表名;示例:將student表的名稱修改為‘std’,并查看結(jié)果altertablestudentrenamestd;showcreatetablestd;修改字段的數(shù)據(jù)類型1.修改一個(gè)字段:Altertable表名modify
列名新數(shù)據(jù)類型;示例:將std表中id字段的類型由int(8)修改為int(10),并查看Altertablestdmodifyidint(10);Descstd;2.修改多個(gè)字段:Altertable表名modify列名新數(shù)據(jù)類型,modify列名新數(shù)據(jù)類型…;>>修改表只修改字段名
altertable表名change舊字段名新字段名舊數(shù)據(jù)類型;示例:將std表字段gender改為sex,并查看結(jié)果altertablestdchangegendersexvarchar(1);descstd;同時(shí)修改字段名和數(shù)據(jù)類型Altertable表名change舊字段名新字段名新數(shù)據(jù)類型;示例:將std表中sex字段改為gender,數(shù)據(jù)類型改為varchar(2),并查看altertablestdchangesexgendervarchar(2);descstd;>>修改表增加字段
(1)表的最后位置增加字段
altertable表名add新字段名數(shù)據(jù)類型;示例:在std表中添加字段score,數(shù)據(jù)類型為’float’,并查看結(jié)果altertablestdaddscorefloat;descstd;(2)表的第一位置增加字段
altertable表名add新字段名數(shù)據(jù)類型
first;示例:在std表第一個(gè)位置添加字段phone,數(shù)據(jù)類型為’varchar(20)’,并查看結(jié)果altertablestdaddphonevarchar(20)first;(3)表的指定位置增加字段
altertable表名add新字段名數(shù)據(jù)類型after指定的字段名;>>修改表修改字段的排列位置altertable表名modify字段名1數(shù)據(jù)類型first|after字段名2;
(1)將字段移動(dòng)到第一個(gè)位置示例:在std表中將字段id移動(dòng)第一個(gè)位置,并查看結(jié)果altertablestdmodifyidint(20)first;descstd;(2)將字段移動(dòng)到指定位置示例:將std表字段phone移動(dòng)到age字段的后面,并查看結(jié)果altertablestdmodifyphonevarchar(20)afterage;刪除字段altertable表名drop字段名;示例:altertablestddropphone;>>刪除表刪除表的刪除操作會(huì)將表中的數(shù)據(jù)一并刪除,需慎重。
刪除表droptable表名;示例:droptablestd;showtables;/*查看數(shù)據(jù)庫(kù)中所有表*/1.創(chuàng)建學(xué)生表student(id,name,gender,age)
Createtablestudent(idint(4),namevarchar(20),genderchar(1),ageint(3));2.將student表的名稱修改為‘std’,并查看結(jié)果altertablestudentrenamestd;showcreatetablestd;3.將std表中id字段的類型由int(8)修改為int(10),并查看Altertablestdmodifyidint(10);4.將std表字段gender改為sex,并查看結(jié)果altertablestdchangegendersexvarchar(1);5.在std表中添加字段score,數(shù)據(jù)類型為’float’,并查看結(jié)果altertablestdaddscorefloat;descstd;6.在std表第一個(gè)位置添加字段phone,數(shù)據(jù)類型為’varchar(20)’,并查看結(jié)果altertablestdaddphonevarchar(20)first;7.在std表中將字段id移動(dòng)第一個(gè)位置,并查看結(jié)果altertablestdmodifyidint(20)first;descstd;8.將std表字段phone移動(dòng)到age字段的后面,并查看結(jié)果altertablestdmodifyphonevarchar(20)afterage;9.刪除phone字段altertablestddropphone;10.刪除學(xué)生表stddroptablestd;表的基本操作教學(xué)內(nèi)容1創(chuàng)建與查看2修改與刪除3表的約束>>表的約束約束為了防止不符合規(guī)范的數(shù)據(jù)存入數(shù)據(jù)庫(kù),在用戶對(duì)數(shù)據(jù)進(jìn)行插入、修改、刪除等操作時(shí),MySQL數(shù)據(jù)庫(kù)管理系統(tǒng)提供了一種機(jī)制來檢查數(shù)據(jù)庫(kù)中的數(shù)據(jù)是否滿足規(guī)定的條件,以保證數(shù)據(jù)庫(kù)中數(shù)據(jù)的準(zhǔn)確性和一致性,這種機(jī)制就是約束。主要支持6種完整性約束。約束條件約束描述PRIMARYKEY主鍵約束,約束字段的值可以唯一地標(biāo)識(shí)對(duì)應(yīng)的記錄UNIQUE唯一約束,約束字段的值是唯一的NOTNULL非空約束,約束字段的值不能為空DEFAULT默認(rèn)值約束,約束字段的默認(rèn)值A(chǔ)UTO_INCREMENT自動(dòng)增加約束,約束字段的值自動(dòng)遞增FOREIGNKEY外鍵約束,約束表與表之間的關(guān)系約束分類(1)表級(jí)約束:可以約束表中任意一個(gè)或多個(gè)字段;
(2)列級(jí)約束:只能約束其所在的某一個(gè)字段。>>主鍵約束概述主鍵約束(PRIMARY
KEY,縮寫PK),是數(shù)據(jù)庫(kù)中最重要的一種約束,其作用是約束表中的某個(gè)字段可以唯一標(biāo)識(shí)一條記錄。
創(chuàng)建表時(shí)添加主鍵約束
(1)為單個(gè)字段添加主鍵約束createtable表名( column_name1數(shù)據(jù)類型primarykey, column_name2數(shù)據(jù)類型, ......);示例:createtablestudent1( stu_idint(10)primarykey, stu_namevarchar(3), stu_sexvarchar(1));單字段主鍵的添加還可以使用表級(jí)約束,其SQL語(yǔ)句的語(yǔ)法格式如下所示:createtabletable_name( column_name1date_type, column_name2date_type, ......, [constraintpk_name]primarykey(column_name));>>主鍵約束為多個(gè)字段添加主鍵約束createtabletable_name( column_name1date_type, column_name2date_type, ......, [constraintpk_name]primarykey(column_name1,column_name2,···));[constraintpk_name]:可選項(xiàng),為主鍵約束指定主鍵的別名在已存在的表中添加主鍵約束,其語(yǔ)法格式如下所示:altertabletable_nameadd[constraintpk_name]primarykey(column_name1,column_name2,···);刪除主鍵約束,其語(yǔ)法格式如下所示:altertabletable_namedropprimarykey;>>唯一性約束概述唯一約束(UNIQUE,縮寫UK)比較簡(jiǎn)單,它規(guī)定了一張表中指定的某個(gè)字段的值不能重復(fù),即這一字段的每個(gè)值都是唯一的。如果想要某個(gè)字段的值不重復(fù),那么就可以為該字段添加為唯一約束。創(chuàng)建表時(shí)添加列級(jí)唯一約束,語(yǔ)法格式如下所示:createtable表(
字段名date_typeunique, ......);使用表級(jí)約束添加唯一約束,語(yǔ)法格式如下:createtabletable_name( column_name1date_type, column_name2date_type, ......, [constraintuk_name]unique(column_name1,column_name2,···));在已存在的表中添加唯一約束,語(yǔ)法格式如下:altertabletable_nameadd[constraintuk_name]unique(column_name1,column_name2,···);刪除唯一約束altertablestudent7dropindexstu_id;>>非空約束概述非空約束(NOTNULL,縮寫NK)規(guī)定了一張表中指定的某個(gè)字段的值不能為空(NULL)。設(shè)置了非空約束的字段,在插入的數(shù)據(jù)為NULL時(shí),數(shù)據(jù)庫(kù)會(huì)提示錯(cuò)誤,導(dǎo)致數(shù)據(jù)無法插入。創(chuàng)建表時(shí)添加非空約束,其語(yǔ)法格式如下所示:createtabletable_name( column_namedate_typenotnull, ......);在已存在的表中添加非空約束,其語(yǔ)法格式如下所示:altertabletable_namemodifycolumn_namedate_typenotnull;示例:altertablestudent8modifystu_sexvarchar(1)notnull;刪除非空約束,其語(yǔ)法格式如下所示:altertabletable_namemodifycolumn_namedate_type[null];>>默認(rèn)值約束概述默認(rèn)值約束(DEFAULT)用來規(guī)定字段的默認(rèn)值。如果某個(gè)被設(shè)置為DEFAULT約束的字段沒有插入具體的值,那么該字段的值將會(huì)被默認(rèn)值填充。創(chuàng)建表時(shí)添加默認(rèn)值約束,其語(yǔ)法格式如下所示:createtabletable_name( column_namedate_typedefaultvalue, ......);在已存在的表中添加默認(rèn)值約束altertabletable_namemodifycolumn_namedate_typedefaultvalue;示例:altertablestudent9modifystu_namevarchar(3)default'學(xué)生';刪除默認(rèn)值約束,語(yǔ)法格式如下所示:altertabletable_namemodifycolumn_namedate_type;示例:altertablestudent9modifystu_namevarchar(3);>>字段值自動(dòng)增加約束概述自增約束(AUTO_INCREMENT)可以使表中某個(gè)字段的值自動(dòng)增加。一張表中只能有一個(gè)自增長(zhǎng)字段,并且該字段必須定義了約束(該約束可以是主鍵約束、唯一約束以及外鍵約束),如果自增字段沒有定義約束,數(shù)據(jù)庫(kù)則會(huì)提示“Incorrecttabledefinition;therecanbeonlyoneautocolumnanditmustbedefinedasakey”錯(cuò)誤。由于自增約束會(huì)自動(dòng)生成唯一的ID,所以自增約束通常會(huì)配合主鍵使用,并且只適用于整數(shù)類型。一般情況下,設(shè)置為自增約束字段的值會(huì)從1開始,每增加一條記錄,該字段的值加1。下面我們講解自增約束的增加和刪除操作。創(chuàng)建表時(shí)添加自增約束,其語(yǔ)法格式如下所示:createtabletable_name( column_namedate_typeauto_increment, ......);在已存在的表中添加自增約束,語(yǔ)法格式如下所示altertabletable_namemodifycolumn_namedate_typeauto_increment;刪除自增約束,其語(yǔ)法格式如下所示:altertabletable_namemodifycolumn_namedate_type;>>外鍵約束概述外鍵約束(FOREIGNKEY,縮寫FK)是用來實(shí)現(xiàn)數(shù)據(jù)庫(kù)表的參照完整性的。外鍵約束可以使兩張表緊密的結(jié)合起來,特別是針對(duì)修改或者刪除的級(jí)聯(lián)操作時(shí),會(huì)保證數(shù)據(jù)的完整性。
外鍵是指表中某個(gè)字段的值依賴于另一張表中某個(gè)字段的值,而被依賴的字段必須具有主鍵約束或者唯一約束。被依賴的表我們通常稱之為父表或者主表,設(shè)置外鍵約束的表稱為子表或者從表。舉個(gè)例子:如果想要表示學(xué)生和班級(jí)的關(guān)系,首先要有學(xué)生表和班級(jí)表兩張表,然后學(xué)生表中有個(gè)字段為stu_clazz(該字段表示學(xué)生所在的班級(jí)),而該字段的取值范圍由班級(jí)表中的主鍵cla_no字段(該字段表示班級(jí)編號(hào))的取值決定。那么班級(jí)表為主表,學(xué)生表為從表,且stu_clazz字段是學(xué)生表的外鍵。通過stu_clazz字段就建立了學(xué)生表和班級(jí)表的關(guān)系。創(chuàng)建表時(shí)添加自增約束,其語(yǔ)法格式如下所示:createtablechild_table_name(column_name1date_type,column_name2date_type,······[constraintfk_name]foreignkey(child_column_name)r
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉(cāng)儲(chǔ)培訓(xùn)管理制度
- 強(qiáng)化崗前培訓(xùn)制度
- 宣傳委員培訓(xùn)制度
- 培訓(xùn)中心黨支部制度
- 2025湖南長(zhǎng)沙融發(fā)集團(tuán)招聘8人筆試參考題庫(kù)附帶答案詳解(3卷)
- 2025湖北荊州市興質(zhì)市政園林有限公司招聘綜合及考察筆試歷年參考題庫(kù)附帶答案詳解
- 外科培訓(xùn)管理制度
- 外出培訓(xùn)服務(wù)管理制度
- 2025浙江臺(tái)州市經(jīng)濟(jì)建設(shè)規(guī)劃院有限公司招聘6人筆試歷年參考題庫(kù)附帶答案詳解
- 院前急救崗前培訓(xùn)制度
- 甲狀腺的中醫(yī)護(hù)理
- 商住樓項(xiàng)目總體規(guī)劃方案
- 2022儲(chǔ)能系統(tǒng)在電網(wǎng)中典型應(yīng)用
- 互聯(lián)網(wǎng)+物流平臺(tái)項(xiàng)目創(chuàng)辦商業(yè)計(jì)劃書(完整版)
- 家庭學(xué)校社會(huì)協(xié)同育人課件
- IABP主動(dòng)脈球囊反搏課件
- 基于python-的車牌識(shí)別
- 《LTCC生產(chǎn)流程》課件
- 7KW交流交流充電樁說明書
- 喪假國(guó)家規(guī)定
- 唯物史觀指導(dǎo)初中歷史教學(xué)
評(píng)論
0/150
提交評(píng)論