日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

SQK学习笔记

發(fā)布時(shí)間:2023/12/10 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQK学习笔记 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

創(chuàng)建數(shù)據(jù)庫(kù)Sales,指定數(shù)據(jù)庫(kù)文件和日志文件 create database Sales on (name='sales_dat',filename='d:\database\Salesdat.mdf', size=10, maxsize=50, filegrowth=5) log on (name='Sales_log',filename='d:\database\salelog.ldf', size=5MB, MAXSIZE=25MB, FILEGROWTH=5MB) 修改數(shù)據(jù)庫(kù)并立即分配空間 alter database Sales add file ( name=Salestest, filename='d:\database\Salestest.mdf', size=5mb, maxsize=100mb, filegrowth=5mb ) 刪除數(shù)據(jù)庫(kù) drop database Sales 使用變量聲明方式創(chuàng)建臨時(shí)表 declare @tablevar table (Cno int,Cname char(3)) insert into @tablevar values(1,'abc') select * from @tablevar select @@SERVERNAME --顯示當(dāng)前服務(wù)器名 exec sp_dropserver 'shenymce\shenymce' --刪除當(dāng)前服務(wù)器名 exec sp_addserver 'shenymce',’local’ --新建數(shù)據(jù)庫(kù)服務(wù)器名只針對(duì)于以機(jī)器命名的服務(wù)器 create database one --創(chuàng)建數(shù)據(jù)庫(kù) use one --打開(kāi)數(shù)據(jù)庫(kù) create table tt (id int,name char(10))--創(chuàng)建表 create table #T (id int,name char(10)) --創(chuàng)建本地臨時(shí)表 create table ##T (id int,name char(10)) --創(chuàng)建全局臨時(shí)表 select * from tt --顯示表信息 exec sp_rename 'tt','ttt' --修改表名 exec sp_help ttt --顯示表結(jié)構(gòu) alter table ttt add sex bit --添加新列 alter table ttt alter column sex char(2)--修改列 select * from ttt alter table ttt drop column sex --刪除列 exec sp_rename 'ttt.name',username --更改列名 判斷表是否存在 if not exists(select * from sysobjects where [name] = 'ttt' and xtype='U') begin select '測(cè)試' end 修改數(shù)據(jù)庫(kù)名稱 use one go alter database one modify name=測(cè)試 查看數(shù)據(jù)庫(kù)詳細(xì)信息 exec sp_helpdb 測(cè)試 創(chuàng)建數(shù)據(jù)庫(kù)快照 create database test_snap on (name=test,filename='D:\Program Files\Microsoft SQL Server\MSSQL10.SHENYMCE\MSSQL\DATA\test_!.mdf') as snapshot of test name后的test和of 后的test都是源數(shù)據(jù)庫(kù)锃 filename后跟的是新建快照的文件路徑不可以與源數(shù)據(jù)庫(kù)的路徑相同 還原快照 restore database test--數(shù)據(jù)庫(kù)名 from database_snapshot = 'test_snap'--快照名 刪除數(shù)據(jù)庫(kù)快照 drop database test_snap --刪除數(shù)據(jù)庫(kù)快照與刪除數(shù)據(jù)庫(kù)類似 創(chuàng)建臨時(shí)表 CREATE TABLE #MyTempTable (cola INT PRIMARY KEY);--本地臨時(shí)表,表名前加‘#’ INSERT INTO #MyTempTable VALUES (1);--全局臨時(shí)表,表名前加‘##’ 除非使用 DROP TABLE 顯式刪除臨時(shí)表,否則臨時(shí)表將在退出其作用域時(shí)由系統(tǒng)自動(dòng)刪除: --創(chuàng)建規(guī)則 create rule age as @age between 0 and 100 --綁定規(guī)則 sp_bindrule age,'tt.shuxue'--參數(shù):規(guī)則名,參數(shù):對(duì)應(yīng)表的列名 解除綁定 sp_unbindrule 'tt.shuxue'--對(duì)指定列解除規(guī)則綁定 刪除規(guī)則 drop rule age--刪除規(guī)則,只有不綁定任何列的規(guī)則才可以被刪除 創(chuàng)建視圖 create view v_info as select a.name,b.shuxue,b.yuwen,b.zongfeng from info as a,tt as b where a.id=b.id 創(chuàng)建索引(下面創(chuàng)建的是一個(gè)唯一非聚集索引) create unique nonclustered index i_info on info(xuehao) 創(chuàng)建架構(gòu) create schema one authorization [guest] --one架構(gòu)名guest所有者 分組 id?sx yw?zf?sex 110??? 20??? 30??? boy?????? 230??? 40??? 70??? girle???? 344??? 33??? 77??? boy?????? 455??? 66??? 121?boy?????? 577??? 88??? 165?girle???? select sum(shuxue) as sxzf,sex from tt group by rollup (sex) sxzf?sex 109boy?????? 107girle???? 216NULL Group by 有二個(gè)關(guān)鍵字rollup和 cube Having 子句 select sum(shuxue) as sxzf,sex from tt group by (sex) having sum(shuxue)>=108 update 中的from 子句 update info set zongfeng=b.shuxue+b.yuwen from info a join tt b on a.id=b.id 上面語(yǔ)句的含義是,當(dāng)info表中的id=tt表中的id時(shí)從tt表中更新info表中的zongfeng, (join on 對(duì)二表進(jìn)行關(guān)聯(lián)) compute by 子句 (統(tǒng)計(jì)) select * from tt order by sex compute sum(zongfeng),avg(zongfeng),max(zongfeng),min(zongfeng) by sex 上面是對(duì)TT表中的zongfeng字段按sex分類,分別進(jìn)行求和,平均值,最大值,最小值進(jìn)行統(tǒng)計(jì) 注意:在使用by子句時(shí),需要先使用ORDER BY進(jìn)行排序 select top 10 percent * from tt --顯示前百分之十的記錄 使用變量 declare @i int set @i=2 select top (@i) * from tt with ties 子句(只有使用了order by 子句才可以使用) select top 1 with ties * from tt order by sex—如果滿足條件的最后一條記錄有重復(fù)記錄,那么重復(fù)的記錄也將顯示 基本的多表連接 select b.name,a.shuxue,a.yuwen,a.zongfeng from tt a, info b where a.id=b.id 內(nèi)連接(全匹配,不匹配的不顯示) select b.name,a.shuxue,a.yuwen,a.zongfeng from tt a join info b on a.id=b.id--后可以接where子句,條件放大on與放在where后面結(jié)果一樣 where a.zongfeng > 40 左外連接--左表為主表(外連接分為左,右,全三種外連接,按主表匹配,不匹配的補(bǔ)空) select b.name,a.shuxue,a.yuwen,a.zongfeng from tt a left join info b on a.id=b.id--后可以接where子句,條件放大on與放在where后面結(jié)果不同 where a.zongfeng > 40 右外連接—右表為主表使用right outer join on(左外連接與右外連接只是主從表互換) 全連接 full outer join on 交叉連接(返回二表中記錄的秉積,功能與基本連接類似,cross join) 自連接 聯(lián)合查詢(相當(dāng)于將多個(gè)查詢語(yǔ)句統(tǒng)一到一個(gè)查詢語(yǔ)句中) select shuxue,yuwen,'' from tt where sex='boy' union select sum(shuxue),sum(yuwen),'總分' from tt where sex='boy' 子查詢 select a.name,b.zongfeng,b.sex from info a, tt b where a.id=b.id and a.zongfeng=(select MIN(zongfeng) from tt) EXISTS關(guān)鍵字,判斷查詢的結(jié)果是否為真 declare @username varchar(10) declare @pwd varchar(10) set @username='shen' set @pwd='boy' if exists(select * from tt a,info b where b.name=@username and a.sex=@pwd and a.id=b.id) print'登錄成功!' else print'登錄失敗' 交查詢(查詢二個(gè)查詢語(yǔ)句中的交集 intersect ,第一個(gè)查詢語(yǔ)句后不可以跟order by子句,第二個(gè)不用嵌套進(jìn)行查詢的話,將對(duì)整個(gè)查詢語(yǔ)句進(jìn)行排序) select a.zongfeng,a.sex,b.name,b.xuehao from tt a, info b where a.sex='girle'?and a.id=b.id intersect select c.zongfeng,c.sex,c.name,c.xuehao from( select top 3 a.zongfeng,a.sex,b.name,b.xuehao from tt a, info b where a.id=b.id order by a.zongfeng desc )c 差查詢(先對(duì)第一個(gè)查詢語(yǔ)句進(jìn)行查詢,在第一個(gè)查詢結(jié)果的基礎(chǔ)上再減去第二個(gè)查詢語(yǔ)句與之相交的記錄) select a.zongfeng,a.sex,b.name,b.xuehao from tt a, info b where a.sex='girle'?and a.id=b.id EXCEPT select c.zongfeng,c.sex,c.name,c.xuehao from( select top 3 a.zongfeng,a.sex,b.name,b.xuehao from tt a, info b where a.id=b.id order by a.zongfeng desc )c XML查詢 create table xml_table ( s_id int, s_data xml ) insert into xml_table values ( 1, '<學(xué)生信息><姓名>陳苗</姓名><性別>男</性別><班級(jí)>計(jì)算機(jī)應(yīng)用班</班級(jí)></學(xué)生信息>' ) select * from xml_table declare @date xml set @date = (select s_data from xml_table where s_id=1) select @date.query('學(xué)生信息/姓名') 姓名 ,@date.query('學(xué)生信息/性別') 性別,@date.query('學(xué)生信息/班級(jí)') 班級(jí) FOR XML(將查詢結(jié)果保存到表中,有四種模式,分別是RAW,AUTO,EXPLICIT,PATH) select a.zongfeng,a.sex,b.name,b.xuehao from tt a, info b where?a.id=b.id for xml path T-SQL中的邏輯運(yùn)算符 ALL/ANY/AND/NOT/BETWEEN/SOME/LIKE/IN/EXISTS/OR T-SQL中的基本運(yùn)算符 + / - / * / / / % T-SQL中的注釋 單選注釋--這是單行注釋 多行注釋 /* 這里是多行注釋的內(nèi)容 */ 在嵌套語(yǔ)句中包含多條語(yǔ)句 可以使用 begin end 將多條語(yǔ)句包括在其中 Case語(yǔ)句必須有一個(gè)變量來(lái)接受他的結(jié)果 declare @one int declare @two varchar(20) set @one=3 select @two = case @one when 1 then '結(jié)果是' when 2 then '結(jié)果是' else '不知道是什么' end print @two declare @num int ,@i int set @i=1 set @num=0 while (@i<100) begin if @i%2=1 begin set @num=@num+@i set @i=@i+1 print '@i=' print @i print '@num=' print @num continue end else begin if @i>10 break set @i=@i+1 print @i continue end end print @num 等待執(zhí)行命令 WAITFOR waitfor delay '00:00:05'--跟間隙時(shí)間 print '5秒后執(zhí)行了' waitfor time '11:07:00' --跟具體時(shí)間 print '11:07分執(zhí)行的' goto 跳轉(zhuǎn)語(yǔ)句 declare @i int set @i=1 while @i<110 begin if @i=1 goto one--跳轉(zhuǎn)到指定標(biāo)記 if @i>1 and @i<5?goto two end one: print '等于' two:--定義一個(gè)標(biāo)記 print '大于小于' goto three three: print'下一次就要大于五了' try catch 錯(cuò)誤處理語(yǔ)句 declare @i int begin try set @i=1/0 end try begin catch print ERROR_LINE() print ERROR_MESSAGE() print '除數(shù)不可以為0' end catch 結(jié)果 3 遇到以零作除數(shù)錯(cuò)誤。 除數(shù)不可以為0 數(shù)學(xué)函數(shù) declare @i float,@a int set @i=12.234 set @a=100 select round(@i,2)as 保留位小數(shù),CEILING(@i) as 大于@I的最小整數(shù), FLOOR(@i)as 小于@I的最大整數(shù),SQUARE(@a) as 平方 ,SQRT(@a) as 開(kāi)方, POWER(@a,3) as 三次冪 字符串函數(shù) declare @str varchar(44) set @str='happy a life' select UPPER(@str) 變大寫(xiě), ASCII('a') 求ASCII, CHAR(55)查看對(duì)應(yīng)字符, STR(10)+'12' 變字符, REPLACE(@str,' a' ,' all') 替換,REPLICATE('a',5)重復(fù), CHARINDEX('a',@str) 查找字符串起始位置 ,PATINDEX('a%p',@str+'a') 使用通配符 聚合函數(shù) AVG SUM MAX MIN COUNT 日期函數(shù) SELECT GETDATE() 現(xiàn)在日期, YEAR(GETDATE())年 ,month(GETDATE())月 ,day(GETDATE())日,DATEADD(dd,30,GETDATE())相差, DATEDIFF(DD,GETDATE(),'2011-1-25')距離 元數(shù)據(jù) declare @a varchar(10) set @a='10' print Isnumeric(@a)--判斷是否為數(shù)字 print convert(int,@a*12)--強(qiáng)制類型轉(zhuǎn)換 print isnull(@a,'為空時(shí)返回的值')--是否為空值 標(biāo)量值函數(shù) CREATE FUNCTION onefun(@a int) --定義函數(shù) RETURNS int--返回類型 AS BEGIN declare @num int,@sum int set @num=1 set @sum=0 while @num<@a begin set @num=@num+1 set @sum=@sum+@num end return @sum --返回值 END GO 游標(biāo)的操作 --創(chuàng)建游標(biāo) declare one_cursor scroll cursor for select * from tt for read only open one_cursor--打開(kāi)游標(biāo) --檢索游標(biāo) FIRST 第一行 LAST 最后行 PRIOR 前一行 NEXT 下一行 ABSOLUTE N 第N行RELATIVE N 當(dāng)前行后N行 fetch RELATIVE 2 from one_cursor select @@FETCH_STATUS?--返回游標(biāo)狀態(tài),成功-1失敗-2行不存在 CLOSE?ONE_CURSOR--關(guān)閉游標(biāo) deallocate one_cursor--釋放游標(biāo) 事務(wù) 事務(wù)模式:自動(dòng)提交事務(wù),顯式事務(wù)(以BIGIN TRANSACTION 語(yǔ)句顯式開(kāi)始),隱式事務(wù),批處理級(jí)事務(wù) 事務(wù)管理語(yǔ)句 BEGIN TRANSACTION?開(kāi)始事務(wù) COMMIT TRANSACTION?提交事務(wù) ROLLBACK TRANSACTION?回滾事務(wù) SAVE TRANSACTION?保存事務(wù) begin TRANSACTION declare @fight int set @fight=0 delete from info where id=2 if @fight = 0 begin commit transaction --提交事務(wù) end else rollback transaction --回滾事務(wù) XACT_ABORT 選項(xiàng) 錯(cuò)誤是否自動(dòng)回滾 set xact_abort on 鎖(封鎖 LOCK 解鎖 UNLOCK) 可封鎖的單位有:行,頁(yè),表,盤(pán)區(qū)和數(shù)據(jù)庫(kù) 鎖的類型 共享(S)鎖 用于讀操作,多個(gè)事務(wù)共用 獨(dú)占(X)鎖,用于寫(xiě)操作,僅一個(gè)事務(wù)使用 更新(U)鎖 用于對(duì)頁(yè)施加X(jué)鎖 死鎖(兩個(gè)或多個(gè)進(jìn)程因爭(zhēng)奪資源而造成互相等待的現(xiàn)象) 存儲(chǔ)過(guò)程 create procedure proc_1?--創(chuàng)建存儲(chǔ)過(guò)程 @one varchar(10) --設(shè)置參數(shù),在此賦值可以設(shè)置默認(rèn)值 @two varchar(10)=’boy’ as select * from tt where sex=@one exec proc_1 'boy'?--調(diào)用存儲(chǔ)過(guò)程 存儲(chǔ)過(guò)程中的輸出參數(shù) create procedure proc_1?--創(chuàng)建存儲(chǔ)過(guò)程 @one int, --設(shè)置參數(shù) @two int output --設(shè)置輸出參數(shù) as select @two=zongfeng from tt where?id=@one declare @two int exec proc_1 'boy' ,@two output --調(diào)用存儲(chǔ)過(guò)程,注意調(diào)用方式 select @two exec sp_helptext proc_1 –查看存儲(chǔ)過(guò)程內(nèi)容 create proc #show??? --創(chuàng)建臨時(shí)存儲(chǔ)過(guò)程 as select * from info create proc #show??? --創(chuàng)建全局臨時(shí)存儲(chǔ)過(guò)程 as select * from info 使用alter proc關(guān)鍵字修改存儲(chǔ)過(guò)程 使用drop proc關(guān)鍵字刪除存儲(chǔ)過(guò)程

轉(zhuǎn)載于:https://blog.51cto.com/shenymce/579754

總結(jié)

以上是生活随笔為你收集整理的SQK学习笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。