----------2017-01-03 21:56:56---------- --字符串分隔 start------------- use LDSQL GO CREATE function [dbo].[split] ( @str varchar(4500), @sep varchar(1) ) returns @t table(id int identity(1,1),col varchar(4500)) as begin --分別定義了 目前位置,分隔符開始和字符串長度和,當前獲取的字符串 declare @posi int,@start int,@str_leg int,@gchar varchar(2),@mingzhong int set @str_leg=len(@str) set @posi=0 set @start=0 set @mingzhong=0 while(@posi<=@str_leg) begin set @gchar=substring(@str,@posi,1) if(@gchar=@sep) begin insert into @t values(substring(@str,@start+1,@posi-@start-1)) set @start=@posi end set @posi=@posi+1 end return end Go ---------調用eg select * from split('1,2,3,4',',') --字符串分隔 end------------- use LDSQL ----建立庫 start create database LDSQL1 on primary -- 默認就屬於primary文件組,可省略 ( /*--數據文件的具體描述--*/ name='LDSQL_data', -- 主數據文件的邏輯名稱 filename='D:\LDSQL_data.mdf', -- 主數據文件的物理名稱 size=5mb, --主數據文件的初始大小 maxsize=100mb, -- 主數據文件增加的最大值 filegrowth=15%--主數據文件的增加率 ) log on ( /*--日誌文件的具體描述,各參數含義同上--*/ name='LDSQL_log', filename='D:\LDSQL_log.ldf', size=2mb, filegrowth=1mb ) ----建立庫 end ---刪庫 start use master -- 設置當前數據庫爲master,以便訪問sysdatabases表 go if exists(select * from sysdatabases where name='LDSQL1') drop database LDSQL1 go ---刪庫end --建立表start use LDSQL go if exists(select * from sysobjects where name='userinfo') drop table userinfo create table userinfo ( id int identity(1,1) primary key, name char(6) , age char(4) , address nvarchar(50) ) alter table userinfo add time1 datetime --添加字段 alter table userinfo add timestamp nvarchar(50) --添加字段 alter table userinfo add remark nvarchar(50) --添加字段 ALTER TABLE userinfo DROP COLUMN remark --刪除字段 go --alter table 表名 --add constraint 約束名 約束類型 具體的約束說明 --alter table 表名 --drop constraint 約束名 --alter table stuMarks --add constraint UQ_stuNo Unique(stuNo) --alter table stuMarks --drop constraint UQ_stuNo --建立表end --插入數據 start insert into userinfo(name, age, address) values('張三',20,'湖南') Go --插入多條 declare @i int set @i=1; while @i<101 begin insert into userinfo(name, age, address,time1) values('張三',20+@i,'湖南',GETDATE()) set @i=@i+1 end Go --插入數據end --添加帳號 start /*--添加SQL登陸帳戶--*/ exec sp_addlogin 'LD', 'a.123456' -- 帳戶名爲LD,密碼爲a.123456 --刪除xie帳戶名 exec sp_droplogin 'LD' --添加帳戶結束 --添加權限 start use LDSQL go grant select,update,insert on userinfo to LD grant create table to LD go --添加權限end --存儲過程 start ----1 簡單存儲過程 start if object_id('usp_getuserinfo_simple') is not null drop proc usp_getuserinfo_simple Go create proc usp_getuserinfo_simple as select * from [dbo].[userinfo] --執行 exec usp_getuserinfo_simple ----1 簡單存儲過程 end ----2 參數輸入存儲過程 start if object_id('usp_getuserinfo_input') is not null drop proc usp_getuserinfo_input Go create proc usp_getuserinfo_input @Age int as select * from [dbo].[userinfo] where age=@Age --執行 exec usp_getuserinfo_input 21 ----2 參數輸入存儲過程 end ----3 參數輸出output存儲過程 start if object_id('usp_getuserinfo_output') is not null drop proc usp_getuserinfo_output Go create proc usp_getuserinfo_output @Age int output as select @Age=age from userinfo Go --執行 declare @Age int exec usp_getuserinfo_output @Age output select @Age ----3 參數輸出output存儲過程 end ----4 參數輸入輸出output存儲過程 start if object_id('usp_getuserinfo_input_output') is not null drop proc usp_getuserinfo_input_output Go create proc usp_getuserinfo_input_output @id int, @Age int output as select @Age=age from userinfo where id=@id Go --執行 declare @Age int exec usp_getuserinfo_input_output 6,@Age output select @Age ----4 參數輸入輸出output存儲過程 end ----5 參數輸入輸出return存儲過程 start if object_id('usp_getuserinfo_return') is not null drop proc usp_getuserinfo_return Go Go create proc usp_getuserinfo_return as declare @age int begin select @age=[age] from [dbo].[userinfo] return @age end Go declare @age int exec @age=usp_getuserinfo_return select @age ----5 參數輸入輸出return存儲過程 end ----6 參數輸入輸出output_return存儲過程 start if object_id('usp_getuserinfo_intput_output_return') is not null drop proc usp_getuserinfo_intput_output_return Go Go create proc usp_getuserinfo_intput_output_return @id int, @name char(6)output as declare @age int begin select @age=[age],@name=name from [dbo].[userinfo] where id=@id return @age end Go declare @age int declare @name char(6) exec @age=usp_getuserinfo_intput_output_return 6,@name output select @age,@name ----6 參數輸入輸出input_output_return存儲過程 end --7 分頁 start if object_id('usp_select_page') is not null drop proc usp_select_page Go create proc usp_select_page ( @pageIndex int,--當前頁碼 @pagecount int--每頁條數 ) as begin select * from (select ROW_NUMBER() over(partition by SameRow order by Id) as Row,* from (select *,1 as SameRow from userinfo )m)o where o.Row between @pageIndex*@pagecount+1 and (@pageIndex+1)*@pagecount end exec usp_select_page 0,10 --7 分頁 end --8 流水號 start -- CREATE TABLE [dbo].[SriaNum] ( [Num] [int] NOT NULL ) Go if object_id('usp_GetSerialNumber') is not null drop proc usp_GetSerialNumber Go create PROC usp_GetSerialNumber @SerialNumber VARCHAR(4) OUTPUT -- 指明爲輸出參數 AS IF NOT EXISTS(SELECT * FROM SriaNum) BEGIN INSERT INTO SriaNum values(1) END ELSE BEGIN UPDATE SriaNum SET Num=Num+1 END SELECT @SerialNumber = REPLICATE('0',4-LEN(Num))+CONVERT(VARCHAR(4),Num) --生成[000000001, 999999999]範圍內的流水號 FROM SriaNum Go --執行 DECLARE @TEST VARCHAR(4) EXECUTE [dbo].usp_GetSerialNumber @TEST OUTPUT -- 指明爲輸出變量 SELECT @TEST AS SERIALNUMBER -- 得到流水號 -- --8 流水號 end --9 時間zhuo start Go CREATE FUNCTION UNIX_TIMESTAMP (@ctimestamp datetime) RETURNS integer AS BEGIN /* Function body */ declare @return integer SELECT @return = DATEDIFF(SECOND,{d '1970-01-01'}, @ctimestamp) return @return END Go CREATE FUNCTION FROM_UNIXTIME (@ts integer) RETURNS datetime AS BEGIN /* Function body */ declare @return datetime select @return = DATEADD(second, @ts, {d '1970-01-01'}) return @return END Go Go --9 時間-- end --存儲過程 end --隨機取出10條數據 start select top 10 * from [dbo].[userinfo] order by newid() --隨機取出10條數據 end Go --in 的使用方法 select * from [dbo].[userinfo] where [age] in (23,34,56,55) select * from [dbo].[userinfo] where [age] not in (23,34,56,55) --查詢重複 select * from userinfo where id not in (select max(id) from userinfo group by name,age) --刪除重複 Delete from userinfo where id not in (select max(id) from userinfo group by name,age) --模糊查詢 select * from [dbo].[userinfo] where name like '%張%' --日程安排提早五分鐘提醒 select * from [dbo].[userinfo] where datediff(minute,time1,getdate())>5 ---================================== --1當前時間戳 獲取sql SELECT DATEDIFF(S,'1970-01-01 00:00:00', GETDATE()) - 8 * 3600 SELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE()) --js --Math.round(new Date().getTime()/1000) --C# --long a = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000; ---=========================================== --2時間戳→普通時間sql SELECT DATEADD(s,1483461862,'1970-01-01 08:00:00') as DTime SELECT DATEADD(S,1483461862 + 8 * 3600,'1970-01-01 00:00:00') --js -- var unixTimestamp = new Date(Unix timestamp * 1000) --而後 commonTime = unixTimestamp.toLocaleString() --3 普通時間 → Unix時間戳 --sql SELECT DATEDIFF(s, '1970-01-01 08:00:00', '2017-01-04 00:44:22.000') --js -- var commonTime = new Date(Date.UTC(year, month - 1, day, hour, minute, second)) ---=====流水號 start=============================== --流水號生成規則: --1:流水號總長度爲22位數 --2:流水號總共分三部分:標頭(2位)+ 時間戳(YYYYMMDDHHmmSSsss共17位)+ 隨機碼(3位) --舉例流水號:SN20150812102400111234 --獲取時間戳 select convert(varchar,replace(replace(replace(replace(convert(varchar,getdate(),121),'-',''),':',''),' ',''),'.','')) --結果:20150703114447613 --獲取隨機碼 select substring(convert(varchar,rand()),3,3) --結果:813 --獲取完整的流水號 SELECT 'SN'+convert(varchar,replace(replace(replace(replace(convert(varchar,getdate(),121),'-',''),':',''),' ',''),'.',''))+substring(convert(varchar,rand()),3,3) --結果:SN20150703114447613813 ---=====流水號 end=============================== exec xp_cmdshell 'mkdir d:\DB'