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

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

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

0 積分

下載資源

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

資源描述:

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

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

2、=邏輯名,filename=物理名, -擴(kuò)展名是mdfsize=初始大小,maxsize=最大值,filegrowth=增長), -多個文件組之間用逗號分隔filegroup 文件組名(name=邏輯名,filename=物理名, -擴(kuò)展名是ndfsize=初始大小,maxsize=最大值,filegrowth=增長)log ON (name=邏輯名,filename=物理名, -擴(kuò)展名是ldfsize=初始大小,maxsize=最大值,filegrowth=增長)*/-5.用代碼創(chuàng)建表?CREATE TABLE TABLE_NAME -創(chuàng)建表的表名(ID int IDENTITY(1,1)

3、PRIMARY KEY, -設(shè)置ID為自增長的主鍵NAME varchar(20) NOT NULL , -設(shè)置名字不為空 AGE tinyint CHECK(AGE120) -設(shè)置年齡小于)-6.用代碼實現(xiàn)修改數(shù)據(jù)庫,添加文件組?ALTER DATABASE DATABASENAME -要修改的數(shù)據(jù)庫名ADD FILEGROUP FILEGROUPNAME -要添加的文件組名-7.用代碼實現(xiàn)修改文件,文件組?/*答:-修改文件示例ALTER DATABASE DATABASENAMEmodify file(name=原邏輯名, NEWNAME = 新邏輯名, FILENAME = 新文件名,

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

5、 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_help class-查看表: sp_helpdb Demo_20091230NEW - 10.重命名數(shù)據(jù)庫和表的SQL語句?-重命名表的SQL語句(調(diào)用存儲過程)SP_RENAME class,classNew -不添加引號SP_RENAME class,clas

6、sNew -添加引號-重命名表的SQL語句(ALTER DATABASE)ALTER DATABASE Demo_20091230NEWModify name = Demo_20091230-重命名數(shù)據(jù)庫的SQL語句SP_RENAMEDB Demo_20091230NEW,Demo_20091230 -不添加引號SP_RENAMEDB Demo_20091230,Demo_20091230NEW -添加引號- 11.什么是數(shù)據(jù)庫的完整性?/*答:確保數(shù)據(jù)庫的一致性和精確性, 可以用約束和觸發(fā)器來實現(xiàn)。*/- 12.數(shù)據(jù)庫完整性的分類?/*答:實體完整性:規(guī)定表的每一行在表中是唯一的實體。(主鍵

7、) 域完整性:是指表中列滿足特定的數(shù)據(jù)類型和約束。 引用完整性:兩個表的主鍵和外鍵的關(guān)鍵字一致。 自定義完整性:用戶自己定義的數(shù)據(jù)類型的約束。*/ - 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

8、KEY 可以新建表級別和列級別約束。*/- 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)-示例代碼(表級)CREATE TABLE Student(ID int

9、,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) REFERENCES CLASS(C_NAME) -學(xué)生表中的課程名引用課程表中的課程名)-示例代碼(表級)CREATE TABLE Student(ID int PRIMARY KEY,C_NAME va

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

11、rchar(20) UNIQUE -學(xué)號必須唯一) -示例代碼(表級)CREATE TABLE Student(ID int PRIMARY KEY,C_NAME varchar(20) REFERENCES 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 PRIMAR

12、Y KEY,C_NAME varchar(20) REFERENCES CLASS(C_NAME), -學(xué)生表中的課程名引用課程表中的課程名S_NUM varchar(20) UNIQUE, -學(xué)號必須唯一S_AGE tinyint CHECK(S_AGE60) -年齡必須小于歲)-示例代碼(表級)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

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

14、P_HELPCONSTRAINT CK_S_AGE -查看學(xué)號唯一約束- 21.SQL有哪些數(shù)據(jù)類型?/*答:日期類型:DATETIME、SMALLDATETIME整數(shù)類型:BIGINT、INT、SMALLINT、TINYINT浮點(diǎn)型:DOUBLE、FLOAT、DECIMAL、REAL、NUMERIC貨幣類型:MONEY、SMALLMONEY字符類型:CHAR、VARCHAR、NCHAR、NVARCHAR二進(jìn)制數(shù)據(jù)類型:BINARY、VARBINARY、IMAGE全局唯一標(biāo)識:UNIQUEIDENTIFIER大容量數(shù)據(jù)類型:TEXT、NTEXT、IMAGE*/- 22.SQL語句分類(DDL、

15、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)用于添加、修改、刪除存儲在 數(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、DEL

16、ETE 數(shù)據(jù)控制語言:GRANT(授權(quán))、DENY(拒絕)、REVOKE(移除) */ - 23.關(guān)鍵字identity是什么意思?/*答:關(guān)鍵字identity表示自動編號,自增長。*/- 24.uniqueidentifier是什么意思?如何生成?/*答: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ū)別:后再獨(dú)立于表存在,前者必須要有表。

17、綁定默認(rèn)值:使用sp_bindefault 默認(rèn)值名,表名.列名。 注意:只有使用CREATE DEFAULT 關(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_NAMEAS 徐念-代碼示例:綁定默認(rèn)值到CLASS表的NAME列上

18、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_NAMEAS NAME =徐念-代碼示例:綁定規(guī)則到CLASS表的NAME列上SP_BINDRULE RU_NAME,CLASS.NA

19、ME-代碼示例:取消綁定規(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ù)FROM字句后面的一個或多個表創(chuàng)建工作表。 如果是多個表,將對表進(jìn)行交叉連接。 如果只有一個表,就直接作為工作表。 2.如果有WHERE字句,根據(jù)WHERE字句搜索滿足條件的行。 3.如果有GROUP

20、 BY字句,會對第二步產(chǎn)生的結(jié)果集進(jìn)行分組匯總。 4.如果有HAVING字句,會對第三步產(chǎn)生的結(jié)果集進(jìn)行組篩選。 5.如果有DISTINCT、TOP關(guān)鍵字,將在第四步的基礎(chǔ)上進(jìn)行過濾,去掉重復(fù)的行。 6.如果有ORDER BY字句,會在第五步的基礎(chǔ)上進(jìn)行排序。 7.顯示查詢結(jié)果。*/-29.數(shù)據(jù)庫中的表關(guān)系有哪幾種?分別是什么?/*答:分四種(一對一、一對多、多對一、多對多) 多對多:必須要分表,分解成兩個多對一舉例:如學(xué)生和課程是多對多關(guān)系,新增一個學(xué)生選修課程表。 學(xué)生和學(xué)生選修課程表是一對多關(guān)系 課程和學(xué)生選修課程表是一對多關(guān)系*/-30.級聯(lián)刪除、更新的關(guān)鍵字是什么?并寫出代碼?/*答

21、:級聯(lián)刪除關(guān)鍵字:ON DELETE CASCADE 級聯(lián)更新關(guān)鍵字:ON UPDATE CASCADE代碼示例如下:*/-修改表添加級聯(lián)刪除、級聯(lián)更新外鍵約束ALTER TABLE StudentClassADD 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:(

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

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

24、Group,AVG(S_age) FROM StudentGROUP BY S_Group WITH ROLLUPSELECT S_Group,AVG(S_age) FROM StudentGROUP BY S_Group WITH CUBE-根據(jù)組和姓名分組SELECT S_Group,S_Name,AVG(S_age) FROM StudentGROUP BY S_Group,S_NameSELECT S_Group,S_Name, AVG(S_age) FROM StudentGROUP BY S_Group,S_Name WITH ROLLUPSELECT S_Group,S_Name

25、,AVG(S_age) FROM StudentGROUP 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é)生的信息(用子查詢的方式)-標(biāo)準(zhǔn)子查詢SELECT * FROM student WHERE S_NAME IN (SELECT S_NAME FROM student WHERE student.S_age 、=、=、!=、=)聯(lián)用, 用于比較SOME、ALL字查詢所返回的值

26、。*/-示例:查找年長(年齡在平均年齡之上)的學(xué)生的信息SELECT *FROM u_studentWHERE AGE ALL(SELECT AVG(ISNULL(AGE,0) FROM u_student)-39.關(guān)鍵字IN的含義?請寫出代碼示例?/*答:關(guān)鍵字IN表示在.里*/-示例:查找姓名等于張三或李四的學(xué)生的記錄SELECT *FROM u_studentWHERE NAME in (張三,李四)-40.視圖分為哪三類?請寫出代碼示例?/*答:單表視圖:數(shù)據(jù)只來源于一個表。 多表視圖:數(shù)據(jù)只來源于多個表。 嵌套視圖:數(shù)據(jù)只來源于視圖。*/-示例:嵌套視圖-創(chuàng)建學(xué)生信息視圖(單表視圖)

27、CREATE VIEW V_StudentInfoASSELECT * FROM u_student us-創(chuàng)建學(xué)生姓名信息視圖(嵌套視圖)CREATE VIEW V_StudentNameInfoASSELECT NAME FROM V_StudentInfo-41.視圖的優(yōu)缺點(diǎn)是什么?/*答:視圖優(yōu)點(diǎn): 1.簡化查詢操作 2.隱蔽敏感數(shù)據(jù),提高安全性 3.定制數(shù)據(jù) 4.數(shù)據(jù)的查詢和存儲分離 視圖缺點(diǎn): 1.性能較低 2.更新受限:SELECT語句中使用了HAVING、GROUP BY、TOP、DISTINCT、 計算列、聚合函數(shù)關(guān)鍵字后就不能更新*/-42.索引的作用是什么?索引分為哪兩類

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

29、_STUDENT表的NAME列上創(chuàng)建非聚集索引CREATE NONCLUSTERED INDEX CLU_INDEXON u_STUDENT(NAME)-示例:在u_STUDENT表的NAME列上創(chuàng)建唯一聚集索引CREATE UNIQUE INDEX CLU_INDEXON u_STUDENT(NAME)-43.查看表的索引的SQL語句是什么?請寫出代碼示例?/*答:查看表的索引的SQL語句是SP_HELPINDEX 表名*/-代碼示例SP_HELPINDEX Class-44.重新整理索引的SQL語句是什么?請寫出代碼示例?/*答:重新整理索引的SQL語句是DBCC INDEXDEFRAG(

30、數(shù)據(jù)庫名稱,表名,索引名) DBCC 是一個數(shù)據(jù)庫工具集*/-代碼示例DBCC INDEXDEFRAG(Demo_20091230NEW,Class,PK_Class_49C3F6B7)-45.SQL的盤區(qū)分為哪兩種,它們的區(qū)別是什么?/*答:SQL的盤區(qū)分:統(tǒng)一擴(kuò)展盤區(qū)和混合擴(kuò)展盤區(qū)。 統(tǒng)一擴(kuò)展盤區(qū):只存放一種類型數(shù)據(jù)頁。 混合擴(kuò)展盤區(qū):存放二種或兩種以上的數(shù)據(jù)頁。 -46.SQL的數(shù)據(jù)頁一共有幾種?分別是什么?/*答:SQL的數(shù)據(jù)頁一共有八種。數(shù)據(jù)頁、索引頁、文本圖像頁、可用空間頁、 全局分配映射表、輔助全局分配映射表、索引分配映射表、 大容量差異映射表大容量差異更改映射表。 數(shù)據(jù)頁:存放

31、真實的數(shù)據(jù)。 索引頁:存放索引數(shù)據(jù),如非聚集索引的頁級頁。 文本圖像頁:存放大容量數(shù)據(jù)類型,如Image、text、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è)

32、計過程大致可分為個步驟: 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)容進(jìn)行查詢。*/-示例代碼:連接查詢出語文、數(shù)學(xué)的課程信息SELECT * FROM ClassWHERE Cla

33、ss_Name = 語文UNION ALLSELECT * FROM ClassWHERE Class_Name = 數(shù)學(xué)-50.關(guān)鍵字EXISTS的含義?請寫出代碼示例?/*答:關(guān)鍵字EXISTS用來表示子查詢中是否存在滿足條件的記錄。 如果存在返回TRUE,否則返回FALSE。*/-示例代碼:查找數(shù)學(xué)課的課程信息SELECT * FROM Class aWHERE EXISTS (SELECT * FROM Class b WHERE b.Class_Name = 數(shù)學(xué) AND a.ID = b.ID) -示例代碼:判斷CLASS表是否在,存在則刪除IF EXISTS(SELECT nam

34、e FROM sysobjects WHERE name = Class AND type = U) DROP TABLE ClassGO-51.數(shù)據(jù)庫三范式是哪三范式?/*答:NF:屬性不可再分。 2NF:在NF的基礎(chǔ)上消除部分依賴(適用于聯(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 PowerD

35、esigner操作步驟:Tools-Check Model 3.生成物理數(shù)據(jù)模型:由概念數(shù)據(jù)模型轉(zhuǎn)換而來,是真實的數(shù)據(jù)模型。 PowerDesigner操作步驟: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.定義局部

36、變量的關(guān)鍵字是什么?請寫出示例代碼?/*答:定義局部變量的關(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 StudentWHERE S_Name = 張三-56.數(shù)據(jù)類型轉(zhuǎn)換的函數(shù)有哪些?請寫出示例代碼?/*答:CAST(字段AS 數(shù)據(jù)類型) 和CONVERT(數(shù)據(jù)類型,字

37、段)*/-示例代碼:使用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ù)。 IDENTITY定義:返回最后插入的自增長值(一定要包含自增長列) ERROR定義:返回最后執(zhí)行的Transact-SQL 語句的錯誤代碼。*/-示例代碼:RowCountS

38、ELECT * FROM StudentClass sc -查詢StudentClass表SELECT RowCount AS 上一行語句影響的條數(shù) -顯示StudentClass表的記錄數(shù)-示例代碼:IDENTITY-先決條件:操作的表中一定要含有自增長列,-否則IDENTITY全局變量一直顯示為NULLINSERT INTO StudentClass -往StudentClass中插入記錄VALUES (1357,1)SELECT IDENTITY AS 最后的自增長ID號-示例代碼:ERRORpriny 1 -編寫一行錯誤的SQL語句SELECT ERROR AS 最后一行SQL語句的錯

39、誤編號 -查詢最后一行SQL語句的錯誤編號-58.SQL中表示循環(huán)的關(guān)鍵字有哪些?請寫出示例代碼?/*答:SQL中表示循環(huán)的關(guān)鍵字有:WHILE關(guān)鍵字*/-示例代碼:DECLARE COUNT AS int -定義一個計數(shù)器SET COUNT = 1 -初始化計數(shù)器WHILE COUNT 4 -循環(huán)打印循環(huán)變量BEGINPRINT COUNTSET COUNT = COUNT + 1END-59.關(guān)鍵字break與關(guān)鍵字Continue的區(qū)別是什么?請寫出示例代碼?/*答:關(guān)鍵字break:結(jié)束全部循環(huán) 關(guān)鍵字Continue:跳過本次循環(huán),進(jìn)入下一次循環(huán)*/-示例代碼:DECLARE COU

40、NT AS int -定義一個計數(shù)器SET COUNT = 1 -初始化計數(shù)器WHILE COUNT 4 -循環(huán)打印循環(huán)變量BEGINIF COUNT % 2 = 0 -跳過偶數(shù)循環(huán)BEGINSET COUNT = COUNT + 1 -退出之前要加CONTINUE -跳過本次循環(huán),進(jìn)入下一次循環(huán)ENDPRINT COUNTSET COUNT = COUNT + 1END-示例代碼:DECLARE COUNT AS int -定義一個計數(shù)器SET COUNT = 1 -初始化計數(shù)器WHILE COUNT 2 -當(dāng)計數(shù)器大于的時候結(jié)束循環(huán)BEGINBREAK -退出循環(huán)ENDEND-60.函數(shù)按

41、照返回值分為幾類?如何調(diào)用?請寫出示例代碼?/*答:函數(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 Fn_BL_GetStudentNameByStudentIDG

42、OCREATE 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 FROM Student s -給變量賦值WHERE s.S_ID = StudentIDRETURN NAME -返回姓名END-調(diào)用標(biāo)量函數(shù):SELECT dbo.Fn_BL_GetStudentNameByStudentID(1357) AS 學(xué)

43、生姓名-創(chuàng)建內(nèi)聯(lián)表值函數(shù):-判斷函數(shù)是否存在,存在則刪除IF EXISTS(SELECT * FROM sysobjects WHERE name = Fn_NL_GetStudentIntoByStudentID)DROP FUNCTION Fn_NL_GetStudentIntoByStudentIDGOCREATE FUNCTION Fn_NL_GetStudentIntoByStudentID(StudentID int)RETURNS TABLEASRETURN SELECT * FROM Student s WHERE s.S_ID = StudentID -調(diào)用內(nèi)聯(lián)表值函數(shù):SE

44、LECT * FROM dbo.Fn_NL_GetStudentIntoByStudentID(1357)-創(chuàng)建多聲明表值函數(shù):-判斷函數(shù)是否存在,存在則刪除IF EXISTS(SELECT * FROM sysobjects WHERE name = Fn_DSM_GetStudentIntoByStudentID)DROP FUNCTION Fn_DSM_GetStudentIntoByStudentIDGOCREATE FUNCTION Fn_DSM_GetStudentIntoByStudentID(StudentID int)RETURNS TempTable TABLE(Name

45、varchar(20), GROUP varchar(20)ASBEGININSERT TempTableSELECT S_NAME,S_GROUP FROM Student sWHERE s.S_ID = StudentIDRETURNEND-調(diào)用多聲明表值函數(shù):SELECT * FROM dbo.Fn_DSM_GetStudentIntoByStudentID(1357)-61.標(biāo)量函數(shù)、內(nèi)聯(lián)表值函數(shù)、多聲明表值函數(shù)創(chuàng)建語法的區(qū)別和相同點(diǎn)?/*答:相同點(diǎn): 1.都要使用CREATE FUNCTION關(guān)鍵字 2.返回關(guān)鍵字都是RETURNS關(guān)鍵字 3.都要使用AS關(guān)鍵字作為函數(shù)體開始的標(biāo)識

46、不同點(diǎn): 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*/-擴(kuò)展存儲過程示例-DECLARE filename varchar (20), message varchar (20)EXEC xp_sscanf sync -b -fauthors10.tmp -rrandom, sync -b -f%s -r%

47、s, filename OUTPUT, message OUTPUTSELECT filename, message-系統(tǒng)存儲過程示例-Sp_Helptext xp_sscanf-用戶存儲過程示例-IF Exists(Select * from sysobjectswhere name=UP_GetStuNameByID)drop proc UP_GetStuNameByIDGOCreate Proc UP_GetStuNameByID(ID int)asselect * from Studentwhere S_ID=IDdrop proc UP_GetStuNameByID- 64.存儲過程

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

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

50、Drop Proc UP_GetStudent-刪除-測試存儲過程Sp_HelpText UP_GetStudent- 68.查看存儲過程、重命名存儲過程的腳本是什么?/*答:查看存儲過程:sp_helptext 重命名存儲過程:sp_rename 原存儲過程名,新存儲過程名*/-示例sp_Rename UP_GetStudent,UP_GetStudentIfo- 69.什么是觸發(fā)器?觸發(fā)器的分類是什么?寫出示例代碼?/*答:觸發(fā)器trigger:1.是特殊的存儲過程(自己觸發(fā)),它在表的數(shù)據(jù)發(fā)生變化時起作用,可以維護(hù)數(shù)據(jù)的完整性2.觸發(fā)器是建立在表之上的,而約束可以建立在表上與列上,他們都

51、是維護(hù)數(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)鍵字是什么?寫出示例代碼?/*答:Create Trigger StudentSeven*/-示例:if exists(select *from sysobjectswhere name=tr_stuinsert)drop trigger tr_stuinsertgocreate trigger tr_stuinserton student-在student表上for insert-創(chuàng)建insert觸發(fā)器asdeclare s_name varchar(20)select s_name=s_name from insertedif s_name=dnfbeginupdate studentset s_name=阿什頓where s_name=dnfendelse if s_name=adfbeginupdate studentset s_name=阿薩德where s_name=adfEND- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(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)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!