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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常用sql 全记录(添加中)

發布時間:2025/3/17 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常用sql 全记录(添加中) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

--?數據庫SQL總結中...........

--SQL分類:?
(CREATE,ALTER,DROP,DECLARE) ---DDL—數據定義語言
(SELECT,DELETE,UPDATE,INSERT) ---DML—數據操縱語言
(GRANT,REVOKE,COMMIT,ROLLBACK) --DCL—數據控制語言
--設置內存選項
--設置 min server memory 配置項
EXEC sp_configure N'min server memory (MB)', 0

--設置 max server memory 配置項
EXEC sp_configure N'max server memory (MB)', 256

--使更新生效
RECONFIGURE WITH OVERRIDE
------設置內存選項

--創建數據庫,指定日志文件最大大小
CREATE DATABASE karaok
?ON (NAME = N'karaok', FILENAME = N'C:/Program Files/Microsoft SQL Server/MSSQL/data/karaok.mdf' , SIZE = 200, FILEGROWTH = 10%)
?LOG ON (NAME = N'karaok_log', FILENAME = N'C:/Program Files/Microsoft SQL Server/MSSQL/data/karaok_log.LDF', SIZE = 200, FILEGROWTH = 10%, MAXSIZE = 2000)
Go
--備份數據庫
USE master
exec sp_addumpdevice? 'disk', 'QuickChainTY20091210', 'D:/Program Files/Microsoft SQL Server/BACK/QuickChainTY20091210.BAK'
BACKUP DATABASE QuickChainTY TO QuickChainTY20091210
--備份數據庫日志
exec sp_addumpdevice? 'disk', 'QuickChainTYLog20091210', 'D:/Program Files/Microsoft SQL Server/BACK/QuickChainLogTY20091210.BAK'
BACKUP LOG QuickChainTY TO QuickChainTYLog20091210

--備份?
declare? @sql? varchar(8000)??
set? @sql='backup? database? mis??? to? disk=''d:/databack/mis/mis'??
+rtrim(convert(varchar,getdate(),112))+'.bak'''??
exec(@sql)????
--刪除15天前備份文件??
set? @sql='del? d:/databack/mis/mis'??
+rtrim(convert(varchar,getdate()-15,112))+'.bak'''??
exec? master..xp_cmdshell? @sql
GO
--創建表、試圖、存儲過程、函數
create table newtable (columnid int primary key ,columnname char(20)? not null )
create table newtable (columnid int identity(1,1))
select * into newtable from oldtable
create view viewname
create procedure pro_name
(@a varchar,
?@b int =1)
create FUNCTION f_GetCustomerName(@CustomerCode varchar(32))
RETURNS varchar(128)
AS
BEGIN
?declare @Name varchar(128)
?select @Name=Name from ComCustomer where?CustomerCode=@CustomerCode
?set @Name=IsNull(@Name,@CustomerCode)
?RETURN @Name
END
--刪除表、試圖、存儲過程、函數
drop table tablename
drop view viewname
drop proc procedurename
drop function functionname
---修改表
alter table tablename add columnnew varchar(100)default ('')--添加列
alter table tablename add createdate datetime? null default? getdate() with values
alter table tablename drop columnold --刪除列
alter table tablenaem add column_a? varchar(200) null constraint yueshu unique--添加約束
---填充數據或創建表
insert into a (aa,bb,cc)values (1,2,3)
insert a select 1,2,3
?---要求目標表newtable不存在,因為在插入時會自動創建表newtable,并將oldtable中指定字段數據復制到newtable中。
select * into newtable from oldtable
select top 0 * into newtable from oldtable
--要求目標表Table2必須存在,由于目標表Table2已經存在,所以我們除了插入源表Table1的字段外,還可以插入常量
Insert into Table2(field1,field2) select value1,value2 from Table1
--刪除數據
delete from tablename --記錄被刪除的每行數據操作日志
truncate table tablename--釋放整頁不記錄操作日志(初始化表tablename )
--修改表中的數據
update tablename set id=232 where id=1
update tablename set quantity=(select quantity from sectable a where a.id=tablename.id )

---將aaa表中的數據更新到psy_t_markinfo表中

update psy_t_markinfo set UserDef1=(select UserDef1 from aaa where aaa.MarkID=psy_t_markinfo.MarkID)
--收縮數據庫表
dump?? transaction? tablename?? with?? no_log??

truncate,delete,drop--的異同點???
?/*
? truncate,delete,drop的異同點???????
? 注意:這里說的delete是指不帶where子句的delete語句?????
????????
? 相同點:truncate和不帶where子句的delete,?? 以及drop都會刪除表內的數據???????
? 不同點:???????
? 1.?? truncate和?? delete只刪除數據不刪除表的結構(定義)???????
??????????? drop語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger),索引(index);?? 依賴于該表的存儲過程/函數將保留,但是變為invalid狀態.??????
? 2.delete語句是dml,這個操作會放到rollback?? segement中,事務提交之后才生效;如果有相應的trigger,執行的時候將被觸發.??????
????????? truncate,drop是ddl,?? 操作立即生效,原數據不放到rollback?? segment中,不能回滾.?? 操作不觸發trigger.??????
? 3.delete語句不影響表所占用的extent,?? 高水線(high?? watermark)保持原位置不動???????
??????? 顯然drop語句將表所占用的空間全部釋放???????
??????? truncate?? 語句缺省情況下將空間釋放到?? minextents個?? extent,除非使用reuse?? storage;?????? truncate會將高水線復位(回到最開始).??????
? 4.速度,一般來說:?? drop>?? truncate?? >?? delete???????
? 5.安全性:小心使用drop?? 和truncate,尤其沒有備份的時候.否則哭都來不及???????
? 使用上,想刪除部分數據行用delete,注意帶上where子句.?? 回滾段要足夠大.???????
? 想刪除表,當然用drop???????
? 想保留表而將所有數據刪除.?? 如果和事務無關,用truncate即可.?? 如果和事務有關,或者想觸發trigger,還是用delete.???????
? 如果是整理表內部的碎片,可以用truncate跟上reuse?? stroage,再重新導入/插入數據
*/
---
--返回當前的用戶。
select CURRENT_USER
select? USER_NAME()
---定義一個游標及while的使用
DECLARE abc CURSOR FOR
SELECT * FROM Shippers

OPEN abc

FETCH NEXT FROM abc
WHILE (@@FETCH_STATUS = 0)
?? FETCH NEXT FROM abc

CLOSE abc
DEALLOCATE abc

---while
while (@count<100)
begin
?print @count;
?continue;
end
else
break;

----快速查看表結構和試圖、存儲過程索引等信息
sp_help tablename
sp_helptext viewname or procedurename
sp_helpindex tablename or viewname

---創建表和試圖的索引
create index indexname on? tablename? (columnname)
create (unique) index indexname on? viewname? (columnname)
drop index indexname


/*幾個高級查詢運算詞?
A: UNION 運算符?
UNION 運算符通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)并消去表中任何重復行而派生出一個結果表。當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。
B: EXCEPT 運算符?
EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重復行而派生出一個結果表。當 ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重復行。
C: INTERSECT 運算符?
INTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行并消除所有重復行而派生出一個結果表。當 ALL 隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重復行。
注:使用運算詞的幾個查詢結果行必須是一致的。
*/
--between的用法,between限制查詢數據范圍時包括了邊界值,not between不包括?
select * from table1 where time between time1 and time2?
select a,b,c, from table1 where a not between 數值1 and 數值2

--兩張關聯表,刪除主表中已經在副表中沒有的信息?
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

--日程安排提前五分鐘提醒?
?select * from 日程安排 where datediff('minute',f開始時間,getdate())>5

--一條sql 語句搞定數據庫分頁?
select top 10 b.* from (select top 20 主鍵字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主鍵字段 = a.主鍵字段 order by a.排序字段

--選擇在每一組b值相同的數據中對應的a最大的記錄的所有信息(類似這樣的用法可以用于論壇每月排行榜,每月熱銷產品分析,按科目成績排名,等等.)?
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

--包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重復行而派生出一個結果表?
(select a from tableA ) except (select a from tableB) except (select a from tableC)

--隨機取出10條數據?
select top 10 * from tablename order by newid()

--隨機選擇記錄?
select newid()

--列出數據庫里所有的表名?
select name from sysobjects where type='U'

--列出表里的所有的字段
select name from syscolumns where id=object_id('TableName')?
---重復行中只顯示第一行的某個字段數據,其他行為空或0
SELECT?
?CASE WHEN (ROW_NUMBER() OVER (PARTITION BY JobNo ORDER BY tJobNo)) = 1 THEN InvoiceAmount ELSE 0 END AS InvoiceAmount
FROM TrkJob
-----------------------------------排序函數
---自動生成序號
select row_Number() over(order by ProjectNo desc )as RowNum from TrkJob
select row_number() over(partition by (OperateDate) order by projectno asc) from trkload
---返回結果集分區中行的排名,在排名中沒有任何間斷。行的排名等于所討論行之前的所有排名數加一
select DENSE_RANK () over(order by loadno desc)as 'dense_rank' from trkload
select DENSE_RANK() over(partition by (OperateDate) order by projectno asc) from trkload
----返回結果集的分區內每行的排名。行的排名是相關行之前的排名數加一。
select RANK () over(order by loadno? desc )as 'ranks' from trkload
select RANK() over(partition by (OperateDate) order by projectno asc) from trkload

--某列值相等,其他列值不等,只在第一行顯示一個相等的值,其他行為空

DECLARE @TAB TABLE ([col1] varchar(1),[col2] int,[col3] int)
insert @TAB
select 'a',1,2 union all
select 'a',2,3 union all
select 'a',3,4 union all
select 'b',4,5 union all
select 'b',5,6 union all
select 'b',6,7
--------------開始查詢--------------------------
select
?? case px when 1 then col1 else '' end as col1,
?? col2,col3
from
?? (select px=row_number()over(partition by col1 order by getdate()),* from @TAB)t
???
---顯示10%的數據
select * from?
(select ntile(10) over(order by loadno desc)as ass,loadno,projectno,jobno,forwardercode,operatedate from trkload
)qq where ass=1
-----------------------------------排序函數
--日期函數
set datefirst 1
select @@datefirst--美國默認第一天為星期日 7
select datepart(year,getdate()),datepart(month,getdate()),datepart(day,getdate()),datepart(week,getdate()),
??datepart(quarter,getdate()),datepart(dayofyear,getdate()), datepart(weekday,getdate()),
??datepart(hour,getdate()),datepart(minute,getdate()),datepart(second,getdate()),datepart(millisecond,getdate())
---查詢所有數據庫名
select * from master.dbo.sysdatabases
---查詢數據庫表中的所有列(字段)
select * from syscolumns?
name id colid?
//字段名稱 //表ID號. 字段ID號.
----sysobjects有用的字段名稱和相關說明
select * from sysobjects?
name id xtype uid?
對象名. 對象ID 對象類型 所有者對象的用戶ID。?
對象類型(xtype)。可以是下列對象類型中的一種:?
C = CHECK 約束?
D = 默認值或 DEFAULT 約束?
F = FOREIGN KEY 約束?
L = 日志?
FN = 標量函數?
IF = 內嵌表函數?
P = 存儲過程?
PK = PRIMARY KEY 約束(類型是 K)?
RF = 復制篩選存儲過程?
S = 系統表?
TF = 表函數?
TR = 觸發器?
U = 用戶表?
UQ = UNIQUE 約束(類型是 K)?
V = 視圖?
X = 擴展存儲過程

聚合函數:
--函數名稱? 函數說明? 函數返回值??
Avg()? --返回組中各值的平均值? int,double,money,float??
Binary_checksum()? --返回按照表的某一行或某一組表達式計算出來的二進制表達式? 二進制數字??
Checksum() -- 返回按照表的某一行或某一組表達式計算出來的效驗和的值? int??
Checksum_agg()? --返回組中各值的效驗和? int??
Count()? --返回組中的項數? int??
Count_big()? --返回組中的項數? int??
Grouping()? --聚合函數:當行由CUBE或ROLLUP運算符添加時,該函數將導致列的輸出值為1,當行不由CUBE或ROLLUP運算符添加時,該函數將導致列的輸出值為0? int?
Max()? --返回表達式的最大值????
Min()? --返回表達式的最小值????
Stdev()? --返回給定表達式中所有值的標準偏差????
Stdevp()? --返回給定表達式中所有值的總體標準偏差????
Sum()? ---返回表達式中所有值和或僅非重復值的和????
Var()? --返回表達式中所有值的方差????
Varp()? --返回表達式中所有值的總體方差????
配置函數:??????
@@Datefirst? --返回SET DATAFIRST參數的當前值,該值表示為每周指定的第一天????
@@Dbts? --返回一個時間戳????
@@Langid? --返回本地語言的標識????
@@Language? --返回本地語言的名稱????
@@Lock_Timeout? --返回當前會話的當前鎖定超時設置(毫秒)????
@@Max_Connections? --返回同時連接的最大用戶數????
@@Max_Precision? --返回浮點類型的精度級別????
@@Nestlevel? --返回當前存儲過程的嵌套級別????
@@Options? --返回當前SET選項信息????
@@Remserver? --返回在遠程登陸記錄中顯示的名稱????
@@Servername? --返回本地SQL的名稱????
@@Servicename? --返回SQL注冊表項名稱????
@@Spid? --返回當前用戶進程PID????
@@Textsize? --返回SET選項的TEXTSIZE選項的當前值????
@@Version? --返回SQL的安裝日期,版本,CPU類型????
游標函數:??????
@@Cursor_Rows? --返回連接上打開的上一個游標中的當前限定行的數目????
Cursor_Status() -- 一個標量函數,允許存儲過程調用方確定該存儲過程是否為給定的參數返回結果集和游標????
@@Fetch_Status? --返回針對連接當前打開的任何游標發出的上一條游標FETCH語句的狀態????
日期和時間函數??????
Dateadd()? --根據日期增量,返回新的日期????
Datediff()? --返回跨兩個指定日期的日期和時間邊界數????
Day()? --返回日期中的日????
Getdate()? --返回日期時間????
Getutcdate()? --返回UCT的日期????
Month()? --返回日期中的月????
Year() -- 返回日期中的年????
數學函數??????
Abs()? --返回絕對值????
Acos()? --返回以弧度表示的角,其余弦為給定浮點表達式????
Asin()? --返回以弧度表示的角,其正弦為給定浮點表達式????
Atan()? --返回以弧度表示的角,其正切為給定浮點表達式????
Atn2()? --返回以弧度表示的角,其正切為2給定浮點表達式的商????
Ceiling()? --返回大于等于給定數值表達式的最小整數????
Cos()? --返回給定角的三角余怰????
Cot()? --返回給定角的三角余切????
Degrees()? --如果角以弧度表示,返回以度數表示的角????
Exp()? --返回給定浮點表達式的指數值????
Floor()? --返回小于等于給定數值表達式的最大整數????
Log() -- 給定浮點表達式的自然對數????
Log10() -- 給定浮點表達式的常用對數????
Pi()? --返回圓周率????
Power()? --給定表達式的指定冪的值????
Radians()? --返回指定數值表達式的弧度????
Rand() -- 隨機浮點數????
Round()? --舍入到指定精度????
Sign()? --返回指定表達式的符號????
Sin()? --三角正怰????
Sqrt()? --開方????
Square()? --給參數平方????
Tan()? --給參數正切????
元數據函數??????
Col_Length()? --返回指定表中列的長度(字節)????
Col_Name()? --返回數據庫表ID, 列ID的列名稱????
Columnproperty()? --返回列參數,過程參數的屬性值????
Databaseproperty()? --返回數據庫和屬性名稱的屬性值????
Databasepropertyex()? --返回數據庫和屬性名稱的屬性值????
Db_Id()? --返回數據庫名稱的標識號????
Db_Name()? --返回數據庫ID的名稱????
File_id()? --返回數據庫中給定邏輯文件名的文件標識號????
File_Name()? --返回數據庫中給定文件標識號的邏輯文件名????
Filegroup_Name()? --返回數據庫中給定邏輯文件組的文件標識號????
Filegroupproperty()? --返回數據庫中給定邏輯文件組和屬性名稱的指定屬性值????
Fileproperty() -- 返回文件名,屬性名稱的指定屬性值????
::fn_Listextendedproperty()? --返回數據庫對象的擴展屬性值??
Isdate()???? --確定輸入表達式是否為有效日期.要驗證其是否為日期的表達式。expression 是 text、ntext 表達式和 image 表達式以外的任意表達式,可以隱式轉換為 nvarchar
Isnull()??? --如果 check_expression 不為 NULL,則返回它的值;否則,在將 replacement_value 隱式轉換為 check_expression 的類型(如果這兩個類型不同)后,則返回前者。?
Isnumeric() --當輸入表達式的計算結果為有效的 numeric 數據類型時,ISNUMERIC 返回 1;否則返回 0????
Newid()??????
Nullif()? --如果兩個指定的表達式相等,則返回空值。如果兩個表達式不相等,則 NULLIF 返回第一個 expression 的值。如果表達式相等,則 NULLIF 返回第一個 expression 類型的空值。???
Parsename()? --返回對象名稱的指定部分。可以檢索的對象部分有對象名、所有者名稱、數據庫名稱和服務器名稱.

?

-----常用字符串函數
PatIndex--函數支持使用通配符來進行搜索,然而CHARINDEX不支持通佩符,函數返回字符或者字符串在另一個字符串或者表達式中的起始位置,PATINDEX函數支持搜索字符串中使用通配符,這使PATINDEX函數對于變化的搜索字符串很有價值。
CharIndex--函數返回字符或者字符串在另一個字符串中的起始位置。

1、)CharIndex?
?CharIndex (分隔符,被查找字段[,開始位置]?
?
2、)PatIndex ( ’%pattern%’ , expression )?
????? --Pattern是你要搜索的字符串,expression是被搜索的字符串。一般情況下expression是一個表中的一個字段,pattern的前后需要用“%”標記,除非你搜索的字符串在被收縮的字符串的最前面或者最后面。
????? --這里的%標記告訴PATINDEX函數去找字符串“pattern”,不管被搜索的字符串中在“pattern”的前后有多少字符!
????? --假如你想知道被搜索字符串是否由特定的字符串開始,你可以省去前面的%標記。PATINDED函數就要這樣寫:?
????? PatIndex(’pattern%’,expression)?
3、)Substring(被截取的字符串,起始位置,長度)
4、)Stuff(原字符串[常量|變量|字符列|二進制數據列],指定刪除和插入的開始位置,指定要刪除的字符數,將要插入的字符或串)---函數將字符串插入另一字符串。它在第一個字符串中從開始位置刪除指定長度的字符;然后將第二個字符串插入第一個字符串的開始位置。
--例如:
-----從字符串中取數字??????????
IF OBJECT_ID('tb_test') IS NOT NULL DROP TABLE tb_test
GO
?CREATE TABLE tb_test(columnfile VARCHAR(50))
---填充測試數據
??INSERT? tb_test
?????SELECT 'ADSF-123A1' UNION ALL
?????SELECT 'ADDFSF - 36B133' UNION ALL
?????SELECT 'AD- 555FDF3.5'
----查詢?????
?SELECT?
??CASE WHEN PATINDEX('%[^0-9]%',columnfile_b)=0?
??? THEN columnfile_b?
??? ELSE LEFT(columnfile_b,PATINDEX('%[^0-9]%',columnfile_b)-1)?
??? END
?FROM (
???SELECT?
????CASE WHEN PATINDEX('%[0-9]%',columnfile)=0?
????? THEN NULL?
????? ELSE STUFF(columnfile,1,PATINDEX('%[0-9]%',columnfile)-1,'')
????? END AS columnfile_b
???FROM tb_test
?) AA
------從字符串中取數字

5、)Reverse(字符串)--將字符串反轉
6、)Replicate(expression,n)--將指定的對象重復N次

----常用日期函數
7、)DateDiff? 函數
? DateDiff (dd|yyyy|mm,當前被比較的日期字段,比較的日期)
??
8、)DateAdd(day|month|year,16|3|3,getdate()) 得到在指定的日期上增加指定的日期(天,月,年)的日期

9、)DateDiff(day|month|year, getdate(),getdate()-10) 獲取兩個指定日期之間的日期間隔

10、)DateName(day|month|year,getdate()) 返回表示指定日期的指定日期部分的字符串。

11、)DatePart(day|month|year,getdate())返回表示指定日期的指定日期部分的整數。

12、)CAST 和 CONVERT 將某種數據類型的表達式顯式轉換為另一種數據類型。CAST 和 CONVERT 提供相似的功能。
?CAST ( expression AS data_type )

?CONVERT (data_type[(length)], expression [, style])
/*參數?
data_type??? 表達式將轉換成的數據類型。
expression??? 要轉換的表達式。
style??轉換的格式(120 代表日期的格式“yyyy-MM-dd”)
*/

-----轉載聯機幫助
-PARSENAME ( 'object_name' , object_piece ) ---返回對象名稱的指定部分。可以檢索的對象部分有對象名、所有者名稱、數據庫名稱和服務器名稱。
/*' object_name '?
要檢索其指定部分的對象的名稱。object_name 的數據類型為 sysname。此參數是可選的限定對象名稱。如果對象名稱的所有部分都是限定的,則此名稱可包含四部分:服務器名稱、數據庫名稱、所有者名稱以及對象名稱。
object_piece?
要返回的對象部分。object_piece 的數據類型為 int 值,可以為下列值。
1 = 對象名稱
2 =?架構名稱
3 = 數據庫名稱
4 = 服務器名稱
返回類型為nchar
*/
SELECT ParseName('AdventureWorks..Contact', 1) AS 'Object Name';
SELECT PARSENAME('AdventureWorks..Contact', 2) AS 'Schema Name';
SELECT PARSENAME('AdventureWorks..Contact', 3) AS 'Database Name;'
SELECT PARSENAME('AdventureWorks..Contact', 4) AS 'Server Name';
--轉載聯機幫助

----嵌套游標案例
?declare TaoCan_LuoDan_Cursor cursor for --定義一個游標,用來依次從自動匹配好為套餐中取酒菜名和數量
???select TaoCan_Quantity,BusDetaOld_RecipeName from #TaoCan_PiPeiDetail
???open TaoCan_LuoDan_Cursor
???fetch next from TaoCan_LuoDan_Cursor
???into @taocannum,@taocan_recipename
???while @@fetch_status=0
????begin--根據酒菜名相同依次循環更新從零點酒菜中匹配出去的酒菜數量后還剩下的數量(相當與實際零點就酒水數量)
?????if exists (select * from #TaoCanLuoDan where?Recipe_Name=@taocan_recipename)
??????Begin
???????declare PayType_Cursor cursor for
???????select Recipe_Name,Quantity,BusinessDetail_ID from #TaoCanLuoDan whereRecipe_Name=@taocan_recipename
???????open PayType_Cursor
???????fetch next from PayType_Cursor into @PayType_Name ,@PayType_Num,@BusinessDetail_ID
???????while @@fetch_status=0
????????begin
?????????if @PayType_Num< @taocannum?
??????????begin
???????????set @taocannum=@taocannum-@PayType_Num
???????????delete from #TaoCanLuoDan where?BusinessDetail_ID=@BusinessDetail_ID?andRecipe_Name=@taocan_recipename
??????????end
?????????else if @PayType_Num>@taocannum
??????????begin
???????????update #TaoCanLuoDan set?Quantity=@PayType_Num-@taocannum,
????????????SingleRecipeTotal=(@PayType_Num-@taocannum)*UnitPrice*DisRatio*0.01,
????????????SingleRecipeTotal_last=(@PayType_Num-@taocannum)*UnitPrice*DisRatio*0.01,
????????????SingleRecipeSum=(@PayType_Num-@taocannum)*UnitPrice*DisRatio*0.01?
???????????where?BusinessDetail_ID=@BusinessDetail_ID?andRecipe_Name=@taocan_recipename
???????????SET @taocannum=0
??????????end?????
?????????else if @PayType_Num=@taocannum
??????????begin
???????????set @taocannum=@taocannum-@PayType_Num
???????????delete from #TaoCanLuoDan where?BusinessDetail_ID=@BusinessDetail_ID?andRecipe_Name=@taocan_recipename
??????????end
????????fetch next from PayType_Cursor into @PayType_Name ,@PayType_Num,@BusinessDetail_ID
????????end
???????close PayType_Cursor
???????deallocate PayType_Cursor?
??????end
????fetch next from TaoCan_LuoDan_Cursor?
????into @taocannum,@taocan_recipename
????
???end
??close TaoCan_LuoDan_Cursor
??deallocate TaoCan_LuoDan_Cursor?
-----游標

---表值函數
Create Function f_GetAllSubNodeForNode(@DepartmentID int) returns @t_level table(DepartmentID int , level int)
as
begin
? declare @level int
? set @level = 1
? insert into @t_level select @DepartmentID , @level
? while @@ROWCOUNT > 0
? begin
??? set @level = @level + 1
??? insert into @t_level select a.DepartmentID , @level
??? from PSY_U_Department as a , @t_Level b
??? where a.HigherDepartmentID = b.DepartmentID and b.level = @level - 1
? end
? return
end

---表值函數
Create? Function f_GetUnionStr(@file varchar(32))
returns? varchar(1000)
----按某字段合并字符串
----@file是條件(可以是單條件也可以是復合條件),最后將table1 改為具體的表或視圖就可以了
as
?begin
??declare @returnstr varchar(1000)
???select @returnstr=IsNull(@returnstr+',','')+convert(varchar(128),value) from table1 wherefiles=@file
???return @returnstr
?end

?

--顯示高級配置選項
exec sp_configure 'show advanced options',1
reconfigure
go
exec sp_configure ---顯示所有高級配置選項
SELECT * FROM sys.configurations?
go
--啟用 xp_cmdshell?
exec sp_configure 'xp_cmdshell',1
reconfigure?
--禁用 xp_cmdshell?
exec sp_configure 'xp_cmdshell',0
reconfigure?
exec sp_configure 'show advanced options',0
reconfigure
go
---拷貝(移動)文件
exec xp_cmdshell 'copy D:\g_goods_0723.bak?
\\zhaowenzhong\test\g_goods_0723.bak, no_output';
go
exec? xp_readerrorlog ----讀取日志

--返回可執行文件列表
EXEC master..xp_cmdshell 'dir *.exe'


?

--刪除文件
exec?? master..xp_cmdshell 'del F:\test_cmd_shell\復件to_all.xls '

/*? SQL2000版本支持,但是從2005以后不支持刪除擴展存儲過程(所有,不僅僅是xp_cmdshell),可以將其禁用掉。
--去掉擴展存儲過程xp_cmdshell???
use?? master???
EXEC sp_dropextendedproc 'xp_cmdshell '??

--恢復擴展存儲過程xp_cmdshell??????
EXEC sp_addextendedproc 'xp_cmdshell ',?? 'xpsql70.dll '

*/

?

/*名稱相同,數據不同,只顯示一個名稱。(即隱藏或不顯示重復名稱)*/

create table tb(name varchar(120), qty int)
insert into tb values('A', 100)
insert into tb values('A', 200)
insert into tb values('C', 200)
insert into tb values('d', 100)
insert into tb values('A', 500)
insert into tb values('C', 200)
go

select (case when qty = (select top 1 qty from tb where name = t.name) then name else '' end) name, qty
from (select top 1000 percent * from tb order by name , qty) t

--或者
?
select name=(case? when? rownumber=1 then? name else ''end? ),qty
? from (select *,rownumber=ROW_NUMBER()over( partition by name order by getdate()) from tb) t

?

--1個簡單的統計每天系統訪問次數及明細
create table [user](username varchar(10),taskid int)
insert into [user]
select '張三',1 union
select '王二',2 union
select '張三',3 union
select '李四',4
create table task(taskid int,loginTime datetime)
insert into task
select 1,'2012-12-23 11:30:00' union
select 2,'2012-12-23 18:30:00' union
select 3,'2012-12-25 11:30:00' union
select 4,'2012-12-23 11:00:00'

declare @bdate datetime=(select min(loginTime) from task),
??????? @edate datetime=(select MAX(loginTime) from task)
;with cte1 as
(
? select 日期=DATEADD(day,number,@bdate) from master.dbo.spt_values
???? where type='p' and number<=DATEDIFF(DAY,@bdate,@edate)
?)
?,cte2 as
?(
?? select a.username,b.loginTime from [user] a,task b where a.taskid=b.taskid
?)
?
select 日期=convert(varchar(10),日期,120),
?????? 人數=(select COUNT(distinct username) from cte2 where DATEDIFF(DAY,a.日期,loginTime)=0),
?????? 登入人=isnull(stuff((select distinct ','+username from cte2?
???????????? where DATEDIFF(DAY,a.日期,loginTime)=0 for xml path('')),1,1,''),'無')
from cte1 a????


?--消除行中 重復數據

create table t1(col1 varchar(10),col2 varchar(8000))
insert t1
select 'A' , '美國,法國,英國,美國,日本,韓國,日本' union all
select 'B' , '朝鮮,緬甸,緬甸'
go
;with cte as
(
select col1,
col2=SUBSTRING(case when right(col2,1)=',' then col2 else col2+',' end,1,charindex(',',case when right(col2,1)=',' then col2 else col2+',' end)-1),
col3=stuff(case when right(col2,1)=',' then col2 else col2+',' end,1,charindex(',',case when right(col2,1)=',' then col2 else col2+',' end),'')
?from t1
union all
select col1,col2=SUBSTRING(col3,1,charindex(',',col3)-1),col3=stuff(col3,1,charindex(',',col3),'') from cte
where CHARINDEX(',',col3)>0
)
select distinct col1,col2 from cte
order by col1

轉載于:https://www.cnblogs.com/accumulater/p/6158649.html

總結

以上是生活随笔為你收集整理的常用sql 全记录(添加中)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲综合成人在线 | 日本bbwbbw| 三年中文在线观看免费观看 | 欧美与黑人午夜性猛交久久久 | 极品少妇视频 | 超碰成人免费电影 | 带aaa级的网名 | 噼里啪啦免费观看 | 亚洲91视频 | 扒开伸进免费视频 | 伊人春色影院 | 成年人在线视频 | 亚洲天堂网在线视频 | 国产麻豆精品视频 | 成人毛片100部免费看 | ,国产精品国产三级国产 | 丰满熟女人妻一区二区三区 | 成人做爰视频www网站小优视频 | 一二三区在线视频 | 欧美激情精品久久久久久变态 | 免费一级suv好看的国产网站 | 成人国产一区二区三区精品麻豆 | 天天干夜夜爱 | 国产一级淫片a视频免费观看 | 国产亚洲久一区二区 | 热久久免费视频 | 免费一区二区三区四区 | 精品国产69 | 国产黄色网址在线观看 | 俄罗斯精品一区二区三区 | 久久久久亚洲av片无码 | 日韩中文字幕高清 | 日本免费网址 | 粉嫩精品久久99综合一区 | 五月天色丁香 | 无码少妇一区二区三区芒果 | 在线观看av一区二区 | 国产精品久久久久久久久久久久久久久久久久 | 97性视频| 白丝美女喷水 | 污污视频在线播放 | 男男gay羞辱feet贱奴vk | 欧美三根一起进三p | 国产做爰xxxⅹ高潮视频12p | 精品国产区一区二 | 天天做天天爱天天操 | 日日碰日日摸 | 久久男人天堂 | 久久99精品波多结衣一区 | 久久亚洲国产成人精品性色 | 日本四级电影 | 免费看毛片网站 | 久久久久麻豆v国产精华液好用吗 | 爱爱91 | 亚洲经典一区二区三区 | 国产区高清 | 免费日本黄色片 | 国产精品每日更新 | 国产成人啪精品午夜在线观看 | 亚洲影视一区二区三区 | 女同动漫免费观看高清完整版在线观看 | 日本精品一区在线 | 亚洲影院中文字幕 | 秋霞午夜网 | 91色视频在线 | 三级国产视频 | 精品国产成人av在线免 | 日韩一级片一区二区 | 一区二区三区色 | 不卡日本视频 | 欧美性xxxxxxxxx | 日韩特一级| 自拍偷拍专区 | 18被视频免费观看视频 | 视频一区在线免费观看 | 亚洲性视频网站 | 护士的小嫩嫩好紧好爽 | 久在线播放 | 精品久久久久久久免费人妻 | kendra lust free xxx| 人人妻人人澡人人爽精品 | 97人妻一区二区精品视频 | 看一级大片 | 亚洲m码 欧洲s码sss222 | 国产高潮视频在线观看 | 97人妻人人揉人人躁人人 | 欧美激情视频在线播放 | youjizz韩国 | av片大全| 国产免费观看视频 | 综合网婷婷 | 黄色最新网址 | 91国内在线视频 | 91看片在线观看 | 亚洲一级在线 | 99九九视频| 国产性在线 | 国产精品毛片一区二区在线看舒淇 | 日韩成人黄色片 |