SQL教學(xué)課程-建庫建表約束等 PPT課件_第1頁
SQL教學(xué)課程-建庫建表約束等 PPT課件_第2頁
SQL教學(xué)課程-建庫建表約束等 PPT課件_第3頁
SQL教學(xué)課程-建庫建表約束等 PPT課件_第4頁
SQL教學(xué)課程-建庫建表約束等 PPT課件_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、2,回顧,在需求分析階段,設(shè)計數(shù)據(jù)庫的一般步驟為? 實體的映射關(guān)系有哪些? 請簡要說明三大范式的含義?,3,目標(biāo),掌握建庫的SQL語句 掌握建表的SQL語句 掌握加約束的SQL語句 掌握創(chuàng)建安全帳戶的SQL語句,4,回顧數(shù)據(jù)庫的基礎(chǔ)知識,數(shù)據(jù)庫文件的組成: 主數(shù)據(jù)文件:*.mdf 次要數(shù)據(jù)文件:*.ndf 日志文件:*.ldf 數(shù)據(jù)庫的其他屬性: 文件存放位置,分配的初始空間,屬于哪個文件組 文件增長:可以按百分比或?qū)嶋H大小指定增長速度 文件容量設(shè)置:可以指定文件增長的最大值或不受限,5,創(chuàng)建數(shù)據(jù)庫,CREATE DATABASE 數(shù)據(jù)庫名 ON PRIMARY ( ,n ) LOG ON (

2、 ,n ),T-SQL創(chuàng)建數(shù)據(jù)庫的語法:,主文件組,可選參數(shù),默認(rèn),6,創(chuàng)建數(shù)據(jù)庫示例 1,CREATE DATABASE stuDB ON PRIMARY -默認(rèn)就屬于PRIMARY主文件組,可省略 ( NAME=stuDB_data, -主數(shù)據(jù)文件的邏輯名 FILENAME=D:projectstuDB_data.mdf, -主數(shù)據(jù)文件的物理名 SIZE=5mb, -主數(shù)據(jù)文件初始大小 MAXSIZE=100mb, -主數(shù)據(jù)文件增長的最大值 FILEGROWTH=15% -主數(shù)據(jù)文件的增長率 ) LOG ON ( NAME=stuDB_log, FILENAME=D:projectstuD

3、B_log.ldf, SIZE=2mb, FILEGROWTH=1MB ) GO,數(shù)據(jù)文件的具體描述,日志文件的具體描述,演示創(chuàng)建數(shù)據(jù)庫1:一個數(shù)據(jù)文件和一個日志文件,7,創(chuàng)建數(shù)據(jù)庫示例 2,CREATE DATABASE employees ON ( /*-主數(shù)據(jù)文件的具體描述-*/ NAME = employee1, FILENAME = D:projectemployee1_Data.mdf , SIZE = 10, FILEGROWTH = 10% ), ( /*-次要數(shù)據(jù)文件的具體描述-*/ NAME = employee2, FILENAME = D:projectemployee

4、2_Data.ndf , SIZE = 20, MAXSIZE = 100, FILEGROWTH = 1 ),LOG ON ( /*-日志文件1的具體描述-*/ NAME = employeelog1, FILENAME = D:projectemployeelog1_Log.ldf , SIZE = 10, FILEGROWTH = 1 ), ( /*-日志文件2的具體描述-*/ NAME = employeelog2, FILENAME = D:projectemployeelog2_Log.ldf , SIZE = 10, MAXSIZE = 50, FILEGROWTH = 1 )

5、GO,演示創(chuàng)建數(shù)據(jù)庫2:多個數(shù)據(jù)文件和多個日志文件,8,刪除數(shù)據(jù)庫,如果SQL Server中已存在數(shù)據(jù)庫stuDB,運(yùn)行下列語句,會出現(xiàn)什么問題?,CREATE DATABASE stuDB ON ( . ) LOG ON ( . ) GO,演示:再次運(yùn)行示例1,9,USE master -設(shè)置當(dāng)前數(shù)據(jù)庫為master,以便訪問sysdatabases表 GO IF EXISTS(SELECT * FROM sysdatabases WHERE name =stuDB) DROP DATABASE stuDB CREATE DATABASE stuDB ON ( . ) LOG ON ( )

6、 GO,刪除數(shù)據(jù)庫,刪除數(shù)據(jù)庫的語法:,DROP DATABASE 數(shù)據(jù)庫名,EXISTS()語句: 檢測是否存在stuDB數(shù)據(jù)庫 如果存在stuDB數(shù)據(jù)庫,則刪除,10,回顧表的基礎(chǔ)知識,建表的基本步驟: 確定表中有哪些列 確定每列的數(shù)據(jù)類型 給表添加各種約束 創(chuàng)建各表之間的關(guān)系 SQL Server中的數(shù)據(jù)類型,整型數(shù)據(jù):int smallint 浮點(diǎn)數(shù)據(jù):float numeric ,字符數(shù)據(jù) 固定長度:char(6) 可變長度: varchar(10) unicode編碼:nchar(10) ,布爾數(shù)據(jù)(真/假) bit: 1/ 0,貨幣數(shù)據(jù) money,日期數(shù)據(jù) datetime,1

7、1,創(chuàng)建表,建表的語法,CREATE TABLE 表名 ( 字段1 數(shù)據(jù)類型 列的特征, 字段2 數(shù)據(jù)類型 列的特征, . ),列的特征: 包括該列是是否為空(NULL)、是否是標(biāo)識列(自動編號)、是否有默認(rèn)值、是否為主鍵等。,12,建表示例 1,USE stuDB -將當(dāng)前數(shù)據(jù)庫設(shè)置為stuDB GO CREATE TABLE stuInfo /*-創(chuàng)建學(xué)員信息表-*/ ( stuName VARCHAR(20) NOT NULL , -姓名,非空(必填) stuNo CHAR(6) NOT NULL, -學(xué)號,非空(必填) stuAge INT NOT NULL, -年齡,INT類型默認(rèn)為

8、4個字節(jié) stuID NUMERIC(18,0), -身份證號 stuSeat SMALLINT IDENTITY (1,1), -座位號,自動編號 stuAddress TEXT -住址,允許為空,即可選輸入 ) GO,NUMERIC (18,0) 代表18位數(shù)字,小數(shù)位數(shù)為0,演示:創(chuàng)建學(xué)員信息表stuInfo,IDENTITY(起始值,遞增量),13,建表示例 2,CREATE TABLE stuMarks ( ExamNo CHAR(7) NOT NULL, -考號 stuNo CHAR(6) NOT NULL, -學(xué)號 writtenExam INT NOT NULL, -筆試成績

9、LabExam INT NOT NULL -機(jī)試成績 ) GO,演示:創(chuàng)建學(xué)員成績表 stuMarks,14,刪除表,如果當(dāng)前數(shù)據(jù)庫中已存在stuInfo表,再次創(chuàng)建時系統(tǒng)將提示出錯 。如何解決呢?,15,刪除表,刪除表的語法:,DROP TABLE 表名,USE stuDB -將當(dāng)前數(shù)據(jù)庫設(shè)置為stuDB ,以便在stuDB數(shù)據(jù)庫中建表 GO IF EXISTS(SELECT * FROM sysobjects WHERE name=stuInfo ) DROP TABLE stuInfo CREATE TABLE stuInfo /*-創(chuàng)建學(xué)員信息表-*/ ( . ) GO,16,回顧SQ

10、L Server的約束,約束的目的:確保表中數(shù)據(jù)的完整型 常用的約束類型: 主鍵約束(Primary Key Constraint):要求主鍵列數(shù)據(jù)唯一,并且不允許為空 唯一約束(Unique Constraint):要求該列唯一,允許為空,但只能出現(xiàn)一個空值。 檢查約束(Check Constraint):某列取值范圍限制、格式限制等,如有關(guān)年齡的約束 默認(rèn)約束(Default Constraint):某列的默認(rèn)值,如我們的男性學(xué)員較多,性別默認(rèn)為“男” 外鍵約束(Foreign Key Constraint):用于兩表間建立關(guān)系,需要指定引用主表的那列,17,添加約束,添加約束的語法:,A

11、LTER TABLE 表名 ADD CONSTRAINT 約束名 約束類型 具體的約束說明,約束名的取名規(guī)則推薦采用:約束類型_約束字段 主鍵(Primary Key)約束:如 PK_stuNo 唯一(Unique Key)約束:如 UQ_stuID 默認(rèn)(Default Key)約束:如 DF_stuAddress 檢查(Check Key)約束:如 CK_stuAge 外鍵(Foreign Key)約束:如 FK_stuNo,18,添加約束示例,ALTER TABLE stuInfo ADD CONSTRAINT PK_stuNo PRIMARY KEY (stuNo) ALTER TAB

12、LE stuInfo ADD CONSTRAINT UQ_stuID UNIQUE (stuID) ALTER TABLE stuInfo ADD CONSTRAINT DF_stuAddress DEFAULT (地址不詳) FOR stuAddress ALTER TABLE stuInfo ADD CONSTRAINT CK_stuAge CHECK(stuAge BETWEEN 15 AND 40) ALTER TABLE stuMarks ADD CONSTRAINT FK_stuNo FOREIGN KEY(stuNo) REFERENCES stuInfo(stuNo) GO,演

13、示:給學(xué)員信息表stuInfo添加約束,添加主鍵約束(stuNo作為主鍵),添加唯一約束(因為每人的身份證號全國唯一),添加默認(rèn)約束(如果地址不填,默認(rèn)為“地址不詳”),添加檢查check約束,要求年齡只能在1540歲之間,添加外鍵約束(主表stuInfo和從表stuMarks建立關(guān)系,關(guān)聯(lián)字段為stuNo),19,刪除約束,如果錯誤地添加了約束,我們還可以刪除約束 刪除約束的語法,ALTER TABLE 表名 DROP CONSTRAINT 約束名,例如:刪除stuInfo表中地址默認(rèn)約束 ALTER TABLE stuInfo DROP CONSTRAINT DF_stuAddress,2

14、0,回顧SQL Server的安全模型,21,登錄方式回顧,登錄驗證有兩種方式: SQL身份驗證:適合于非windows平臺的用戶或Internet用戶, 需要提供帳戶和密碼 Windows身份驗證:適合于windows平臺用戶,不需要提供密碼,和windows集成驗證 登錄帳戶相應(yīng)有兩種:SQL 帳戶和Windows帳戶,22,創(chuàng)建登錄,添加 SQL登錄帳戶 EXEC sp_addlogin zhangsan, 1234,演示創(chuàng)建登錄,EXEC表示調(diào)用存儲過程, 存儲過程類似C語言的函數(shù),內(nèi)置的系統(tǒng)管理員 帳戶sa 密碼默認(rèn)為空,建議修改密碼,域名用戶名,用戶名,密碼,23,創(chuàng)建登錄,24,

15、創(chuàng)建數(shù)據(jù)庫用戶,創(chuàng)建數(shù)據(jù)庫用戶需要調(diào)用系統(tǒng)存儲過程sp_grantdbaccess,其用法為:,EXEC sp_grantdbaccess 登錄帳戶名,數(shù)據(jù)庫用戶名 其中,“數(shù)據(jù)庫用戶“為可選參數(shù),默認(rèn)為登錄帳戶, 即數(shù)據(jù)庫用戶默認(rèn)和登錄帳戶同名。,USE stuDB GO EXEC sp_grantdbaccess jbtrainingS26301, S26301DBUser EXEC sp_grantdbaccess zhangsan, zhangsanDBUser,在stuDB數(shù)據(jù)庫中添加兩個用戶,25,創(chuàng)建數(shù)據(jù)庫用戶,26,向數(shù)據(jù)庫用戶授權(quán),delete FROM Employees,

16、SELECT * FROM Employees,27,權(quán)限的操作 2-1,授權(quán)的語法為: GRANT 權(quán)限 ON 表名 TO 數(shù)據(jù)庫用戶,USE stuDB GO /*-為zhangsanDBUser分配對表stuInfo的select, insert, update權(quán)限-*/ GRANT select, insert, update ON stuInfo TO zhangsanDBUser /*-為S26301DBUser分配建表的權(quán)限-*/ GRANT create table TO S26301DBUser,28,權(quán)限的操作2-2,刪除權(quán)限的語法為: Revoke 權(quán)限 ON 表名 Fr

17、om 數(shù)據(jù)庫用戶,USE stuDB GO /*-刪除zhangsanDBUser對表stuInfo的select, insert, update權(quán)限-*/ Revoke select, insert, update ON stuInfo From zhangsanDBUser /*- 刪除 S26301DBUser建表的權(quán)限-*/ Revoke create table From S26301DBUser,29,權(quán)限的操作2-3,禁用權(quán)限的語法為: Deny 權(quán)限 ON 表名 TO 數(shù)據(jù)庫用戶,USE stuDB GO /*-禁用zhangsanDBUser對表stuInfo的select, insert, update權(quán)限-*/ Deny select, insert, update ON stuInfo TO zhangsanDBUser /*-禁用S263

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論