《數(shù)據(jù)庫原理及MySQL應用(微課版)》課件 第7章數(shù)據(jù)定義_第1頁
《數(shù)據(jù)庫原理及MySQL應用(微課版)》課件 第7章數(shù)據(jù)定義_第2頁
《數(shù)據(jù)庫原理及MySQL應用(微課版)》課件 第7章數(shù)據(jù)定義_第3頁
《數(shù)據(jù)庫原理及MySQL應用(微課版)》課件 第7章數(shù)據(jù)定義_第4頁
《數(shù)據(jù)庫原理及MySQL應用(微課版)》課件 第7章數(shù)據(jù)定義_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

第7章

數(shù)據(jù)定義7.1定義數(shù)據(jù)庫教學內(nèi)容1創(chuàng)建數(shù)據(jù)庫2選擇和查看數(shù)據(jù)庫3修改與刪除數(shù)據(jù)庫基本語法格式:

create

database[ifnotexists]db_name

[[default]characterset[=]charset_name]

指定數(shù)據(jù)庫字符集

[[default]]collate[=]collation_name];指定字符集的校對規(guī)則語法說明:[]內(nèi)為可選項,|為選擇項,db_name數(shù)據(jù)庫名,ifnotexists是否存在已建好的同名數(shù)據(jù)庫>>創(chuàng)建數(shù)據(jù)庫>>操作1.使用SQL語句創(chuàng)建名為“test1”的數(shù)據(jù)庫createdatabasetest1;createdatabasedb_schoolDefaultcharactersetgb2312Defaultcollategb2312_Chinese_ci;2.使用SQL語句創(chuàng)建名為“db_school”的數(shù)據(jù)庫,字符集為gb2312,校對規(guī)則為gb2312_Chinese_ci>>選擇與查看數(shù)據(jù)庫選擇數(shù)據(jù)庫

語法格式:usedb_name;從一個數(shù)據(jù)庫跳轉(zhuǎn)到另一個數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫之后,需要使用use命令指定當前數(shù)據(jù)庫,才能對該數(shù)據(jù)庫進行各種操作。

示例:usedb_school;查看數(shù)據(jù)庫

語法格式:showdatabases;列出當前用戶權(quán)限內(nèi)的所有數(shù)據(jù)庫名稱

示例:查看當前用戶(root)可查看的數(shù)據(jù)庫列表

showdatabases;查看指定數(shù)據(jù)庫

語法格式:showcreatedatabasedb_name;列出指定的數(shù)據(jù)庫名稱

示例:查看test1數(shù)據(jù)庫;

showcreatedatabasetest1;>>修改與刪除數(shù)據(jù)庫修改數(shù)據(jù)庫

語法格式:

alterdatabase[db_name]

[[default]characterset[=]charset_name]

[[default]]collate[=]collation_name];注意:使用此命令時,用戶必須具有對數(shù)據(jù)庫修改的權(quán)限。修改當前數(shù)據(jù)庫時,數(shù)據(jù)庫名可省略

示例:修改db_school的默認字符集為utf8 alterdatabasedb_school

defaultcharactersetutf8

defaultcollateutf8_general_ci;刪除數(shù)據(jù)庫

語法格式:dropdatabasedb_name;將指定的數(shù)據(jù)庫及所有數(shù)據(jù)從磁盤刪除

示例:刪除test1數(shù)據(jù)庫,并查看數(shù)據(jù)庫;Dropdatabasetest1;>>編程題(1)創(chuàng)建一個名為“test1”的數(shù)據(jù)庫,字符編碼為默認設置;(2)創(chuàng)建一個名為“test2”的數(shù)據(jù)庫,字符編碼為“utf8”(3)創(chuàng)建一個名為“test3”的數(shù)據(jù)庫,字符編碼為“gbk”(4)檢查一下是否有名為“test”的數(shù)據(jù)庫,如果沒有則創(chuàng)建一個,默認字符編碼為utf-8(5)檢查一下是否有名為“test1”的數(shù)據(jù)庫;(6)查看所有數(shù)據(jù)庫;(7)查看test2數(shù)據(jù)庫;

(8)修改test3數(shù)據(jù)庫字符編碼規(guī)則為utf8;(9)刪除test3數(shù)據(jù)庫;(10)查看所有數(shù)據(jù)庫。7.2定義表教學內(nèi)容1創(chuàng)建與查看2修改與刪除3表的約束表(Table)是數(shù)據(jù)庫中數(shù)據(jù)存儲最常見和最簡單的一種形式,數(shù)據(jù)庫可以將復雜的數(shù)據(jù)結(jié)構(gòu)用較為簡單的二維表來表示。二維表是由行和列組成的,分別都包含著數(shù)據(jù);表由若干行和列組成。在數(shù)據(jù)庫中表中的行被稱為記錄,表中的列被稱為字段。記錄由若干字段組成,字段用于保存每條記錄的特定信息。數(shù)據(jù)表的一列包含了某個特定字段的全部信息。>>表概述:什么是表(table)學號姓名性別年齡17071401張三男2017071402李四女1817071403王五男2117071404趙六女19>>創(chuàng)建表使用如下SQL語句來選擇數(shù)據(jù)庫:USE數(shù)據(jù)庫名使用SQL語句創(chuàng)建表,創(chuàng)建表的SQL語法格式:createtable表名(

字段名1數(shù)據(jù)類型1[列完整性約束條件][默認值],

字段名2數(shù)據(jù)類型2[列完整性約束條件][默認值],

字段名3數(shù)據(jù)類型3[列完整性約束條件][默認值], ···

字段名n數(shù)據(jù)類型n[列完整性約束條件][默認值]

[,表級完整性約束條件])[engine=引擎類型];說明:createtable為創(chuàng)建表的固定語法格式;‘表名’為要創(chuàng)建的表的名稱,‘字段名’為二維表中每一列的列名;‘數(shù)據(jù)類型’為該字段所存儲的數(shù)據(jù)的類型;‘完整性約束條件’為可選項,指的是對字段的某些特殊約束。不同字段之間用‘,’隔開,最后一個字段沒有逗號。>>示例使用SQL語句創(chuàng)建“student”學生表:學生表(學號,姓名,性別,籍貫,出生日期,系,專業(yè))字段名數(shù)據(jù)類型描述idINT(8)id表示學生編號nameVARCHAR(20)name表示學生姓名genderVARCHAR(1)gender表示學生性別ageINT(2)age表示學生年齡>>示例規(guī)范化的關系模式(下劃線表示主碼,灰底表示外碼):Student(學生表)(學號ID,姓名name,性別gender,籍貫,出生日期birth,系,專業(yè),班號)課程表(課程號,課程名,所屬系,課時,學分)班級表(班號,專業(yè),所屬系,人數(shù),教室,班主任)教師表(教師號,教師名,性別,出生日期,職稱,職務)成績表(學號,課程號,成績,學期)講授表(課號,班號,教師號,上課教室,學期,上課評價)系部表(系號,系名稱,辦公室,辦公電話)>>查看表查看表的基本結(jié)構(gòu)(包括字段、類型及長度、是否允許空值、默認值等)

describe(desc)

表名;查看表的詳細結(jié)構(gòu)(顯示創(chuàng)建表的語法格式)showcreatetablestudent;查看所有表Showtables;>>修改表修改表名

altertable舊表名rename[to]新表名;示例:將student表的名稱修改為‘std’,并查看結(jié)果altertablestudentrenamestd;showcreatetablestd;修改字段的數(shù)據(jù)類型1.修改一個字段:Altertable表名modify

列名新數(shù)據(jù)類型;示例:將std表中id字段的類型由int(8)修改為int(10),并查看Altertablestdmodifyidint(10);Descstd;2.修改多個字段:Altertable表名modify列名新數(shù)據(jù)類型,modify列名新數(shù)據(jù)類型…;>>修改表只修改字段名

altertable表名change舊字段名新字段名舊數(shù)據(jù)類型;示例:將std表字段gender改為sex,并查看結(jié)果altertablestdchangegendersexvarchar(1);descstd;同時修改字段名和數(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表第一個位置添加字段phone,數(shù)據(jù)類型為’varchar(20)’,并查看結(jié)果altertablestdaddphonevarchar(20)first;(3)表的指定位置增加字段

altertable表名add新字段名數(shù)據(jù)類型after指定的字段名;>>修改表修改字段的排列位置altertable表名modify字段名1數(shù)據(jù)類型first|after字段名2;

(1)將字段移動到第一個位置示例:在std表中將字段id移動第一個位置,并查看結(jié)果altertablestdmodifyidint(20)first;descstd;(2)將字段移動到指定位置示例:將std表字段phone移動到age字段的后面,并查看結(jié)果altertablestdmodifyphonevarchar(20)afterage;刪除字段altertable表名drop字段名;示例:altertablestddropphone;>>刪除表刪除表的刪除操作會將表中的數(shù)據(jù)一并刪除,需慎重。

刪除表droptable表名;示例:droptablestd;showtables;/*查看數(shù)據(jù)庫中所有表*/1.創(chuàng)建學生表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表第一個位置添加字段phone,數(shù)據(jù)類型為’varchar(20)’,并查看結(jié)果altertablestdaddphonevarchar(20)first;7.在std表中將字段id移動第一個位置,并查看結(jié)果altertablestdmodifyidint(20)first;descstd;8.將std表字段phone移動到age字段的后面,并查看結(jié)果altertablestdmodifyphonevarchar(20)afterage;9.刪除phone字段altertablestddropphone;10.刪除學生表stddroptablestd;表的基本操作教學內(nèi)容1創(chuàng)建與查看2修改與刪除3表的約束>>表的約束約束為了防止不符合規(guī)范的數(shù)據(jù)存入數(shù)據(jù)庫,在用戶對數(shù)據(jù)進行插入、修改、刪除等操作時,MySQL數(shù)據(jù)庫管理系統(tǒng)提供了一種機制來檢查數(shù)據(jù)庫中的數(shù)據(jù)是否滿足規(guī)定的條件,以保證數(shù)據(jù)庫中數(shù)據(jù)的準確性和一致性,這種機制就是約束。主要支持6種完整性約束。約束條件約束描述PRIMARYKEY主鍵約束,約束字段的值可以唯一地標識對應的記錄UNIQUE唯一約束,約束字段的值是唯一的NOTNULL非空約束,約束字段的值不能為空DEFAULT默認值約束,約束字段的默認值AUTO_INCREMENT自動增加約束,約束字段的值自動遞增FOREIGNKEY外鍵約束,約束表與表之間的關系約束分類(1)表級約束:可以約束表中任意一個或多個字段;

(2)列級約束:只能約束其所在的某一個字段。>>主鍵約束概述主鍵約束(PRIMARY

KEY,縮寫PK),是數(shù)據(jù)庫中最重要的一種約束,其作用是約束表中的某個字段可以唯一標識一條記錄。

創(chuàng)建表時添加主鍵約束

(1)為單個字段添加主鍵約束createtable表名( column_name1數(shù)據(jù)類型primarykey, column_name2數(shù)據(jù)類型, ......);示例:createtablestudent1( stu_idint(10)primarykey, stu_namevarchar(3), stu_sexvarchar(1));單字段主鍵的添加還可以使用表級約束,其SQL語句的語法格式如下所示:createtabletable_name( column_name1date_type, column_name2date_type, ......, [constraintpk_name]primarykey(column_name));>>主鍵約束為多個字段添加主鍵約束createtabletable_name( column_name1date_type, column_name2date_type, ......, [constraintpk_name]primarykey(column_name1,column_name2,···));[constraintpk_name]:可選項,為主鍵約束指定主鍵的別名在已存在的表中添加主鍵約束,其語法格式如下所示:altertabletable_nameadd[constraintpk_name]primarykey(column_name1,column_name2,···);刪除主鍵約束,其語法格式如下所示:altertabletable_namedropprimarykey;>>唯一性約束概述唯一約束(UNIQUE,縮寫UK)比較簡單,它規(guī)定了一張表中指定的某個字段的值不能重復,即這一字段的每個值都是唯一的。如果想要某個字段的值不重復,那么就可以為該字段添加為唯一約束。創(chuàng)建表時添加列級唯一約束,語法格式如下所示:createtable表(

字段名date_typeunique, ......);使用表級約束添加唯一約束,語法格式如下:createtabletable_name( column_name1date_type, column_name2date_type, ......, [constraintuk_name]unique(column_name1,column_name2,···));在已存在的表中添加唯一約束,語法格式如下:altertabletable_nameadd[constraintuk_name]unique(column_name1,column_name2,···);刪除唯一約束altertablestudent7dropindexstu_id;>>非空約束概述非空約束(NOTNULL,縮寫NK)規(guī)定了一張表中指定的某個字段的值不能為空(NULL)。設置了非空約束的字段,在插入的數(shù)據(jù)為NULL時,數(shù)據(jù)庫會提示錯誤,導致數(shù)據(jù)無法插入。創(chuàng)建表時添加非空約束,其語法格式如下所示:createtabletable_name( column_namedate_typenotnull, ......);在已存在的表中添加非空約束,其語法格式如下所示:altertabletable_namemodifycolumn_namedate_typenotnull;示例:altertablestudent8modifystu_sexvarchar(1)notnull;刪除非空約束,其語法格式如下所示:altertabletable_namemodifycolumn_namedate_type[null];>>默認值約束概述默認值約束(DEFAULT)用來規(guī)定字段的默認值。如果某個被設置為DEFAULT約束的字段沒有插入具體的值,那么該字段的值將會被默認值填充。創(chuàng)建表時添加默認值約束,其語法格式如下所示:createtabletable_name( column_namedate_typedefaultvalue, ......);在已存在的表中添加默認值約束altertabletable_namemodifycolumn_namedate_typedefaultvalue;示例:altertablestudent9modifystu_namevarchar(3)default'學生';刪除默認值約束,語法格式如下所示:altertabletable_namemodifycolumn_namedate_type;示例:altertablestudent9modifystu_namevarchar(3);>>字段值自動增加約束概述自增約束(AUTO_INCREMENT)可以使表中某個字段的值自動增加。一張表中只能有一個自增長字段,并且該字段必須定義了約束(該約束可以是主鍵約束、唯一約束以及外鍵約束),如果自增字段沒有定義約束,數(shù)據(jù)庫則會提示“Incorrecttabledefinition;therecanbeonlyoneautocolumnanditmustbedefinedasakey”錯誤。由于自增約束會自動生成唯一的ID,所以自增約束通常會配合主鍵使用,并且只適用于整數(shù)類型。一般情況下,設置為自增約束字段的值會從1開始,每增加一條記錄,該字段的值加1。下面我們講解自增約束的增加和刪除操作。創(chuàng)建表時添加自增約束,其語法格式如下所示:createtabletable_name( column_namedate_typeauto_increment, ......);在已存在的表中添加自增約束,語法格式如下所示altertabletable_namemodifycolumn_namedate_typeauto_increment;刪除自增約束,其語法格式如下所示:altertabletable_namemodifycolumn_namedate_type;>>外鍵約束概述外鍵約束(FOREIGNKEY,縮寫FK)是用來實現(xiàn)數(shù)據(jù)庫表的參照完整性的。外鍵約束可以使兩張表緊密的結(jié)合起來,特別是針對修改或者刪除的級聯(lián)操作時,會保證數(shù)據(jù)的完整性。

外鍵是指表中某個字段的值依賴于另一張表中某個字段的值,而被依賴的字段必須具有主鍵約束或者唯一約束。被依賴的表我們通常稱之為父表或者主表,設置外鍵約束的表稱為子表或者從表。舉個例子:如果想要表示學生和班級的關系,首先要有學生表和班級表兩張表,然后學生表中有個字段為stu_clazz(該字段表示學生所在的班級),而該字段的取值范圍由班級表中的主鍵cla_no字段(該字段表示班級編號)的取值決定。那么班級表為主表,學生表為從表,且stu_clazz字段是學生表的外鍵。通過stu_clazz字段就建立了學生表和班級表的關系。創(chuàng)建表時添加自增約束,其語法格式如下所示:createtablechild_table_name(column_name1date_type,column_name2date_type,······[constraintfk_name]foreignkey(child_column_name)r

溫馨提示

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

評論

0/150

提交評論