SQL知識(shí)點(diǎn)全集(帶源碼存儲(chǔ)過程)
《SQL知識(shí)點(diǎn)全集(帶源碼存儲(chǔ)過程)》由會(huì)員分享,可在線閱讀,更多相關(guān)《SQL知識(shí)點(diǎn)全集(帶源碼存儲(chǔ)過程)(22頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、文檔供參考,可復(fù)制、編制,期待您的好評(píng)與關(guān)注! --1.SQL由什么文件和什么文件組成? /* 答:SQL由數(shù)據(jù)文件和日志文件組成 */ --2.SQL的數(shù)據(jù)文件分哪兩類?擴(kuò)展名分別是什么?分別可以有多少個(gè)? /* 答:SQL的數(shù)據(jù)文件分主數(shù)據(jù)文件和二級(jí)數(shù)據(jù)文件。 主數(shù)據(jù)文件有且只有一個(gè),二級(jí)數(shù)據(jù)文件-N個(gè) 擴(kuò)展名:主數(shù)據(jù)文件:MDF 二級(jí)數(shù)據(jù)文件:NDF */ --3.SQL文件組和文件的關(guān)系? /* 答:文件存放在文件組中,一個(gè)文件只能屬于一個(gè)文件組; 一個(gè)文件組可以有多個(gè)文件。 */ --4
2、.用代碼創(chuàng)建多個(gè)數(shù)據(jù)文件的數(shù)據(jù)庫? /* 答: CREATE DATABASE DatabaseName primary ON ( name=邏輯名, filename=物理名, --擴(kuò)展名是mdf size=初始大小, maxsize=最大值, filegrowth=增長(zhǎng) ), --多個(gè)文件組之間用逗號(hào)分隔 filegroup 文件組名 ( name=邏輯名, filename=物理名, --擴(kuò)展名是ndf size=初始大小, maxsize=最大值, filegrowth=增長(zhǎng) ) log
3、ON ( name=邏輯名, filename=物理名, --擴(kuò)展名是ldf size=初始大小, maxsize=最大值, filegrowth=增長(zhǎng) ) */ --5.用代碼創(chuàng)建表? CREATE TABLE TABLE_NAME --創(chuàng)建表的表名 ( [ID] int IDENTITY(1,1) PRIMARY KEY, --設(shè)置ID為自增長(zhǎng)的主鍵 [NAME] varchar(20) NOT NULL , --設(shè)置名字不為空 [AGE] tinyint CHECK([AGE]<120)
4、 --設(shè)置年齡小于 ) --6.用代碼實(shí)現(xiàn)修改數(shù)據(jù)庫,添加文件組? ALTER DATABASE DATABASENAME --要修改的數(shù)據(jù)庫名 ADD FILEGROUP FILEGROUPNAME --要添加的文件組名 --7.用代碼實(shí)現(xiàn)修改文件,文件組? /* 答: --修改文件示例 ALTER DATABASE DATABASENAME modify file ( [name]='原邏輯名', [NEWNAME] = '新邏輯名', [FILENAME] = '
5、新文件名', [SIZE] = '文件大小', [MAXSIZE] = '文件的最大值', [FILEGROWTH] = '文件增長(zhǎng)值或增長(zhǎng)百分比' ) */ --修改文件組 ALTER DATABASE Demo_20091230NEW MODIFY FILEGROUP filegroup2 name = Newfilegroup_name -- 8.用代碼修改表實(shí)現(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)存儲(chǔ)過程 SP_RENAME 'Student.S_Name' ,'S_NAME_NEW' -- 9.用代碼實(shí)現(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)用存儲(chǔ)過程) SP_RENAME class,classNew --不添加引號(hào) SP_RENAME 'class','classNew' --添加引號(hào) --重命名表的SQL語句(ALTER DATABASE) ALTER DATABASE Demo_20091230NEW Modify name = Demo_20091230 --重命名數(shù)據(jù)庫的SQL語句 SP_RENAMEDB Demo_
8、20091230NEW,Demo_20091230 --不添加引號(hào) SP_RENAMEDB 'Demo_20091230','Demo_20091230NEW' --添加引號(hào) -- 11.什么是數(shù)據(jù)庫的完整性? /*答:確保數(shù)據(jù)庫的一致性和精確性, 可以用約束和觸發(fā)器來實(shí)現(xiàn)。 */ -- 12.數(shù)據(jù)庫完整性的分類? /*答:實(shí)體完整性:規(guī)定表的每一行在表中是唯一的實(shí)體。(主鍵) 域完整性:是指表中列滿足特定的數(shù)據(jù)類型和約束。 引用完整性:兩個(gè)表的主鍵和外鍵的關(guān)鍵字一致。 自定義完整性:用戶自己定義的數(shù)據(jù)類型的約束。
9、 */ -- 13.約束分為哪兩個(gè)級(jí)別,它和完整性的關(guān)系? /* 答:約束分表級(jí)別和列級(jí)別,可以相互轉(zhuǎn)換,只是寫法不同。 創(chuàng)建聯(lián)合主鍵的時(shí)候一定要用表級(jí)約束 PRIMARY KEY約束(實(shí)現(xiàn)實(shí)體完整性) UNIQUE KEY約束(實(shí)現(xiàn)域完整性) NOT NULL約束(實(shí)現(xiàn)域完整性) CHECK約束(實(shí)現(xiàn)域完整性) FOREIGN KEY約束(實(shí)現(xiàn)引用完整性) 自定義數(shù)據(jù)類型(實(shí)現(xiàn)自定義完整性) 其中PRIMARY KEY、UNIQUE KEY、FOREIGN KEY 可以新建表級(jí)別和列級(jí)別約束。 */ --
10、 14.用代碼創(chuàng)建NOT NULL 約束? /* 答:直接在創(chuàng)建表的時(shí)候添加。 */ --代碼示例: CREATE TABLE Student ( [ID] int NOT NULL ) -- 15.用代碼創(chuàng)建primary key 約束(兩種方式)? /* 答:primary key 約束可以用列級(jí)和表級(jí)兩種方式創(chuàng)建。 創(chuàng)建聯(lián)合主鍵的時(shí)候,必須用表級(jí)的方式創(chuàng)建。 */ --示例代碼(列級(jí)) CREATE TABLE Student ( [ID] int PRIMARY KEY, [NAME] varchar(20)
11、 ) --示例代碼(表級(jí)) CREATE TABLE Student ( [ID] int , [NAME] varchar(20) CONSTRAINT PK_STUDENT PRIMARY KEY ([ID],[NAME]) ) -- 16.用代碼創(chuàng)建foreign key 約束(兩種方式)? /* 答:foreign key 約束可以用列級(jí)和表級(jí)兩種方式創(chuàng)建。 */ --示例代碼(列級(jí)) CREATE TABLE Student ( [ID] int PRIMARY KEY, [C_NAME] varchar(20) REFERENC
12、ES CLASS([C_NAME]) --學(xué)生表中的課程名引用課程表中的課程名 ) --示例代碼(表級(jí)) 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 約束可以用列級(jí)和表級(jí)兩種方式創(chuàng)
13、建。 在創(chuàng)建約束的列上添加唯一約束。 */ --示例代碼(列級(jí)) CREATE TABLE Student ( [ID] int PRIMARY KEY, [C_NAME] varchar(20) REFERENCES CLASS([C_NAME]), --學(xué)生表中的課程名引用課程表中的課程名 [S_NUM] varchar(20) UNIQUE --學(xué)號(hào)必須唯一 ) --示例代碼(表級(jí)) 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é)號(hào)必須唯一 ) -- 18.用代碼創(chuàng)建check 約束(兩種方式)? /* 答:check 約束可以用列級(jí)和表級(jí)兩種方式創(chuàng)建。 */ --示例代碼(列級(jí)) CREATE TABLE Student ( [ID] int PRIMARY KEY, [C_NAME] varchar(20) REFERENCES CLASS([C_NAME]), --
15、學(xué)生表中的課程名引用課程表中的課程名 [S_NUM] varchar(20) UNIQUE, --學(xué)號(hào)必須唯一 [S_AGE] tinyint CHECK([S_AGE]<60) --年齡必須小于歲 ) --示例代碼(表級(jí)) 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é)號(hào)必須唯一 ) -- 19.用代碼實(shí)現(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é)號(hào)唯一約束 -- 20.用代碼實(shí)現(xiàn)查看約束
17、的信息? /*答:查看約束SP_HELPCONSTRAINT 約束名稱 */ --代碼示例: SP_HELPCONSTRAINT CK_S_AGE --查看學(xué)號(hào)唯一約束 -- 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、VARBINAR
18、Y、IMAGE 全局唯一標(biāo)識(shí):UNIQUEIDENTIFIER 大容量數(shù)據(jù)類型:TEXT、NTEXT、IMAGE */ -- 22.SQL語句分類(DDL、DQL、DML、DCL)? /* 答:數(shù)據(jù)定義語言:DDL(Data Definition Language)創(chuàng)建、刪除、修改數(shù)據(jù)庫對(duì)象 如:表、視圖、模式、觸發(fā)器、存儲(chǔ)過程等。 數(shù)據(jù)查詢語言:DQL(Data Query Language)用戶檢索數(shù)據(jù)庫的。 數(shù)據(jù)操縱語言:DML(Data Manipulation Language)用于添加、修改、刪除存儲(chǔ)在
19、 數(shù)據(jù)庫對(duì)象中的數(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表示自動(dòng)編號(hào),自增長(zhǎng)。 */ -- 24.uniqueidentif
20、ier是什么意思?如何生成? /* 答:uniqueidentifier表示全球唯一標(biāo)識(shí)。用SELECT NEWID()生成 */ --代碼示例: SELECT NEWID() AS 全球唯一標(biāo)識(shí) -- 25.默認(rèn)值創(chuàng)建?綁定默認(rèn)值?取消綁定默認(rèn)值? /* 答:創(chuàng)建默認(rèn)值有兩種: a)創(chuàng)建表的時(shí)候附帶創(chuàng)建 b)使用CREATE DEFAULT 關(guān)鍵字 區(qū)別:后再獨(dú)立于表存在,前者必須要有表。 綁定默認(rèn)值:使用sp_bindefault 默認(rèn)值名,表名.列名。 注意:只有使用CREATE DEFAULT
21、關(guān)鍵字才需要綁定。 取消綁定默認(rèn)值:使用sp_unbindefault 默認(rèn)值名,表名.列名。 注意:只有使用CREATE DEFAULT 關(guān)鍵字才需要綁定。 */ --代碼示例:創(chuàng)建表的時(shí)候附帶創(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)存儲(chǔ)過程 取消綁定規(guī)則SP_UNBINDRULE系統(tǒng)存儲(chǔ)過程 */ --代碼示例:使用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)存儲(chǔ)過程:SP_ADDTYPE */ --代碼示例:創(chuàng)建一個(gè)身份證的數(shù)據(jù)類型(為字符)且不允許為空 SP_ADDTYPE IdCard,'varchar(18)','NOT NULL' -- 28.Select查詢執(zhí)行順序? /* 答:.執(zhí)行FROM字句,根據(jù)FRO
24、M字句后面的一個(gè)或多個(gè)表創(chuàng)建工作表。 如果是多個(gè)表,將對(duì)表進(jìn)行交叉連接。 如果只有一個(gè)表,就直接作為工作表。 2.如果有WHERE字句,根據(jù)WHERE字句搜索滿足條件的行。 3.如果有GROUP BY字句,會(huì)對(duì)第二步產(chǎn)生的結(jié)果集進(jìn)行分組匯總。 4.如果有HAVING字句,會(huì)對(duì)第三步產(chǎn)生的結(jié)果集進(jìn)行組篩選。 5.如果有DISTINCT、TOP關(guān)鍵字,將在第四步的基礎(chǔ)上進(jìn)行過濾,去掉重復(fù)的行。 6.如果有ORDER BY字句,會(huì)在第五步的基礎(chǔ)上進(jìn)行排序。 7.顯示查詢結(jié)果。 */ --29.數(shù)據(jù)庫中的表
25、關(guān)系有哪幾種?分別是什么? /* 答:分四種(一對(duì)一、一對(duì)多、多對(duì)一、多對(duì)多) 多對(duì)多:必須要分表,分解成兩個(gè)多對(duì)一 舉例:如學(xué)生和課程是多對(duì)多關(guān)系,新增一個(gè)學(xué)生選修課程表。 學(xué)生和學(xué)生選修課程表是一對(duì)多關(guān)系 課程和學(xué)生選修課程表是一對(duì)多關(guān)系 */ --30.級(jí)聯(lián)刪除、更新的關(guān)鍵字是什么?并寫出代碼? /* 答:級(jí)聯(lián)刪除關(guān)鍵字:ON DELETE CASCADE 級(jí)聯(lián)更新關(guān)鍵字:ON UPDATE CASCADE 代碼示例如下: */ --修改表添加級(jí)聯(lián)刪除、級(jí)聯(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)連接(以兩個(gè)表中匹配的記錄為準(zhǔn)) LEFT JOIN/LEFT OUTER JOIN:(以左邊的表中有的記錄為準(zhǔn)) RIGHT JOIN/RIGHT OUTER JOIN:(以右邊的表中有的記錄為準(zhǔn)) FULL JO
27、IN/FULL OUTER JOIN:(以兩邊的表只要有一個(gè)表有的記錄即可) CROSS JOIN:(兩個(gè)表的記錄的笛卡爾積) */ --32.消除重復(fù)行的關(guān)鍵字是什么? /* 答:DISTINCT(放在SELECT關(guān)鍵字后面) */ --33.分組時(shí)既能顯示明細(xì)記錄又能顯示匯總值的關(guān)鍵字是什么? --請(qǐng)寫一個(gè)示例代碼? /* 答:關(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中的通配符有幾種?每種的含義是什么? /* 答: '_' 表示一個(gè)任意字符; '%' 表示-N個(gè)任意字符; '[ABC]'表示A或B或C中的一個(gè)任意字符,常與'%'連用; '[^ABC]'表示不是A且B且C中的一個(gè)任意字符,常與'%'連用; */ --35.Rollup和CUBE的相同點(diǎn)和異同點(diǎn)是什么? /* 答:都是對(duì)分組(GROUP)中的匯總結(jié)果集的擴(kuò)展。 CUBE的擴(kuò)展要比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)計(jì)班級(jí)每個(gè)學(xué)生與班級(jí)平均年齡的差值 --相關(guān)子查詢 SELECT *, (SELECT AVG(S_age) FROM student) AS '班級(jí)平均年齡', S_age - (SELECT AVG(S_age) FROM student) AS '差值' FROM st
32、udent --37.子查詢的意義和寫子查詢的注意事項(xiàng)? /* 答:子查詢的意義:簡(jiǎn)化復(fù)雜的查詢, 將一個(gè)復(fù)雜的查詢邏輯上分解成幾個(gè)簡(jiǎn)單的查詢。 子查詢的注意事項(xiàng): 1.帶有小括號(hào) 2.可以在很多地方使用 a)使用別名時(shí); b)使用IN或NOT IN時(shí); c)使用UPDATE、INSERT、DELETE語句時(shí); e)使用比較運(yùn)算符時(shí); f)使用ANY、SOME、ALL時(shí); g)使用EXIST
33、或NOT EXIST時(shí); h)使用表達(dá)式的地方。 */ --38.關(guān)鍵字SOME、ALL的含義?請(qǐng)寫出代碼示例? /* 答:SOME、ALL都是和比較運(yùn)算符(>、>=、<、<=、!=、<>、=)聯(lián)用, 用于比較SOME、ALL字查詢所返回的值。 */ --示例:查找年長(zhǎng)(年齡在平均年齡之上)的學(xué)生的信息 SELECT * FROM u_student WHERE [AGE] > ALL(SELECT AVG(ISNULL([AGE],0)) FROM u_student) --39.關(guān)鍵字IN的含義?請(qǐng)寫出代碼示例? /* 答:
34、關(guān)鍵字IN表示在...里 */ --示例:查找姓名等于張三或李四的學(xué)生的記錄 SELECT * FROM u_student WHERE [NAME] in ('張三','李四') --40.視圖分為哪三類?請(qǐng)寫出代碼示例? /* 答:?jiǎn)伪硪晥D:數(shù)據(jù)只來源于一個(gè)表。 多表視圖:數(shù)據(jù)只來源于多個(gè)表。 嵌套視圖:數(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)缺點(diǎn)是什么? /* 答:視圖優(yōu)點(diǎn): 1.簡(jiǎn)化查詢操作 2.隱蔽敏感數(shù)據(jù),提高安全性 3.定制數(shù)據(jù) 4.數(shù)據(jù)的查詢和存儲(chǔ)分離 視圖缺點(diǎn): 1.性能較低 2.更新受限:SELECT語句中使用了HAVING、GROUP BY、TOP、DISTINCT、 計(jì)算列、聚合函數(shù)關(guān)鍵字后就不能更新 */ --42.索引的作用是什么?索
36、引分為哪兩類?它們的區(qū)別是什么?請(qǐng)寫出代碼示例? /* 答:索引的作用是用來優(yōu)化查詢,提高查詢速度的。 索引分為聚集索引(簇索引)或非聚集索引(非簇索引) 區(qū)別:.聚集索引的頁級(jí)頁存放的是實(shí)際的數(shù)據(jù)而 非聚集索引得頁級(jí)頁存放的是索引信息,這些索引信息存放在索引頁中。 2.非聚集索引可以建立在數(shù)據(jù)堆上也可以建立在聚集索引上。 3.唯一索引屬于非聚集索引,但比非聚集索引多了一個(gè)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語句是什么?請(qǐng)寫出代碼示例? /* 答:查看表的索
38、引的SQL語句是SP_HELPINDEX 表名 */ --代碼示例 SP_HELPINDEX Class --44.重新整理索引的SQL語句是什么?請(qǐng)寫出代碼示例? /* 答:重新整理索引的SQL語句是DBCC INDEXDEFRAG(數(shù)據(jù)庫名稱,表名,索引名) DBCC 是一個(gè)數(shù)據(jù)庫工具集 */ --代碼示例 DBCC INDEXDEFRAG(Demo_20091230NEW,Class,PK__Class__49C3F6B7) --45.SQL的盤區(qū)分為哪兩種,它們的區(qū)別是什么? /* 答:SQL的盤區(qū)分:統(tǒng)一擴(kuò)展盤區(qū)和混合擴(kuò)展盤區(qū)。 統(tǒng)
39、一擴(kuò)展盤區(qū):只存放一種類型數(shù)據(jù)頁。 混合擴(kuò)展盤區(qū):存放二種或兩種以上的數(shù)據(jù)頁。 --46.SQL的數(shù)據(jù)頁一共有幾種?分別是什么? /* 答:SQL的數(shù)據(jù)頁一共有八種。數(shù)據(jù)頁、索引頁、文本\圖像頁、可用空間頁、 全局分配映射表、輔助全局分配映射表、索引分配映射表、 大容量差異映射表\大容量差異更改映射表。 數(shù)據(jù)頁:存放真實(shí)的數(shù)據(jù)。 索引頁:存放索引數(shù)據(jù),如非聚集索引的頁級(jí)頁。 文本\圖像頁:存放大容量數(shù)據(jù)類型,如Image、te
40、xt、ntext。 可用空間頁:數(shù)據(jù)庫中數(shù)據(jù)頁的使用情況,表示沒有使用,表示使用。 */ --47.E-R(Entity-Relationship)模型的三要素是什么? /* 答:E-R(Entity-Relationship)模型的三要素是:實(shí)體、關(guān)系、屬性。 實(shí)體:真實(shí)存在的事物。(客戶為了完成自己的業(yè)務(wù)目標(biāo)需要用到的人或事物) 關(guān)系:實(shí)體間的關(guān)系:有一對(duì)一、一對(duì)多、多對(duì)一、多對(duì)多(需要分表) 屬性:實(shí)體的特征,可映射成數(shù)據(jù)庫中的列。 --48.數(shù)據(jù)庫設(shè)計(jì)的過程分為哪幾個(gè)步驟? /* 答:數(shù)據(jù)庫的設(shè)計(jì)過程大致可分為個(gè)步驟:
41、 a)需求分析:調(diào)查和分析用戶的業(yè)務(wù)活動(dòng)和數(shù)據(jù)的使用情況, 弄清所用數(shù)據(jù)的種類、范圍、數(shù)量以及它們?cè)跇I(yè)務(wù)活動(dòng)中交流的情況, 確定用戶對(duì)數(shù)據(jù)庫系統(tǒng)的使用要求和各種約束條件; b)概念設(shè)計(jì):用戶要描述的現(xiàn)實(shí)世界的概念數(shù)據(jù)模型; c)邏輯設(shè)計(jì):主要工作是將現(xiàn)實(shí)世界的概念數(shù)據(jù)模型設(shè)計(jì)成數(shù)據(jù)庫; d)物理設(shè)計(jì):確定數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)。 */ --49.關(guān)鍵字UNION /UNION ALL的含義?請(qǐng)寫出代碼示例? /* 答:關(guān)鍵字UNION /UNION ALL表示連接兩個(gè)表的內(nèi)容進(jìn)行查詢
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的含義?請(qǐng)寫出代碼示例? /* 答:關(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è)計(jì)的前期創(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í)的數(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)鍵字是什么?請(qǐng)寫出示例
46、代碼? /* 答:定義局部變量的關(guān)鍵字DECLARE */ --示例代碼:定義一個(gè)整型的局部變量。 DECLARE @Temp AS int --55.給變量賦值有哪些方法?請(qǐng)寫出示例代碼? /* 答:給變量賦值有種,分別用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ù)有哪些?請(qǐng)寫出示例代碼? /*
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的定義是什么?請(qǐng)寫出示例代碼? /* 答:@@RowCount定義:返回受上一語句影響的行數(shù)。 @@IDENT
48、ITY定義:返回最后插入的自增長(zhǎng)值(一定要包含自增長(zhǎng)列) @@ERROR定義:返回最后執(zhí)行的Transact-SQL 語句的錯(cuò)誤代碼。 */ --示例代碼:@@RowCount SELECT * FROM StudentClass sc --查詢StudentClass表 SELECT @@RowCount AS 上一行語句影響的條數(shù) --顯示StudentClass表的記錄數(shù) --示例代碼:@@IDENTITY --先決條件:操作的表中一定要含有自增長(zhǎng)列, --否則@@IDENTITY全局變量一直顯示為NULL INSERT INTO Stude
49、ntClass --往StudentClass中插入記錄 VALUES (1357,1) SELECT @@IDENTITY AS 最后的自增長(zhǎng)ID號(hào) --示例代碼:@@ERROR priny 1 --編寫一行錯(cuò)誤的SQL語句 SELECT @@ERROR AS 最后一行SQL語句的錯(cuò)誤編號(hào) --查詢最后一行SQL語句的錯(cuò)誤編號(hào) --58.SQL中表示循環(huán)的關(guān)鍵字有哪些?請(qǐng)寫出示例代碼? /* 答:SQL中表示循環(huán)的關(guān)鍵字有:WHILE關(guān)鍵字 */ --示例代碼: DECLARE @COUNT AS int
50、 --定義一個(gè)計(jì)數(shù)器 SET @COUNT = 1 --初始化計(jì)數(shù)器 WHILE @COUNT < 4 --循環(huán)打印循環(huán)變量 BEGIN PRINT @COUNT SET @COUNT = @COUNT + 1 END --59.關(guān)鍵字break與關(guān)鍵字Continue的區(qū)別是什么?請(qǐng)寫出示例代碼? /* 答:關(guān)鍵字break:結(jié)束全部循環(huán) 關(guān)鍵字Continue:跳過本次循環(huán),進(jìn)入下一次循環(huán) */ --示例代碼: DECLARE @COUNT AS int
51、 --定義一個(gè)計(jì)數(shù)器 SET @COUNT = 1 --初始化計(jì)數(shù)器 WHILE @COUNT < 4 --循環(huán)打印循環(huán)變量 BEGIN IF @COUNT % 2 = 0 --跳過偶數(shù)循環(huán) BEGIN SET @COUNT = @COUNT + 1 --退出之前要加 CONTINUE --跳過本次循環(huán),進(jìn)入下一次循環(huán) END PRINT @COUNT SET @COUNT = @COUNT + 1 END --示例代碼: D
52、ECLARE @COUNT AS int --定義一個(gè)計(jì)數(shù)器 SET @COUNT = 1 --初始化計(jì)數(shù)器 WHILE @COUNT < 4 --循環(huán)打印循環(huán)變量 BEGIN PRINT @COUNT SET @COUNT = @COUNT + 1 IF @COUNT > 2 --當(dāng)計(jì)數(shù)器大于的時(shí)候結(jié)束循環(huán) BEGIN BREAK --退出循環(huán) END END --60.函數(shù)按照返回值分為幾類?如何調(diào)用?請(qǐng)寫出
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) --定義一個(gè)變量 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ū)別和相同點(diǎn)? /* 答:相同點(diǎn): 1.都要使用CREATE FUNCTION關(guān)鍵字
59、 2.返回關(guān)鍵字都是RETURNS關(guān)鍵字 3.都要使用AS關(guān)鍵字作為函數(shù)體開始的標(biāo)識(shí) 不同點(diǎn): 1.返回值類型不同。 2.調(diào)用方式不同。 */ --62.查看函數(shù)內(nèi)容的腳本關(guān)鍵字是什么? /* 答:SP_HELPTEXT 函數(shù)名 */ --代碼示例: SP_HELPTEXT Fn_DSM_GetStudentIntoByStudentID -- 63.創(chuàng)建存儲(chǔ)過程的關(guān)鍵字是什么?請(qǐng)寫出示例代碼? /* 答:創(chuàng)建存儲(chǔ)過程的關(guān)鍵字是:Create Proc */ --------------------------擴(kuò)展
60、存儲(chǔ)過程示例------ 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)存儲(chǔ)過程示例------ Sp_Helptext xp_sscanf -------------------------用戶存
61、儲(chǔ)過程示例------ 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.存儲(chǔ)過程和函數(shù)的區(qū)別是什么? /* 答:函數(shù)與存儲(chǔ)過程的相同點(diǎn):.預(yù)先編譯 2.分為物理與臨時(shí)的
62、 3.都可以提高SQL腳本安全性 區(qū)別:.函數(shù)必須又返回值,而存儲(chǔ)過程可以沒有返回值 2.函數(shù)的返回值只有一個(gè),存儲(chǔ)過程的返回值可以有多個(gè)且類型可以不一樣 */ -- 65.什么是存儲(chǔ)過程?存儲(chǔ)過程的優(yōu)點(diǎn)是什么? /* 答:存儲(chǔ)過程Stored Procedure:是一組為了完成特定功能的SQL語句集經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫中用戶通過指定存儲(chǔ)過程的名字并給出參數(shù)如果該存儲(chǔ)過程帶有參數(shù)來執(zhí)行它 存儲(chǔ)過程的優(yōu)點(diǎn): 1.實(shí)現(xiàn)組件化編程 2.提高執(zhí)行效率 3.減少網(wǎng)絡(luò)流量 4.提高安全性 存儲(chǔ)過程特點(diǎn): 1.預(yù)先編譯(速度快) 2.安
63、全性高 3.兼容性好(便于跨用) 4.可以重復(fù)使用 5.移植性差(缺點(diǎn)) 6.調(diào)用與聲明參數(shù)必須一一匹配 */ -- 66.存儲(chǔ)過程分為幾類? /* 答:存儲(chǔ)過程分類: 1.xp_擴(kuò)展存儲(chǔ)過程(系統(tǒng)自帶,也可自己編寫) 2.SP_系統(tǒng)存儲(chǔ)過程(系統(tǒng)自帶) 3.UP_用戶存儲(chǔ)過程 A.物理 B.臨時(shí)(局部:#、全部:##) */ -- 67.存儲(chǔ)過程加密和重新編譯的關(guān)鍵字是什么? /* 答:存儲(chǔ)過程的加密: With encryption(加密) Sp_decrypt(解密) 存儲(chǔ)過程重新編譯: sp_recompile
64、 */ --示例 Create Proc UP_GetStudent With encryption as select * from Student Drop Proc UP_GetStudent--刪除 --測(cè)試存儲(chǔ)過程 Sp_HelpText UP_GetStudent -- 68.查看存儲(chǔ)過程、重命名存儲(chǔ)過程的腳本是什么? /* 答:查看存儲(chǔ)過程:sp_helptext 重命名存儲(chǔ)過程:sp_rename 原存儲(chǔ)過程名,新存儲(chǔ)過程名 */ --示例 sp_Rename UP_GetStudent,UP_GetStudentIfo --
65、69.什么是觸發(fā)器?觸發(fā)器的分類是什么?寫出示例代碼? /* 答:觸發(fā)器trigger: 1.是特殊的存儲(chǔ)過程(自己觸發(fā)), 它在表的數(shù)據(jù)發(fā)生變化時(shí)起作用, 可以維護(hù)數(shù)據(jù)的完整性 2.觸發(fā)器是建立在表之上的, 而約束可以建立在表上與列上, 他們都是維護(hù)數(shù)據(jù)的完整性,都是數(shù)據(jù)庫的對(duì)象 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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 市教育局冬季運(yùn)動(dòng)會(huì)安全工作預(yù)案
- 2024年秋季《思想道德與法治》大作業(yè)及答案3套試卷
- 2024年教師年度考核表個(gè)人工作總結(jié)(可編輯)
- 2024年xx村兩委涉案資金退還保證書
- 2024年憲法宣傳周活動(dòng)總結(jié)+在機(jī)關(guān)“弘揚(yáng)憲法精神推動(dòng)發(fā)改工作高質(zhì)量發(fā)展”專題宣講報(bào)告會(huì)上的講話
- 2024年XX村合作社年報(bào)總結(jié)
- 2024-2025年秋季第一學(xué)期初中歷史上冊(cè)教研組工作總結(jié)
- 2024年小學(xué)高級(jí)教師年終工作總結(jié)匯報(bào)
- 2024-2025年秋季第一學(xué)期初中物理上冊(cè)教研組工作總結(jié)
- 2024年xx鎮(zhèn)交通年度總結(jié)
- 2024-2025年秋季第一學(xué)期小學(xué)語文教師工作總結(jié)
- 2024年XX村陳規(guī)陋習(xí)整治報(bào)告
- 2025年學(xué)校元旦迎新盛典活動(dòng)策劃方案
- 2024年學(xué)校周邊安全隱患自查報(bào)告
- 2024年XX鎮(zhèn)農(nóng)村規(guī)劃管控述職報(bào)告