數(shù)據(jù)庫 數(shù)據(jù)的定義語言_第1頁
數(shù)據(jù)庫 數(shù)據(jù)的定義語言_第2頁
數(shù)據(jù)庫 數(shù)據(jù)的定義語言_第3頁
數(shù)據(jù)庫 數(shù)據(jù)的定義語言_第4頁
數(shù)據(jù)庫 數(shù)據(jù)的定義語言_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)庫數(shù)據(jù)的定義語言第1頁,課件共43頁,創(chuàng)作于2023年2月關系數(shù)據(jù)的定義SQL語言數(shù)據(jù)的定義第2頁,課件共43頁,創(chuàng)作于2023年2月SQL概述SQL(StructuredQueryLanguage)結構化查詢語言,是關系數(shù)據(jù)庫的標準語言SQL是一個通用的、功能極強的關系數(shù)據(jù)庫語言第3頁,課件共43頁,創(chuàng)作于2023年2月SQL語言功能概述四部分:數(shù)據(jù)定義功能、數(shù)據(jù)控制功能、數(shù)據(jù)查詢功能和數(shù)據(jù)操縱功能。

第4頁,課件共43頁,創(chuàng)作于2023年2月二、數(shù)據(jù)類型SQL中域的概念用數(shù)據(jù)類型來實現(xiàn)定義表的屬性時需要指明其數(shù)據(jù)類型及長度選用哪種數(shù)據(jù)類型取值范圍要做哪些運算第5頁,課件共43頁,創(chuàng)作于2023年2月二、數(shù)據(jù)類型數(shù)據(jù)類型含義CHAR(n)長度為n的定長字符串VARCHAR(n)最大長度為n的變長字符串INT長整數(shù)(也可以寫作INTEGER)SMALLINT短整數(shù)NUMERIC(p,d)定點數(shù),由p位數(shù)字(不包括符號、小數(shù)點)組成,小數(shù)后面有d位數(shù)字REAL取決于機器精度的浮點數(shù)DoublePrecision取決于機器精度的雙精度浮點數(shù)FLOAT(n)浮點數(shù),精度至少為n位數(shù)字DATE日期,包含年、月、日,格式為YYYY-MM-DDTIME時間,包含一日的時、分、秒,格式為HH:MM:SS第6頁,課件共43頁,創(chuàng)作于2023年2月數(shù)據(jù)定義SQL的數(shù)據(jù)定義功能:模式定義、表定義、視圖和索引的定義

第7頁,課件共43頁,創(chuàng)作于2023年2月數(shù)據(jù)庫的定義數(shù)據(jù)庫定義的語法格式:CREATEDATABASE<數(shù)據(jù)庫名>例:創(chuàng)建一個學生選課數(shù)據(jù)庫,取名為StudentInfo關鍵字CREATEDATABASEStudentInfo

第8頁,課件共43頁,創(chuàng)作于2023年2月數(shù)據(jù)庫的刪除數(shù)據(jù)庫刪除的語法格式:DROPDATABASE<數(shù)據(jù)庫名>例:將數(shù)據(jù)庫StudentInfo刪除關鍵字DROPDATABASEStudentInfo

第9頁,課件共43頁,創(chuàng)作于2023年2月定義基本表使用SQL語言中的CREATETABLE語句實現(xiàn),其一般格式為:CREATETABLE<表名>(

<列名><數(shù)據(jù)類型>[列級完整性約束定義]{,<列名><數(shù)據(jù)類型>[列級完整性約束定義]…}[,表級完整性約束定義])

第10頁,課件共43頁,創(chuàng)作于2023年2月學生學號姓名性別系別年齡課程選課課程號課程名學分成績關系模式第11頁,課件共43頁,創(chuàng)作于2023年2月關系模式學生(學號,姓名,性別,年齡,所在系)課程(課程號,課程名,學分)選課(學號,課程號,成績)第12頁,課件共43頁,創(chuàng)作于2023年2月關系列名說明數(shù)據(jù)類型約束說明Sno學號字符串,長度為10主鍵Sname姓名字符串,長度為8非空值Ssex性別字符串,長度為1非空值Sage年齡整數(shù)允許空值Sdept所在系字符串,長度為15非空值列名說明數(shù)據(jù)類型約束說明Cno課程號字符串,長度為6主鍵Cname課程名字符串,長度為20非空值Credits學分整數(shù)允許為空值列名說明數(shù)據(jù)類型約束說明Sno學號字符串,長度為10主鍵Cno課程號字符串,長度為6主鍵Grade成績整數(shù)允許為空值Courses表students表

SC表第13頁,課件共43頁,創(chuàng)作于2023年2月學生表Student[例5]建立“學生”表Student,學號是主碼。

CREATETABLEStudent (SnoCHAR(10)PRIMARYKEY,/*列級完整性約束條件*/SnameCHAR(8),

SsexCHAR(2),

SageSMALLINT,

SdeptCHAR(15));

主碼第14頁,課件共43頁,創(chuàng)作于2023年2月課程表Course

[例6]建立一個“課程”表CourseCREATETABLECourse(CnoCHAR(6)PRIMARYKEY,

CnameCHAR(20),

CcreditSMALLINT,

);第15頁,課件共43頁,創(chuàng)作于2023年2月學生選課表SC[例7]建立一個“學生選課”表SC CREATETABLESC (SnoCHAR(10),

CnoCHAR(6),

GradeSMALLINT,

PRIMARYKEY(Sno,Cno),

);如果完整性約束條件涉及到該表的多個屬性列,則必須定義在表級上,否則既可以定義在列級也可以定義在表級。

第16頁,課件共43頁,創(chuàng)作于2023年2月在列級完整性約束定義處可以定義的約束NOTNULL:限制列取值非空。 PRIMARYKEY:指定本列為主碼。FOREIGNKEY:定義本列為引用其他表的外碼。使用形式為:[FOREIGNKEY(<外碼列名>)]REFERENCES<外表名>(<外表列名>

UNIQUE:限制列取值不重復。CHECK:限制列的取值范圍。DEFAULT:給定列的默認值。第17頁,課件共43頁,創(chuàng)作于2023年2月約束定義

①列取值非空約束

<列名><類型>NOTNULL

例:snamechar(10)NOTNULL第18頁,課件共43頁,創(chuàng)作于2023年2月約束定義(續(xù))②表主碼約束在定義列時定義主碼(僅用于單列主碼)列定義PRIMARYKEY例:SNOchar(7)PRIMARYKEY在定義完列時定義主碼(用于單列或多列主碼,表級約束)PRIMARYKEY

(<列名序列>)

例:PRIMARYKEY(SNO)PRIMARYKEY(SNO,CNO)第19頁,課件共43頁,創(chuàng)作于2023年2月約束定義(續(xù))③外碼引用約束指明本表外碼列引用的表及表中的主碼列。

[FOREIGNKEY(<本表列名>)]REFERENCES<外表名>(<外表主碼列名>)例:

FOREIGNKEY(sno)

REFERENCES學生表(sno)

第20頁,課件共43頁,創(chuàng)作于2023年2月約束定義(續(xù))④默認值約束格式:DEFAULT默認值例:定義系的默認值為“計算機系”。DEFAULT‘計算機系’第21頁,課件共43頁,創(chuàng)作于2023年2月約束定義(續(xù))⑤CHECK約束格式:CHECK(約束表達式)例:定義成績大于等于0。

CHECK(grade>=0)第22頁,課件共43頁,創(chuàng)作于2023年2月約束定義(續(xù))⑥UNIQUE約束在列級約束定義(僅用于單列約束)列定義UNIQUE例:SNAMEchar(7)UNIQUE在表級約束定義(用于單列或多列組合約束)UNIQUE

(<列名序列>)

例:UNIQUE(SNO,CNO)第23頁,課件共43頁,創(chuàng)作于2023年2月關系列名說明數(shù)據(jù)類型約束說明Sno學號字符串,長度為10主鍵Sname姓名字符串,長度為8取值唯一Ssex性別字符串,長度為1取“男”或“女”

Sage年齡整數(shù)取值范圍為(15,45)Sdept所在系字符串,長度為15默認值“計算機系”

列名說明數(shù)據(jù)類型約束說明Cno課程號字符串,長度為6主鍵Cname課程名字符串,長度為20非空值Credits學分整數(shù)取值范圍為(0,20)

列名說明數(shù)據(jù)類型約束說明Sno學號字符串,長度為10外鍵,參照students的主鍵

Cno課程號字符串,長度為6外鍵,參照courses的主鍵

Grade成績整數(shù)允許為空值Courses表students表

SC表主鍵為(Sno,Cno)

第24頁,課件共43頁,創(chuàng)作于2023年2月創(chuàng)建學生表CREATETABLEStudent(Snochar(7)PRIMARYKEY,Snamechar(10)NOTNULL,Ssexchar(2)CHECK(Ssex='男'ORSsex='女'),SagetinyintCHECK(Sage>=15ANDSage<=45),Sdeptchar(20)DEFAULT‘計算機系')第25頁,課件共43頁,創(chuàng)作于2023年2月創(chuàng)建課程表CREATETABLECourse(Cnochar(10)NOTNULL,Cnamechar(20)NOTNULL,CcreditintCHECK(Ccredit>0),SemesterintCHECK(Semester>0),PeriodintCHECK(Period>0),PRIMARYKEY(Cno))

第26頁,課件共43頁,創(chuàng)作于2023年2月練習P745第27頁,課件共43頁,創(chuàng)作于2023年2月刪除表當確信不再需要某個表時,可以將其刪除刪除表時會將與表有關的所有對象一起刪掉,包括表中的數(shù)據(jù)。刪除表的語句格式為:

DROPTABLE<表名>例:刪除test表的語句為:DROPTABLEtest第28頁,課件共43頁,創(chuàng)作于2023年2月數(shù)據(jù)的定義基本表的定義與刪除修改表結構第29頁,課件共43頁,創(chuàng)作于2023年2月修改表結構在定義完表之后,如果需求有變化,比如添加列、刪除列或修改列定義,可以使用ALTERTABLE語句實現(xiàn)。ALTERTABLE語句可以對表添加列、刪除列、修改列的定義、定義主碼、外碼,也可以添加和刪除約束。第30頁,課件共43頁,創(chuàng)作于2023年2月修改表結構語法ALTERTABLE<表名>

[ALTERCOLUMN<列名><新數(shù)據(jù)類型>]|[ADD<列名><數(shù)據(jù)類型>|[DROPCOLUMN<列名>]|[ADDPRIMARYKEY(列名[,…n])]|[ADDFOREIGNKEY(列名)REFERNECES表名(列名)]、|[ADDDEFAULT[默認值]FOR(列名)]|[ADDCHECK(約束表達式)]第31頁,課件共43頁,創(chuàng)作于2023年2月示例例.為SC表添加“修課類別”列,此列的定義為:XKLBchar(4)只能為空,或默認,不能為NOTNULLALTERTABLESCADDXKLBchar(4)NULL

第32頁,課件共43頁,創(chuàng)作于2023年2月示例例3.將新添加的XKLB的類型改為

char(6)。ALTERTABLESCALTERCOLUMNXKLBchar(6)第33頁,課件共43頁,創(chuàng)作于2023年2月示例例4.刪除Course表的XKLB列。ALTERTABLECourseDROPCOLUMNXKLB

第34頁,課件共43頁,創(chuàng)作于2023年2月例題將SC表中的Cno設置為course表中Cno列的外碼第35頁,課件共43頁,創(chuàng)作于2023年2月練習按下面要求用SQL語句修改表結構在Students表中插入學生宿舍號一列,定義為:Roomchar(6)為Students表中Sage列添加檢查約束,要求Sage的取值范圍為(15,45)將Courses表中的Cname的字符串長度改為16將Courses表中的Cname的取只設置為唯一取值刪除Students表中學生宿舍號列為SC表中Grade列添加檢查約束,要求Grade的取值范圍為[0,100]第36頁,課件共43頁,創(chuàng)作于2023年2月數(shù)據(jù)完整性約束

溫馨提示

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

評論

0/150

提交評論