SQL知識點全集(帶源碼存儲過程)

上傳人:文*** 文檔編號:61674114 上傳時間:2022-03-12 格式:DOCX 頁數(shù):22 大?。?2.60KB
收藏 版權(quán)申訴 舉報 下載
SQL知識點全集(帶源碼存儲過程)_第1頁
第1頁 / 共22頁
SQL知識點全集(帶源碼存儲過程)_第2頁
第2頁 / 共22頁
SQL知識點全集(帶源碼存儲過程)_第3頁
第3頁 / 共22頁

下載文檔到電腦,查找使用更方便

0 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《SQL知識點全集(帶源碼存儲過程)》由會員分享,可在線閱讀,更多相關(guān)《SQL知識點全集(帶源碼存儲過程)(22頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、文檔供參考,可復(fù)制、編制,期待您的好評與關(guān)注! --1.SQL由什么文件和什么文件組成? /* 答:SQL由數(shù)據(jù)文件和日志文件組成 */ --2.SQL的數(shù)據(jù)文件分哪兩類?擴展名分別是什么?分別可以有多少個? /* 答:SQL的數(shù)據(jù)文件分主數(shù)據(jù)文件和二級數(shù)據(jù)文件。 主數(shù)據(jù)文件有且只有一個,二級數(shù)據(jù)文件-N個 擴展名:主數(shù)據(jù)文件:MDF 二級數(shù)據(jù)文件:NDF */ --3.SQL文件組和文件的關(guān)系? /* 答:文件存放在文件組中,一個文件只能屬于一個文件組; 一個文件組可以有多個文件。 */ --4

2、.用代碼創(chuàng)建多個數(shù)據(jù)文件的數(shù)據(jù)庫? /* 答: CREATE DATABASE DatabaseName primary ON ( name=邏輯名, filename=物理名, --擴展名是mdf size=初始大小, maxsize=最大值, filegrowth=增長 ), --多個文件組之間用逗號分隔 filegroup 文件組名 ( name=邏輯名, filename=物理名, --擴展名是ndf size=初始大小, maxsize=最大值, filegrowth=增長 ) log

3、ON ( name=邏輯名, filename=物理名, --擴展名是ldf size=初始大小, maxsize=最大值, filegrowth=增長 ) */ --5.用代碼創(chuàng)建表? CREATE TABLE TABLE_NAME --創(chuàng)建表的表名 ( [ID] int IDENTITY(1,1) PRIMARY KEY, --設(shè)置ID為自增長的主鍵 [NAME] varchar(20) NOT NULL , --設(shè)置名字不為空 [AGE] tinyint CHECK([AGE]<120)

4、 --設(shè)置年齡小于 ) --6.用代碼實現(xiàn)修改數(shù)據(jù)庫,添加文件組? ALTER DATABASE DATABASENAME --要修改的數(shù)據(jù)庫名 ADD FILEGROUP FILEGROUPNAME --要添加的文件組名 --7.用代碼實現(xiàn)修改文件,文件組? /* 答: --修改文件示例 ALTER DATABASE DATABASENAME modify file ( [name]='原邏輯名', [NEWNAME] = '新邏輯名', [FILENAME] = '

5、新文件名', [SIZE] = '文件大小', [MAXSIZE] = '文件的最大值', [FILEGROWTH] = '文件增長值或增長百分比' ) */ --修改文件組 ALTER DATABASE Demo_20091230NEW MODIFY FILEGROUP filegroup2 name = Newfilegroup_name -- 8.用代碼修改表實現(xiàn)添加列、修改列、刪除列? -- 添加列示例代碼 ALTER TABLE Student ADD [S_Number] Varchar(20

6、) -- 刪除列例代碼 ALTER TABLE Student DROP COLUMN [S_Number] -- 修改列例代碼 ALTER TABLE Student ALTER COLUMN [S_Name] varchar(8) --修改列名通過系統(tǒng)存儲過程 SP_RENAME 'Student.S_Name' ,'S_NAME_NEW' -- 9.用代碼實現(xiàn)查看表、數(shù)據(jù)庫的信息? /* 答:查看表:sp_help 表名 查看數(shù)據(jù)庫:sp_helpDB 數(shù)據(jù)庫名 */ --示例代碼: --查看表: sp

7、_help class --查看表: sp_helpdb Demo_20091230NEW -- 10.重命名數(shù)據(jù)庫和表的SQL語句? --重命名表的SQL語句(調(diào)用存儲過程) SP_RENAME class,classNew --不添加引號 SP_RENAME 'class','classNew' --添加引號 --重命名表的SQL語句(ALTER DATABASE) ALTER DATABASE Demo_20091230NEW Modify name = Demo_20091230 --重命名數(shù)據(jù)庫的SQL語句 SP_RENAMEDB Demo_

8、20091230NEW,Demo_20091230 --不添加引號 SP_RENAMEDB 'Demo_20091230','Demo_20091230NEW' --添加引號 -- 11.什么是數(shù)據(jù)庫的完整性? /*答:確保數(shù)據(jù)庫的一致性和精確性, 可以用約束和觸發(fā)器來實現(xiàn)。 */ -- 12.數(shù)據(jù)庫完整性的分類? /*答:實體完整性:規(guī)定表的每一行在表中是唯一的實體。(主鍵) 域完整性:是指表中列滿足特定的數(shù)據(jù)類型和約束。 引用完整性:兩個表的主鍵和外鍵的關(guān)鍵字一致。 自定義完整性:用戶自己定義的數(shù)據(jù)類型的約束。

9、 */ -- 13.約束分為哪兩個級別,它和完整性的關(guān)系? /* 答:約束分表級別和列級別,可以相互轉(zhuǎn)換,只是寫法不同。 創(chuàng)建聯(lián)合主鍵的時候一定要用表級約束 PRIMARY KEY約束(實現(xiàn)實體完整性) UNIQUE KEY約束(實現(xiàn)域完整性) NOT NULL約束(實現(xiàn)域完整性) CHECK約束(實現(xiàn)域完整性) FOREIGN KEY約束(實現(xiàn)引用完整性) 自定義數(shù)據(jù)類型(實現(xiàn)自定義完整性) 其中PRIMARY KEY、UNIQUE KEY、FOREIGN KEY 可以新建表級別和列級別約束。 */ --

10、 14.用代碼創(chuàng)建NOT NULL 約束? /* 答:直接在創(chuàng)建表的時候添加。 */ --代碼示例: CREATE TABLE Student ( [ID] int NOT NULL ) -- 15.用代碼創(chuàng)建primary key 約束(兩種方式)? /* 答:primary key 約束可以用列級和表級兩種方式創(chuàng)建。 創(chuàng)建聯(lián)合主鍵的時候,必須用表級的方式創(chuàng)建。 */ --示例代碼(列級) CREATE TABLE Student ( [ID] int PRIMARY KEY, [NAME] varchar(20)

11、 ) --示例代碼(表級) CREATE TABLE Student ( [ID] int , [NAME] varchar(20) CONSTRAINT PK_STUDENT PRIMARY KEY ([ID],[NAME]) ) -- 16.用代碼創(chuàng)建foreign key 約束(兩種方式)? /* 答:foreign key 約束可以用列級和表級兩種方式創(chuàng)建。 */ --示例代碼(列級) CREATE TABLE Student ( [ID] int PRIMARY KEY, [C_NAME] varchar(20) REFERENC

12、ES CLASS([C_NAME]) --學(xué)生表中的課程名引用課程表中的課程名 ) --示例代碼(表級) CREATE TABLE Student ( [ID] int PRIMARY KEY, [C_NAME] varchar(20), CONSTRAINT FK_C_NAME FOREIGN KEY ([C_NAME]) REFERENCES CLASS([C_NAME]) --學(xué)生表中的課程名引用課程表中的課程名 ) -- 17.用代碼創(chuàng)建unique key 約束(兩種方式)? /* 答:unique key 約束可以用列級和表級兩種方式創(chuàng)

13、建。 在創(chuàng)建約束的列上添加唯一約束。 */ --示例代碼(列級) CREATE TABLE Student ( [ID] int PRIMARY KEY, [C_NAME] varchar(20) REFERENCES CLASS([C_NAME]), --學(xué)生表中的課程名引用課程表中的課程名 [S_NUM] varchar(20) UNIQUE --學(xué)號必須唯一 ) --示例代碼(表級) CREATE TABLE Student ( [ID] int PRIMARY KEY, [C_NAME] varchar(20) REFERE

14、NCES CLASS([C_NAME]), --學(xué)生表中的課程名引用課程表中的課程名 [S_NUM] varchar(20), CONSTRAINT UN_S_NUM UNIQUE([S_NUM]) --學(xué)號必須唯一 ) -- 18.用代碼創(chuàng)建check 約束(兩種方式)? /* 答:check 約束可以用列級和表級兩種方式創(chuàng)建。 */ --示例代碼(列級) CREATE TABLE Student ( [ID] int PRIMARY KEY, [C_NAME] varchar(20) REFERENCES CLASS([C_NAME]), --

15、學(xué)生表中的課程名引用課程表中的課程名 [S_NUM] varchar(20) UNIQUE, --學(xué)號必須唯一 [S_AGE] tinyint CHECK([S_AGE]<60) --年齡必須小于歲 ) --示例代碼(表級) CREATE TABLE Student ( [ID] int PRIMARY KEY, [C_NAME] varchar(20) REFERENCES CLASS([C_NAME]), --學(xué)生表中的課程名引用課程表中的課程名 [S_NUM] varchar(20), [S_AGE] tinyint , CONSTRAINT CK_

16、S_AGE CHECK([S_AGE]<60) --學(xué)號必須唯一 ) -- 19.用代碼實現(xiàn)修改、刪除約束? /*答:修改約束:只有NOT NULL能通過修改列的方式修改約束。 刪除約束:DROP CONSTRAINT 關(guān)鍵字,后面跟約束名稱。 */ --示例代碼(通過修改列的方式修改NOT NULL約束。): ALTER TABLE class ALTER COLUMN [NAME] varchar(20) NOT NULL --刪除代碼: DROP CONSTRAINT CK_S_AGE --刪除學(xué)號唯一約束 -- 20.用代碼實現(xiàn)查看約束

17、的信息? /*答:查看約束SP_HELPCONSTRAINT 約束名稱 */ --代碼示例: SP_HELPCONSTRAINT CK_S_AGE --查看學(xué)號唯一約束 -- 21.SQL有哪些數(shù)據(jù)類型? /*答: 日期類型:DATETIME、SMALLDATETIME 整數(shù)類型:BIGINT、INT、SMALLINT、TINYINT 浮點型:DOUBLE、FLOAT、DECIMAL、REAL、NUMERIC 貨幣類型:MONEY、SMALLMONEY 字符類型:CHAR、VARCHAR、NCHAR、NVARCHAR 二進制數(shù)據(jù)類型:BINARY、VARBINAR

18、Y、IMAGE 全局唯一標(biāo)識:UNIQUEIDENTIFIER 大容量數(shù)據(jù)類型:TEXT、NTEXT、IMAGE */ -- 22.SQL語句分類(DDL、DQL、DML、DCL)? /* 答:數(shù)據(jù)定義語言:DDL(Data Definition Language)創(chuàng)建、刪除、修改數(shù)據(jù)庫對象 如:表、視圖、模式、觸發(fā)器、存儲過程等。 數(shù)據(jù)查詢語言:DQL(Data Query Language)用戶檢索數(shù)據(jù)庫的。 數(shù)據(jù)操縱語言:DML(Data Manipulation Language)用于添加、修改、刪除存儲在

19、 數(shù)據(jù)庫對象中的數(shù)據(jù)。 數(shù)據(jù)控制語言:DCL(Data Control Language)控制訪問數(shù)據(jù)庫權(quán)限的。 數(shù)據(jù)定義語言:CREATE、DROP、ALTER 數(shù)據(jù)查詢語言:SELECT 數(shù)據(jù)操縱語言:INSERT、UPDATE、DELETE 數(shù)據(jù)控制語言:GRANT(授權(quán))、DENY(拒絕)、REVOKE(移除) */ -- 23.關(guān)鍵字identity是什么意思? /* 答:關(guān)鍵字identity表示自動編號,自增長。 */ -- 24.uniqueidentif

20、ier是什么意思?如何生成? /* 答:uniqueidentifier表示全球唯一標(biāo)識。用SELECT NEWID()生成 */ --代碼示例: SELECT NEWID() AS 全球唯一標(biāo)識 -- 25.默認(rèn)值創(chuàng)建?綁定默認(rèn)值?取消綁定默認(rèn)值? /* 答:創(chuàng)建默認(rèn)值有兩種: a)創(chuàng)建表的時候附帶創(chuàng)建 b)使用CREATE DEFAULT 關(guān)鍵字 區(qū)別:后再獨立于表存在,前者必須要有表。 綁定默認(rèn)值:使用sp_bindefault 默認(rèn)值名,表名.列名。 注意:只有使用CREATE DEFAULT

21、關(guān)鍵字才需要綁定。 取消綁定默認(rèn)值:使用sp_unbindefault 默認(rèn)值名,表名.列名。 注意:只有使用CREATE DEFAULT 關(guān)鍵字才需要綁定。 */ --代碼示例:創(chuàng)建表的時候附帶創(chuàng)建 CREATE TABLE CLASS ( [ID] int PRIMARY KEY , [NAME] varchar(20) DEFAULT('徐念') ) --代碼示例:使用CREATE DEFAULT 關(guān)鍵字創(chuàng)建 CREATE DEFAULT DF_NAME AS '徐念' --代碼示例:綁定默認(rèn)值到CLASS表的

22、NAME列上 sp_bindefault DF_NAME,'CLASS.NAME' --代碼示例:取消綁定默認(rèn)值到CLASS表的NAME列上 sp_unbindefault DF_NAME,'CLASS.NAME' -- 26.規(guī)則創(chuàng)建?綁定規(guī)則?取消綁定規(guī)則? /* 答:創(chuàng)建規(guī)則用CREATE RULE 關(guān)鍵字 綁定規(guī)則用SP_BINDRULE系統(tǒng)存儲過程 取消綁定規(guī)則SP_UNBINDRULE系統(tǒng)存儲過程 */ --代碼示例:使用CREATE DEFAULT 關(guān)鍵字創(chuàng)建 CREATE RULE RU_NAME AS @NAME ='徐念'

23、 --代碼示例:綁定規(guī)則到CLASS表的NAME列上 SP_BINDRULE RU_NAME,'CLASS.NAME' --代碼示例:取消綁定規(guī)則到CLASS表的NAME列上 SP_UNBINDRULE 'CLASS.NAME' -- 27.如何創(chuàng)建自定義類型? /* 答:創(chuàng)建自定義類型:用系統(tǒng)存儲過程:SP_ADDTYPE */ --代碼示例:創(chuàng)建一個身份證的數(shù)據(jù)類型(為字符)且不允許為空 SP_ADDTYPE IdCard,'varchar(18)','NOT NULL' -- 28.Select查詢執(zhí)行順序? /* 答:.執(zhí)行FROM字句,根據(jù)FRO

24、M字句后面的一個或多個表創(chuàng)建工作表。 如果是多個表,將對表進行交叉連接。 如果只有一個表,就直接作為工作表。 2.如果有WHERE字句,根據(jù)WHERE字句搜索滿足條件的行。 3.如果有GROUP BY字句,會對第二步產(chǎn)生的結(jié)果集進行分組匯總。 4.如果有HAVING字句,會對第三步產(chǎn)生的結(jié)果集進行組篩選。 5.如果有DISTINCT、TOP關(guān)鍵字,將在第四步的基礎(chǔ)上進行過濾,去掉重復(fù)的行。 6.如果有ORDER BY字句,會在第五步的基礎(chǔ)上進行排序。 7.顯示查詢結(jié)果。 */ --29.數(shù)據(jù)庫中的表

25、關(guān)系有哪幾種?分別是什么? /* 答:分四種(一對一、一對多、多對一、多對多) 多對多:必須要分表,分解成兩個多對一 舉例:如學(xué)生和課程是多對多關(guān)系,新增一個學(xué)生選修課程表。 學(xué)生和學(xué)生選修課程表是一對多關(guān)系 課程和學(xué)生選修課程表是一對多關(guān)系 */ --30.級聯(lián)刪除、更新的關(guān)鍵字是什么?并寫出代碼? /* 答:級聯(lián)刪除關(guān)鍵字:ON DELETE CASCADE 級聯(lián)更新關(guān)鍵字:ON UPDATE CASCADE 代碼示例如下: */ --修改表添加級聯(lián)刪除、級聯(lián)更新外鍵約束 ALTER TABLE StudentCla

26、ss ADD CONSTRAINT jlDelete FOREIGN KEY (Fk_S_ID) REFERENCES Student(S_ID) ON DELETE CASCADE ON UPDATE CASCADE --31.表的連接有哪幾種?它們的含義分別是什么? /* 答:共五種。 INNER JOIN :內(nèi)連接(以兩個表中匹配的記錄為準(zhǔn)) LEFT JOIN/LEFT OUTER JOIN:(以左邊的表中有的記錄為準(zhǔn)) RIGHT JOIN/RIGHT OUTER JOIN:(以右邊的表中有的記錄為準(zhǔn)) FULL JO

27、IN/FULL OUTER JOIN:(以兩邊的表只要有一個表有的記錄即可) CROSS JOIN:(兩個表的記錄的笛卡爾積) */ --32.消除重復(fù)行的關(guān)鍵字是什么? /* 答:DISTINCT(放在SELECT關(guān)鍵字后面) */ --33.分組時既能顯示明細(xì)記錄又能顯示匯總值的關(guān)鍵字是什么? --請寫一個示例代碼? /* 答:關(guān)鍵字:COMPUTE\COMPUTE BY */ SELECT S_GROUP,S_AGE AS '平均年齡' FROM Student WHERE S_GROUP = '二組' ORDER BY S_GROUP

28、 COMPUTE AVG(S_AGE) BY S_GROUP --34.SQL中的通配符有幾種?每種的含義是什么? /* 答: '_' 表示一個任意字符; '%' 表示-N個任意字符; '[ABC]'表示A或B或C中的一個任意字符,常與'%'連用; '[^ABC]'表示不是A且B且C中的一個任意字符,常與'%'連用; */ --35.Rollup和CUBE的相同點和異同點是什么? /* 答:都是對分組(GROUP)中的匯總結(jié)果集的擴展。 CUBE的擴展要比Rollup多。 */ --只根據(jù)'組'分組 SELECT

29、S_Group,AVG(S_age) FROM Student GROUP BY S_Group SELECT S_Group,AVG(S_age) FROM Student GROUP BY S_Group WITH ROLLUP SELECT S_Group,AVG(S_age) FROM Student GROUP BY S_Group WITH CUBE --根據(jù)'組'和'姓名'分組 SELECT S_Group,S_Name,AVG(S_age) FROM Student GROUP BY S_Group,S_Name SELECT S_Group

30、,S_Name, AVG(S_age) FROM Student GROUP BY S_Group,S_Name WITH ROLLUP SELECT S_Group,S_Name,AVG(S_age) FROM Student GROUP BY S_Group,S_Name WITH CUBE --36.子查詢的種類?它們的區(qū)別是什么? /* 答:子查詢分標(biāo)準(zhǔn)子查詢(嵌套子查詢)和相關(guān)子查詢 區(qū)別:標(biāo)準(zhǔn)子查詢(嵌套子查詢)子查詢只執(zhí)行一次; 相關(guān)子查詢:子查詢執(zhí)行-N次; */ --示例: --查找年齡在歲以內(nèi)的學(xué)生的信息(用子查詢的

31、方式) --標(biāo)準(zhǔn)子查詢 SELECT * FROM student WHERE S_NAME IN (SELECT S_NAME FROM student WHERE student.S_age <23) --查找學(xué)生信息并統(tǒng)計班級每個學(xué)生與班級平均年齡的差值 --相關(guān)子查詢 SELECT *, (SELECT AVG(S_age) FROM student) AS '班級平均年齡', S_age - (SELECT AVG(S_age) FROM student) AS '差值' FROM st

32、udent --37.子查詢的意義和寫子查詢的注意事項? /* 答:子查詢的意義:簡化復(fù)雜的查詢, 將一個復(fù)雜的查詢邏輯上分解成幾個簡單的查詢。 子查詢的注意事項: 1.帶有小括號 2.可以在很多地方使用 a)使用別名時; b)使用IN或NOT IN時; c)使用UPDATE、INSERT、DELETE語句時; e)使用比較運算符時; f)使用ANY、SOME、ALL時; g)使用EXIST

33、或NOT EXIST時; h)使用表達式的地方。 */ --38.關(guān)鍵字SOME、ALL的含義?請寫出代碼示例? /* 答:SOME、ALL都是和比較運算符(>、>=、<、<=、!=、<>、=)聯(lián)用, 用于比較SOME、ALL字查詢所返回的值。 */ --示例:查找年長(年齡在平均年齡之上)的學(xué)生的信息 SELECT * FROM u_student WHERE [AGE] > ALL(SELECT AVG(ISNULL([AGE],0)) FROM u_student) --39.關(guān)鍵字IN的含義?請寫出代碼示例? /* 答:

34、關(guān)鍵字IN表示在...里 */ --示例:查找姓名等于張三或李四的學(xué)生的記錄 SELECT * FROM u_student WHERE [NAME] in ('張三','李四') --40.視圖分為哪三類?請寫出代碼示例? /* 答:單表視圖:數(shù)據(jù)只來源于一個表。 多表視圖:數(shù)據(jù)只來源于多個表。 嵌套視圖:數(shù)據(jù)只來源于視圖。 */ --示例:嵌套視圖 --創(chuàng)建學(xué)生信息視圖(單表視圖) CREATE VIEW V_StudentInfo AS SELECT * FROM u_student us --創(chuàng)建學(xué)生姓名信息視圖(嵌套視圖)

35、 CREATE VIEW V_StudentNameInfo AS SELECT [NAME] FROM V_StudentInfo --41.視圖的優(yōu)缺點是什么? /* 答:視圖優(yōu)點: 1.簡化查詢操作 2.隱蔽敏感數(shù)據(jù),提高安全性 3.定制數(shù)據(jù) 4.數(shù)據(jù)的查詢和存儲分離 視圖缺點: 1.性能較低 2.更新受限:SELECT語句中使用了HAVING、GROUP BY、TOP、DISTINCT、 計算列、聚合函數(shù)關(guān)鍵字后就不能更新 */ --42.索引的作用是什么?索

36、引分為哪兩類?它們的區(qū)別是什么?請寫出代碼示例? /* 答:索引的作用是用來優(yōu)化查詢,提高查詢速度的。 索引分為聚集索引(簇索引)或非聚集索引(非簇索引) 區(qū)別:.聚集索引的頁級頁存放的是實際的數(shù)據(jù)而 非聚集索引得頁級頁存放的是索引信息,這些索引信息存放在索引頁中。 2.非聚集索引可以建立在數(shù)據(jù)堆上也可以建立在聚集索引上。 3.唯一索引屬于非聚集索引,但比非聚集索引多了一個UNIQUE(唯一)約束。 創(chuàng)建索引的關(guān)鍵字CREATE INDEX */ --示例:在u_STUDENT表的[

37、NAME]列上創(chuàng)建聚集索引 CREATE CLUSTERED INDEX CLU_INDEX ON u_STUDENT([NAME]) --示例:在u_STUDENT表的[NAME]列上創(chuàng)建非聚集索引 CREATE NONCLUSTERED INDEX CLU_INDEX ON u_STUDENT([NAME]) --示例:在u_STUDENT表的[NAME]列上創(chuàng)建唯一聚集索引 CREATE UNIQUE INDEX CLU_INDEX ON u_STUDENT([NAME]) --43.查看表的索引的SQL語句是什么?請寫出代碼示例? /* 答:查看表的索

38、引的SQL語句是SP_HELPINDEX 表名 */ --代碼示例 SP_HELPINDEX Class --44.重新整理索引的SQL語句是什么?請寫出代碼示例? /* 答:重新整理索引的SQL語句是DBCC INDEXDEFRAG(數(shù)據(jù)庫名稱,表名,索引名) DBCC 是一個數(shù)據(jù)庫工具集 */ --代碼示例 DBCC INDEXDEFRAG(Demo_20091230NEW,Class,PK__Class__49C3F6B7) --45.SQL的盤區(qū)分為哪兩種,它們的區(qū)別是什么? /* 答:SQL的盤區(qū)分:統(tǒng)一擴展盤區(qū)和混合擴展盤區(qū)。 統(tǒng)

39、一擴展盤區(qū):只存放一種類型數(shù)據(jù)頁。 混合擴展盤區(qū):存放二種或兩種以上的數(shù)據(jù)頁。 --46.SQL的數(shù)據(jù)頁一共有幾種?分別是什么? /* 答:SQL的數(shù)據(jù)頁一共有八種。數(shù)據(jù)頁、索引頁、文本\圖像頁、可用空間頁、 全局分配映射表、輔助全局分配映射表、索引分配映射表、 大容量差異映射表\大容量差異更改映射表。 數(shù)據(jù)頁:存放真實的數(shù)據(jù)。 索引頁:存放索引數(shù)據(jù),如非聚集索引的頁級頁。 文本\圖像頁:存放大容量數(shù)據(jù)類型,如Image、te

40、xt、ntext。 可用空間頁:數(shù)據(jù)庫中數(shù)據(jù)頁的使用情況,表示沒有使用,表示使用。 */ --47.E-R(Entity-Relationship)模型的三要素是什么? /* 答:E-R(Entity-Relationship)模型的三要素是:實體、關(guān)系、屬性。 實體:真實存在的事物。(客戶為了完成自己的業(yè)務(wù)目標(biāo)需要用到的人或事物) 關(guān)系:實體間的關(guān)系:有一對一、一對多、多對一、多對多(需要分表) 屬性:實體的特征,可映射成數(shù)據(jù)庫中的列。 --48.數(shù)據(jù)庫設(shè)計的過程分為哪幾個步驟? /* 答:數(shù)據(jù)庫的設(shè)計過程大致可分為個步驟:

41、 a)需求分析:調(diào)查和分析用戶的業(yè)務(wù)活動和數(shù)據(jù)的使用情況, 弄清所用數(shù)據(jù)的種類、范圍、數(shù)量以及它們在業(yè)務(wù)活動中交流的情況, 確定用戶對數(shù)據(jù)庫系統(tǒng)的使用要求和各種約束條件; b)概念設(shè)計:用戶要描述的現(xiàn)實世界的概念數(shù)據(jù)模型; c)邏輯設(shè)計:主要工作是將現(xiàn)實世界的概念數(shù)據(jù)模型設(shè)計成數(shù)據(jù)庫; d)物理設(shè)計:確定數(shù)據(jù)庫的存儲結(jié)構(gòu)。 */ --49.關(guān)鍵字UNION /UNION ALL的含義?請寫出代碼示例? /* 答:關(guān)鍵字UNION /UNION ALL表示連接兩個表的內(nèi)容進行查詢

42、。 */ --示例代碼:連接查詢出‘語文’、‘?dāng)?shù)學(xué)’的課程信息 SELECT * FROM Class WHERE Class_Name = '語文' UNION ALL SELECT * FROM Class WHERE Class_Name = '數(shù)學(xué)' --50.關(guān)鍵字EXISTS的含義?請寫出代碼示例? /* 答:關(guān)鍵字EXISTS用來表示子查詢中是否存在滿足條件的記錄。 如果存在返回TRUE,否則返回FALSE。 */ --示例代碼:查找‘?dāng)?shù)學(xué)’課的課程信息 SELECT * FROM Class a WHERE EXISTS (SELE

43、CT * FROM Class b WHERE b.Class_Name = '數(shù)學(xué)' AND a.ID = b.ID) --示例代碼:判斷CLASS表是否在,存在則刪除 IF EXISTS(SELECT name FROM sysobjects WHERE name = 'Class' AND type = 'U') DROP TABLE Class GO --51.數(shù)據(jù)庫三范式是哪三范式? /* 答:NF:屬性不可再分。 2NF:在NF的基礎(chǔ)上消除部分

44、依賴(適用于聯(lián)合主鍵)。 3NF:在NF的基礎(chǔ)上消除傳遞依賴。 */ --52.用PowerDesigner生成數(shù)據(jù)庫的步驟? /* 答:.創(chuàng)建概念數(shù)據(jù)模型: 定義:只有關(guān)系,沒有外鍵的模型,是在數(shù)據(jù)庫設(shè)計的前期創(chuàng)建的。 PowerDesigner操作步驟:File-》New -》Conceptual Data Model 2.檢查概念數(shù)據(jù)模型:Check Model PowerDesigner操作步驟:Tools-》Check Model 3.生成物理數(shù)據(jù)模型:由概念數(shù)據(jù)模型轉(zhuǎn)換而來,是真實的數(shù)據(jù)模型。 Pow

45、erDesigner操作步驟:Tools-》Generate Physical Data Model 4.用企業(yè)管理器創(chuàng)建新的空數(shù)據(jù)庫 5.創(chuàng)建SQL連接: PowerDesigner操作步驟:DataBase-》Connection 6.生成SQL數(shù)據(jù)庫: PowerDesigner操作步驟:DataBase-》Generate DataBase */ --53.全局變量和局部變量的區(qū)別是什么? /* 答:全局變量是系統(tǒng)預(yù)先定義的。 局部變量是用戶自定義的。 */ --54.定義局部變量的關(guān)鍵字是什么?請寫出示例

46、代碼? /* 答:定義局部變量的關(guān)鍵字DECLARE */ --示例代碼:定義一個整型的局部變量。 DECLARE @Temp AS int --55.給變量賦值有哪些方法?請寫出示例代碼? /* 答:給變量賦值有種,分別用SET關(guān)鍵字和SELECT關(guān)鍵字。 */ --示例代碼:用SET關(guān)鍵字給變量賦值 SET @Temp = 15 --示例代碼:用SELECT關(guān)鍵字給變量賦值(查詢賦值) SELECT @Temp = AGE FROM Student WHERE S_Name = '張三' --56.數(shù)據(jù)類型轉(zhuǎn)換的函數(shù)有哪些?請寫出示例代碼? /*

47、答:CAST(字段AS 數(shù)據(jù)類型) 和CONVERT(數(shù)據(jù)類型,字段) */ --示例代碼:使用CAST將轉(zhuǎn)換成'12'再與‘張三’相加 SELECT '張三'+CAST(12 AS varchar(2)) AS 數(shù)據(jù)類型轉(zhuǎn)換 --示例代碼:使用CONVERT將轉(zhuǎn)換成'12'再與‘張三’相加 SELECT '張三'+CONVERT(varchar(2),12) AS 數(shù)據(jù)類型轉(zhuǎn)換 --57.全局變量@@RowCount、@@IDENTITY、@@Error的定義是什么?請寫出示例代碼? /* 答:@@RowCount定義:返回受上一語句影響的行數(shù)。 @@IDENT

48、ITY定義:返回最后插入的自增長值(一定要包含自增長列) @@ERROR定義:返回最后執(zhí)行的Transact-SQL 語句的錯誤代碼。 */ --示例代碼:@@RowCount SELECT * FROM StudentClass sc --查詢StudentClass表 SELECT @@RowCount AS 上一行語句影響的條數(shù) --顯示StudentClass表的記錄數(shù) --示例代碼:@@IDENTITY --先決條件:操作的表中一定要含有自增長列, --否則@@IDENTITY全局變量一直顯示為NULL INSERT INTO Stude

49、ntClass --往StudentClass中插入記錄 VALUES (1357,1) SELECT @@IDENTITY AS 最后的自增長ID號 --示例代碼:@@ERROR priny 1 --編寫一行錯誤的SQL語句 SELECT @@ERROR AS 最后一行SQL語句的錯誤編號 --查詢最后一行SQL語句的錯誤編號 --58.SQL中表示循環(huán)的關(guān)鍵字有哪些?請寫出示例代碼? /* 答:SQL中表示循環(huán)的關(guān)鍵字有:WHILE關(guān)鍵字 */ --示例代碼: DECLARE @COUNT AS int

50、 --定義一個計數(shù)器 SET @COUNT = 1 --初始化計數(shù)器 WHILE @COUNT < 4 --循環(huán)打印循環(huán)變量 BEGIN PRINT @COUNT SET @COUNT = @COUNT + 1 END --59.關(guān)鍵字break與關(guān)鍵字Continue的區(qū)別是什么?請寫出示例代碼? /* 答:關(guān)鍵字break:結(jié)束全部循環(huán) 關(guān)鍵字Continue:跳過本次循環(huán),進入下一次循環(huán) */ --示例代碼: DECLARE @COUNT AS int

51、 --定義一個計數(shù)器 SET @COUNT = 1 --初始化計數(shù)器 WHILE @COUNT < 4 --循環(huán)打印循環(huán)變量 BEGIN IF @COUNT % 2 = 0 --跳過偶數(shù)循環(huán) BEGIN SET @COUNT = @COUNT + 1 --退出之前要加 CONTINUE --跳過本次循環(huán),進入下一次循環(huán) END PRINT @COUNT SET @COUNT = @COUNT + 1 END --示例代碼: D

52、ECLARE @COUNT AS int --定義一個計數(shù)器 SET @COUNT = 1 --初始化計數(shù)器 WHILE @COUNT < 4 --循環(huán)打印循環(huán)變量 BEGIN PRINT @COUNT SET @COUNT = @COUNT + 1 IF @COUNT > 2 --當(dāng)計數(shù)器大于的時候結(jié)束循環(huán) BEGIN BREAK --退出循環(huán) END END --60.函數(shù)按照返回值分為幾類?如何調(diào)用?請寫出

53、示例代碼? /* 答:函數(shù)按照返回值分為三類: a)標(biāo)量函數(shù):返回的是SQL數(shù)據(jù)類型不包括大容量數(shù)據(jù)類型(Image、text、ntext)。 b)內(nèi)聯(lián)表值函數(shù):返回的是SQL的數(shù)據(jù)表,類似于SQL參數(shù)化視圖。 c)多聲明表值函數(shù):返回的是預(yù)先定義好的SQL的數(shù)據(jù)表。 */ --創(chuàng)建標(biāo)量函數(shù): --判斷函數(shù)是否存在,存在則刪除 IF EXISTS(SELECT * FROM sysobjects WHERE name = 'Fn_BL_GetStudentNameByStudentID') DROP FUNCTION

54、 Fn_BL_GetStudentNameByStudentID GO CREATE FUNCTION Fn_BL_GetStudentNameByStudentID(@StudentID int) RETURNS VARCHAR(20) --函數(shù)返回值是SQL數(shù)據(jù)類型 AS --函數(shù)開始的標(biāo)志 BEGIN --函數(shù)體 DECLARE @NAME AS varchar(20) --定義一個變量 SELECT @NAME = [S_NAME]

55、FROM Student s --給變量賦值 WHERE s.S_ID = @StudentID RETURN @NAME --返回姓名 END --調(diào)用標(biāo)量函數(shù): SELECT dbo.Fn_BL_GetStudentNameByStudentID(1357) AS 學(xué)生姓名 --創(chuàng)建內(nèi)聯(lián)表值函數(shù): --判斷函數(shù)是否存在,存在則刪除 IF EXISTS(SELECT * FROM sysobjects WHERE name = 'Fn_NL_GetStudentIntoByStudentID') D

56、ROP FUNCTION Fn_NL_GetStudentIntoByStudentID GO CREATE FUNCTION Fn_NL_GetStudentIntoByStudentID(@StudentID int) RETURNS TABLE AS RETURN SELECT * FROM Student s WHERE s.S_ID = @StudentID --調(diào)用內(nèi)聯(lián)表值函數(shù): SELECT * FROM dbo.Fn_NL_GetStudentIntoByStudentID(1357) --創(chuàng)建多聲明表值函數(shù): --

57、判斷函數(shù)是否存在,存在則刪除 IF EXISTS(SELECT * FROM sysobjects WHERE name = 'Fn_DSM_GetStudentIntoByStudentID') DROP FUNCTION Fn_DSM_GetStudentIntoByStudentID GO CREATE FUNCTION Fn_DSM_GetStudentIntoByStudentID(@StudentID int) RETURNS @TempTable TABLE([Name] varchar(20),

58、 [GROUP] varchar(20)) AS BEGIN INSERT @TempTable SELECT [S_NAME],[S_GROUP] FROM Student s WHERE s.S_ID = @StudentID RETURN END --調(diào)用多聲明表值函數(shù): SELECT * FROM dbo.Fn_DSM_GetStudentIntoByStudentID(1357) --61.標(biāo)量函數(shù)、內(nèi)聯(lián)表值函數(shù)、多聲明表值函數(shù)創(chuàng)建語法的區(qū)別和相同點? /* 答:相同點: 1.都要使用CREATE FUNCTION關(guān)鍵字

59、 2.返回關(guān)鍵字都是RETURNS關(guān)鍵字 3.都要使用AS關(guān)鍵字作為函數(shù)體開始的標(biāo)識 不同點: 1.返回值類型不同。 2.調(diào)用方式不同。 */ --62.查看函數(shù)內(nèi)容的腳本關(guān)鍵字是什么? /* 答:SP_HELPTEXT 函數(shù)名 */ --代碼示例: SP_HELPTEXT Fn_DSM_GetStudentIntoByStudentID -- 63.創(chuàng)建存儲過程的關(guān)鍵字是什么?請寫出示例代碼? /* 答:創(chuàng)建存儲過程的關(guān)鍵字是:Create Proc */ --------------------------擴展

60、存儲過程示例------ DECLARE @filename varchar (20), @message varchar (20) EXEC xp_sscanf 'sync -b -fauthors10.tmp -rrandom', 'sync -b -f%s -r%s', @filename OUTPUT, @message OUTPUT SELECT @filename, @message -------------------------系統(tǒng)存儲過程示例------ Sp_Helptext xp_sscanf -------------------------用戶存

61、儲過程示例------ IF Exists(Select * from sysobjects where name='UP_GetStuNameByID' ) drop proc UP_GetStuNameByID GO Create Proc UP_GetStuNameByID(@ID int) as select * from Student where S_ID=@ID drop proc UP_GetStuNameByID -- 64.存儲過程和函數(shù)的區(qū)別是什么? /* 答:函數(shù)與存儲過程的相同點:.預(yù)先編譯 2.分為物理與臨時的

62、 3.都可以提高SQL腳本安全性 區(qū)別:.函數(shù)必須又返回值,而存儲過程可以沒有返回值 2.函數(shù)的返回值只有一個,存儲過程的返回值可以有多個且類型可以不一樣 */ -- 65.什么是存儲過程?存儲過程的優(yōu)點是什么? /* 答:存儲過程Stored Procedure:是一組為了完成特定功能的SQL語句集經(jīng)編譯后存儲在數(shù)據(jù)庫中用戶通過指定存儲過程的名字并給出參數(shù)如果該存儲過程帶有參數(shù)來執(zhí)行它 存儲過程的優(yōu)點: 1.實現(xiàn)組件化編程 2.提高執(zhí)行效率 3.減少網(wǎng)絡(luò)流量 4.提高安全性 存儲過程特點: 1.預(yù)先編譯(速度快) 2.安

63、全性高 3.兼容性好(便于跨用) 4.可以重復(fù)使用 5.移植性差(缺點) 6.調(diào)用與聲明參數(shù)必須一一匹配 */ -- 66.存儲過程分為幾類? /* 答:存儲過程分類: 1.xp_擴展存儲過程(系統(tǒng)自帶,也可自己編寫) 2.SP_系統(tǒng)存儲過程(系統(tǒng)自帶) 3.UP_用戶存儲過程 A.物理 B.臨時(局部:#、全部:##) */ -- 67.存儲過程加密和重新編譯的關(guān)鍵字是什么? /* 答:存儲過程的加密: With encryption(加密) Sp_decrypt(解密) 存儲過程重新編譯: sp_recompile

64、 */ --示例 Create Proc UP_GetStudent With encryption as select * from Student Drop Proc UP_GetStudent--刪除 --測試存儲過程 Sp_HelpText UP_GetStudent -- 68.查看存儲過程、重命名存儲過程的腳本是什么? /* 答:查看存儲過程:sp_helptext 重命名存儲過程:sp_rename 原存儲過程名,新存儲過程名 */ --示例 sp_Rename UP_GetStudent,UP_GetStudentIfo --

65、69.什么是觸發(fā)器?觸發(fā)器的分類是什么?寫出示例代碼? /* 答:觸發(fā)器trigger: 1.是特殊的存儲過程(自己觸發(fā)), 它在表的數(shù)據(jù)發(fā)生變化時起作用, 可以維護數(shù)據(jù)的完整性 2.觸發(fā)器是建立在表之上的, 而約束可以建立在表上與列上, 他們都是維護數(shù)據(jù)的完整性,都是數(shù)據(jù)庫的對象 3.觸發(fā)器不能接受參數(shù) Trigger種類: 1.After:在……之后觸發(fā)(有insert、Delete、update) 2.Instead of :用……來替換insert、update、Delete */ -- 70.創(chuàng)建觸發(fā)器的關(guān)鍵字是什么?寫出示例代碼?

66、 /* 答:Create Trigger StudentSeven */ --示例: if exists(select * from sysobjects where name='tr_stuinsert' ) drop trigger tr_stuinsert go create trigger tr_stuinsert on student --在student表上 for insert --創(chuàng)建insert觸發(fā)器 as declare @s_name varchar(20) select @s_name=s_name from inserted if @s_name='dnf' begin update student set s_name='阿什頓' where s_name='dnf' end else if @s_name='adf' begin update student set s_name='阿薩德' where s_name='adf' END -- 71.刪除觸發(fā)器的語句是什么?

展開閱讀全文
溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!