access/sql server笔记(20160818)
20170509添加:
SQL Server版本對應(yīng)內(nèi)部數(shù)據(jù)庫版本號配置表
源SQL Server版本 內(nèi)部數(shù)據(jù)庫版本
SQL Server 2016 852
SQL Server 2014 782
SQL Server 2012 706
SQL Server 2008 R2 665
SQL Server 2008 661
SQL Server 2005 with vardecimal enabled 612
SQL Server 2005 611
SQL Server 2000 539
SQL Server 7 515
2008r2附加榮耀數(shù)據(jù)庫出錯,提示“數(shù)據(jù)庫的版本為706,無法打開。此服務(wù)器支持661版及更低版本”
幾類常用數(shù)據(jù)庫版本主要包括:
查詢SQL Server對應(yīng)的內(nèi)部數(shù)據(jù)庫版本號
select DATABASEPROPERTYEX('master','version')
返回661
SQL Server 2005 對應(yīng)版本為? 611;
SQL Server 2008 SP1? 對應(yīng)版本為? 655;
SQL Server 2008 R2 RTM 對應(yīng)版本為? 661;
查看SQL Server的版本號語句如下:
use master
select @@VERSION
返回
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)?? Apr? 2 2010 15:48:46?? Copyright (c) Microsoft Corporation? Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
20170502添加:
多個SQL Server 2008 R2實(shí)例:
實(shí)例1
192.168.0.254,1433
sa
123
實(shí)例2
192.168.0.254,1434
sa
happy1day
6601數(shù)據(jù)庫修改
1、執(zhí)行鏈接服務(wù)器目錄下的三個sql腳本文件:QPGameUserDBLink.sql、QPServerInfoDBLink.sql、QPTreasureDBLink.sql
2、修改金幣庫QPTreasureDB的存儲過程GSP_GR_EfficacyUserID
輸出變量
@Grade as dwGrade,@NickName AS NickName改為
@Grade as dwGrade,@NickName AS NickName,@isAndroid AS IsAndroid,0 AS OnlineTime,0 AS OnlineGiftCount
3、用戶庫QPGameUserDB增加一個存儲過程GSP_GP_ContinueConnect
編譯多開版本,與服務(wù)器版本不匹配
../../運(yùn)行/ClientRelease/AdminPlaza.exe
改為
../../運(yùn)行文件/ClientRelease/AdminPlaza.exe
//游戲列表命令碼
#define MDM_GP_SERVER_LIST????2????????//列表信息
#define SUB_GP_LIST_TYPE????100????????//類型列表
#define SUB_GP_LIST_KIND????101????????//種類列表
#define SUB_GP_LIST_STATION????102????????//站點(diǎn)列表
#define SUB_GP_LIST_SERVER????103????????//房間列表
#define SUB_GP_LIST_FINISH????104????????//發(fā)送完成
#define SUB_GP_LIST_CONFIG????105????????//列表配置
1,100,307
2,105,1
2,100,252
sizeof(tagGameType)=36
2,101,240
sizeof(tagGameKind)=80
2,102,2400
2,104,0
配置SQL Server,允許遠(yuǎn)程連接
http://www.cnblogs.com/weizhengLoveMayDay/p/3267756.html
20161117添加:
關(guān)系數(shù)據(jù)庫中的一些基本術(shù)語。
鍵碼Key:用來標(biāo)識一列或多列。
主關(guān)鍵字Primary Key:作為表行的唯一標(biāo)識,一個表中只有一個主關(guān)鍵字,主關(guān)鍵字又稱為主鍵。
候選關(guān)鍵字Candidate Key:它是唯一標(biāo)識表中一行而又不含多余屬性的一個屬性集。
外關(guān)鍵字Foreign Key:如果公共關(guān)鍵字在一個關(guān)系中是主關(guān)鍵字,那么這個公共關(guān)鍵字被稱為另一個關(guān)系的外關(guān)鍵字。由此可見,外關(guān)鍵字表示了兩個關(guān)系之間的聯(lián)系,外關(guān)鍵字又稱作外鍵。
公共關(guān)鍵字Common Key:在關(guān)系數(shù)據(jù)庫中,關(guān)系之間的聯(lián)系是通過相容或相同的屬性或?qū)傩越M來表示的。如果兩個關(guān)系中具有相容或相同的屬性或?qū)傩越M,那么這個屬性或?qū)傩越M被稱為這兩個關(guān)系的公共關(guān)鍵字。
chap7 存儲過程與觸發(fā)器
1、參數(shù)的定義
2、輸入?yún)?shù)
執(zhí)行帶有輸入?yún)?shù)的存儲過程時,SQL Server 2008提供了兩種傳遞參數(shù)的方式。
a.按位置傳遞
use QPGameUserDB;
exec GSP_GP_EfficacyAccounts '1','2','3','4'
b.通過參數(shù)名傳遞
3、使用默認(rèn)參數(shù)
4、輸出參數(shù)
為了接受某一存儲過程的返回值,需要一個變量來存放返回參數(shù)的值,在該存儲過程的調(diào)用語句中,必須為這個變量加上OUTPUT關(guān)鍵字來聲明。
use qptreasuredb;
declare @strErrorDescribe NVARCHAR(128)
exec GSP_GR_EfficacyMobile '80784','DC483E80A7A0BD9EF71D8CF973673924','192.168.0.254','3232235774','','715','216',@strErrorDescribe OUTPUT
select '錯誤消息為:'+@strErrorDescribe as '結(jié)果'
go
存儲過程加密查看.exe
工具使用方法:右鍵單擊加密的存儲過程(例如dbo.GetPassWord),然后點(diǎn)擊Decrypt in-place菜單項,即可解密該存儲過程。
USE?QPGameUserDB
GO
SET?ANSI_NULLS,?QUOTED_IDENTIFIER?ON
GO
CREATE?PROCEDURE?[dbo].[GetPassWord]
?????@UserID_1?????[nvarchar](50),
?????@Email_2?????[nvarchar](50),
?????@Passw_3?????[nvarchar](50),
?????@Passd_4?????[nvarchar](50),
?????@Code_5?????[nvarchar](50),
?????@Adder_6?????[nvarchar](50),
?????@TelMail_8????[nvarchar](50),
?????@Txt_9?????[nvarchar](800),
?????@PASSOWRD????[nvarchar](50)????
WITH?ENCRYPTION?AS
--解密后上面這句變?yōu)锳S?
BEGIN
????IF?EXISTS (select?ID?from?PassWordList Where UserID=@UserID_1?And?IsCut=0)
????BEGIN
????Delete?From?PassWordList Where UserID=@UserID_1?And?IsCut=0
????END
????INSERT?INTO [PassWordList]?
?????????(?
?????????[UserID],
?????????[Email],
?????????[Passw],
?????????[Passd],
?????????[Code],
?????????[Adder],
?????????[TelMail],
?????????[Txt],[password])?
?????
????VALUES?
????????( @UserID_1,
?????????@Email_2,
?????????@Passw_3,
?????????@Passd_4,
?????????@Code_5,
?????????@Adder_6,
?????????@TelMail_8,
?????????@Txt_9, @PASSOWRD)
END
return?0
GO
使用SQL Server Management Studio創(chuàng)建數(shù)據(jù)庫(使用圖形化工具)或使用Transact-SQL語句創(chuàng)建數(shù)據(jù)庫(使用CREATE DATABASE語句)
use master
go
if exists (select * from dbo.sysdatabases where name = 'Hotel')
drop database Hotel
GO
create database Hotel--待創(chuàng)建數(shù)據(jù)庫的名稱
go
use Hotel
go
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[user_Info]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[user_Info]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bookin]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[bookin]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[rooms]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[rooms]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[roomtype]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[roomtype]
GO
CREATE TABLE [dbo].[user_Info] (
?[user_ID] [varchar] (15) COLLATE Chinese_PRC_CI_AS NOT NULL ,
?[user_PWD] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
?[user_Des] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[bookin] (
?[bookno] [varchar] (14) COLLATE Chinese_PRC_CI_AS NOT NULL ,
?[customname] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
?[customID] [varchar] (18) COLLATE Chinese_PRC_CI_AS NOT NULL ,
?[roomno] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
?[indate] [datetime] NULL ,
?[discount] [float] NULL ,
?[inmemo] [text] COLLATE Chinese_PRC_CI_AS NULL ,
?[checkdate] [datetime] NULL ,
?[ammount] [float] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
CREATE TABLE [dbo].[rooms] (
?[roomNO] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
?[roomtype] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
?[roomposition] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
?[roomprice] [float] NULL ,
?[putup] [bit],
?[roommemo] [text] COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
CREATE TABLE [dbo].[roomtype] (
?[typeid] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
?[typename] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
?[area] [float] NULL ,
?[bednum] [int] NULL ,
?[haircondition] [bit],
?[htelephone] [bit],
?[htelevision] [bit],
?[htoilet] [bit],
?[price] [float] NULL
) ON [PRIMARY]
GO
INSERT user_Info (user_ID, user_PWD) VALUES ('Administrator', NULL)
GO
?
HotelManageSystem數(shù)據(jù)設(shè)計說明.doc
一,數(shù)據(jù)庫名稱: Hotel
1. 用戶信息表(user_Info)
字段 數(shù)據(jù)類型 大小 主/外鍵 說明
user_ID varchar? 15? 用戶名
user_PWD varchar 10? 密碼
user_Des varchar? 10?
2. 客房信息表(rooms)
字段 數(shù)據(jù)類型 大小 主/外鍵 說明
roomNO varchar? 10? 客房編號
roomtype varchar 10? 客房類型
roomposition varchar? 20? 客房位置
roomprice float?? 客房單價/每天
putup bit?? 1表示已有顧客入住
roommemo text?? 備注信息
3. 訂房信息表(bookin)
字段 數(shù)據(jù)類型 大小 主/外鍵 說明
bookno varchar 14?
customname varchar 10? 顧客姓名
customID varchar 18? 身份證號碼
roomno varchar? 10? 客房編號
indate datetime?? 入住時間
discount float??? 折扣%
inmemo text?? 備注信息
checkdate datetime??
ammount float??
4. 客房標(biāo)準(zhǔn)表(roomtype)
字段 數(shù)據(jù)類型 大小 主/外鍵 說明
typeid varchar 10? 標(biāo)準(zhǔn)編號
typename varchar 10? 標(biāo)準(zhǔn)名稱
area float?? 房間面積
bednum int??? 床位數(shù)量
haircondition bit?? 是否有空調(diào)
htelephone bit?? 是否有電話
htelevision bit?? 是否有電視
htoilet bit?? 是否有衛(wèi)生間
price float?? 住房單價/每天
SQL?Server 2008?R2有一個任務(wù)-生成腳本的功能,能備份數(shù)據(jù)庫的結(jié)構(gòu)
以下是從數(shù)據(jù)庫FcBallDB生成的腳本FcBallDB.sql,前面幾句是筆者手動加的:
use master
go
if exists (select * from dbo.sysdatabases where name = 'FcBallDB')
drop database FcBallDB
GO
create database FcBallDB--待創(chuàng)建數(shù)據(jù)庫的名稱
go
USE FcBallDB
GO
/****** Object:? Table [dbo].[BetRecords]??? Script Date: 08/18/2016 21:55:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[BetRecords](
?[id] [int] IDENTITY(1,1) NOT NULL,
?[UserID] [int] NOT NULL,
?[Gold] [int] NOT NULL,
?[Ball] [int] NOT NULL,
?[Settled] [bit] NOT NULL,
?[Term] [int] NOT NULL,
?CONSTRAINT [PK_BetRecords] PRIMARY KEY CLUSTERED
(
?[id] ASC
)WITH (PAD_INDEX? = OFF, STATISTICS_NORECOMPUTE? = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS? = ON, ALLOW_PAGE_LOCKS? = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:? Table [dbo].[Terms]??? Script Date: 08/18/2016 21:55:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Terms](
?[id] [int] IDENTITY(1,1) NOT NULL,
?[term] [int] NOT NULL,
?[ball] [int] NOT NULL,
?CONSTRAINT [PK_Terms] PRIMARY KEY CLUSTERED
(
?[id] ASC
)WITH (PAD_INDEX? = OFF, STATISTICS_NORECOMPUTE? = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS? = ON, ALLOW_PAGE_LOCKS? = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:? StoredProcedure [dbo].[GetRecordsByTerm]??? Script Date: 08/18/2016 21:55:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetRecordsByTerm]
(
?@term int
)
AS
?SET NOCOUNT ON;
SELECT id, UserID, Gold, Ball, Settled, Term FROM dbo.BetRecords
where Term = @term
GO
/****** Object:? StoredProcedure [dbo].[GetLastTerm]??? Script Date: 08/18/2016 21:55:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetLastTerm]
AS
?SET NOCOUNT ON;
SELECT TOP (1) term
FROM Terms
ORDER BY term DESC
GO
/****** Object:? StoredProcedure [dbo].[AddTerm]??? Script Date: 08/18/2016 21:55:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[AddTerm]
(
?@term int,
?@ball int
)
AS
?SET NOCOUNT OFF;
INSERT INTO [dbo].[Terms] ([term], [ball]) VALUES (@term, @ball);
GO
/****** Object:? StoredProcedure [dbo].[AddRecord]??? Script Date: 08/18/2016 21:55:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[AddRecord]
(
?@UserID int,
?@Term int,
?@Gold int,
?@Ball int,
?@Settled bit
)
AS
?SET NOCOUNT OFF;
INSERT INTO [dbo].[BetRecords] ([UserID], [Term], [Gold], [Ball], [Settled]) VALUES (@UserID, @Term, @Gold, @Ball, @Settled);
GO
20181231添加:
機(jī)器人批量改名.sql
?--臨時表
DECLARE @t1 TABLE (ID int,NickName nvarchar(31))
DECLARE @t2 TABLE (ID int,UserID int)
DECLARE @t3 TABLE (ID int,UserID int,NickName nvarchar(31))
INSERT @t1? SELECT UserID as ID,NickName FROM [RYAccountsDB].[dbo].[AccountsInfo]? where nickname not like '%[吖-座]%'
INSERT @t2? SELECT UserID as ID,UserID FROM [qpaccountsdb].[dbo].[AccountsInfo] where nickname like '%[吖-座]%' and isandroid=1
--忽略行數(shù)顯示
SET nocount ON
--創(chuàng)建游標(biāo)
DECLARE aaa CURSOR for select ID,NickName from @t1
--打開游標(biāo)
Open aaa
--聲明變量
DECLARE @i int,@id_temp int,@tdata nvarchar(31)
set @i=0
--遍歷和獲取游標(biāo)
fetch next from aaa into @id_temp,@tdata
--開始循環(huán)
WHILE @@FETCH_STATUS = 0
begin
set @i=@i+1
update @t1 set ID=@i WHERE CURRENT OF aaa
fetch next from aaa into @id_temp,@tdata
end
--關(guān)閉游標(biāo)
Close aaa
--刪除游標(biāo)
Deallocate aaa
--打開計數(shù)
SET nocount OFF
--select * from @t1
--忽略行數(shù)顯示
SET nocount ON
--創(chuàng)建游標(biāo)
DECLARE aaa2 CURSOR for select ID,UserID from @t2
--打開游標(biāo)
Open aaa2
--聲明變量
DECLARE @i2 int,@id_temp2 int,@tdata2 int
set @i2=0
--遍歷和獲取游標(biāo)
fetch next from aaa2 into @id_temp2,@tdata2
--開始循環(huán)
WHILE @@FETCH_STATUS = 0
begin
set @i2=@i2+1
update @t2 set ID=@i2 WHERE CURRENT OF aaa2
fetch next from aaa2 into @id_temp2,@tdata2
end
--關(guān)閉游標(biāo)
Close aaa2
--刪除游標(biāo)
Deallocate aaa2
--打開計數(shù)
SET nocount OFF
--select * from @t2
DECLARE @num1 INT
select @num1=count(1) from @t1
DECLARE @num2 INT
select @num2=count(1) from @t2
--對查詢結(jié)果進(jìn)行左連接
INSERT @t3 select a.ID,a.UserID,b.NickName from @t2 as a left join @t1 as b on a.ID=b.ID
select * from @t3
--忽略行數(shù)顯示
SET nocount ON
--創(chuàng)建游標(biāo)
DECLARE bbb CURSOR for select UserID,NickName from @t3
--打開游標(biāo)
Open bbb
--聲明變量
DECLARE @userid_temp int,@stdata nvarchar(31)
--遍歷和獲取游標(biāo)
fetch next from bbb into @userid_temp,@stdata
--開始循環(huán)
WHILE @@FETCH_STATUS = 0
begin
update [qpaccountsdb].[dbo].[AccountsInfo] set [NickName]=@stdata,accounts=@stdata+convert(nvarchar(20),userid) where UserID=@userid_temp and @stdata is not null and isandroid=1
fetch next from bbb into @userid_temp,@stdata
end
--關(guān)閉游標(biāo)
Close bbb
--刪除游標(biāo)
Deallocate bbb
--打開計數(shù)
SET nocount OFF
20180623添加:
--統(tǒng)計指定日期范圍[adate,bdate]的玩牌數(shù)據(jù)
DECLARE @adate datetime
DECLARE @bdate datetime
--7天內(nèi)
SET @adate = GETDATE()-7
SET @bdate = GETDATE()
--臨時表
DECLARE @tt TABLE (data varchar(100),hy_kind int,jushu int,ajushu varchar(100),pochan int,pochanlv int)--日活躍玩家,總局?jǐn)?shù),平均玩牌局?jǐn)?shù),新手平均玩牌,破產(chǎn)玩家,破產(chǎn)率
DECLARE @t1 TABLE (data varchar(100),hy_kind int,jushu int,ajushu varchar(100))--日注冊玩家,總局?jǐn)?shù),新手平均玩牌
INSERT @tt SELECT CONVERT(varchar(100),CollectDate,23) AS data,COUNT(DISTINCT UserID) AS hy_kind,COUNT(DISTINCT CollectDate) AS jushu,Round(convert(float,COUNT(DISTINCT CollectDate))/convert(float,COUNT(DISTINCT UserID)),2) AS ajushu,null as pochan,null as pochanlv FROM [QPTreasureDB].[dbo].[GameResultDetails] WHERE CONVERT(varchar(100),CollectDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),CollectDate,23)<= CONVERT(varchar(100), @bdate, 23) GROUP BY CONVERT(varchar(100),CollectDate,23) ORDER BY data DESC
INSERT @t1 SELECT CONVERT(varchar(100),RegisterDate,23) AS data,COUNT(1) AS hy_kind,null as jushu,null as ajushu FROM [QPGameUserDB].[dbo].[AccountsInfo] WHERE CONVERT(varchar(100),RegisterDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),RegisterDate,23)<= CONVERT(varchar(100), @bdate, 23) GROUP BY CONVERT(varchar(100),RegisterDate,23) ORDER BY data DESC
--忽略行數(shù)顯示
SET nocount ON
--創(chuàng)建游標(biāo)
DECLARE aa CURSOR for select data,hy_kind,jushu,ajushu,pochan,pochanlv from @tt
--打開游標(biāo)
Open aa
--聲明變量
DECLARE @tdata varchar(100),@thy_kind int,@tjushu int,@tajushu varchar(100),@tpochan int,@tpochanlv int;
--遍歷和獲取游標(biāo)
fetch next from aa into @tdata,@thy_kind,@tjushu,@tajushu,@tpochan,@tpochanlv
--開始循環(huán)
WHILE @@FETCH_STATUS = 0
begin
DECLARE @pochan00 INT
--select @pochan00=count(1) from
select @pochan00=COUNT(DISTINCT A.UserID) from
(select userid,CollectDate FROM [QPTreasureDB].[dbo].[GameResultDetails] as a where totalscore<500 and kindid not in(936,937,941,942,943,950,970))as A
inner join
--(select userid,LatestDate FROM [QPGameUserDB].[dbo].[UserWelfare] as b where DATEDIFF(day,@tdata,b.LatestDate)=0 and b.times=3)as B
(select userid,count(userid) as times,max(CollectDate) as LatestDate FROM [QPGameUserDB].[dbo].[UserScoreLog] as b where DATEDIFF(day,@tdata,b.CollectDate)=0 and b.type=2 group by userid)as B
on A.userid=B.userid and B.times=3 and datediff(s,B.LatestDate,A.CollectDate)>0
? update @tt set pochan=@pochan00,pochanlv=@pochan00*100/@thy_kind WHERE CURRENT OF aa
fetch next from aa into @tdata,@thy_kind,@tjushu,@tajushu,@tpochan,@tpochanlv
end
--關(guān)閉游標(biāo)
Close aa
--刪除游標(biāo)
Deallocate aa
--打開計數(shù)
SET nocount OFF
--select * from @tt
--忽略行數(shù)顯示
SET nocount ON
--創(chuàng)建游標(biāo)
DECLARE aaa CURSOR for select data,hy_kind,jushu,ajushu from @t1
--打開游標(biāo)
Open aaa
--聲明變量
--DECLARE @tdata varchar(100),@thy_kind int,@tjushu int,@tajushu varchar(100);
--遍歷和獲取游標(biāo)
fetch next from aaa into @tdata,@thy_kind,@tjushu,@tajushu
--開始循環(huán)
WHILE @@FETCH_STATUS = 0
begin
? DECLARE @jushu00 INT
select @jushu00=count(1) from
(select userid FROM [QPGameUserDB].[dbo].[AccountsInfo] as a where DATEDIFF(day,@tdata,a.RegisterDate)=0)as A
left join
(select userid FROM [QPTreasureDB].[dbo].[GameResultDetails] as b where DATEDIFF(day,@tdata,b.CollectDate)=0)as B
on A.userid=B.userid
? update @t1 set jushu=@jushu00,ajushu=Round(convert(float,@jushu00)/convert(float,@thy_kind),2) WHERE CURRENT OF aaa
fetch next from aaa into @tdata,@thy_kind,@tjushu,@tajushu
end
--關(guān)閉游標(biāo)
Close aaa
--刪除游標(biāo)
Deallocate aaa
--打開計數(shù)
SET nocount OFF
--對查詢結(jié)果進(jìn)行左連接
select a.data,a.ajushu as ajushu,a.pochanlv as pochanlv,isnull(b.ajushu,0) as ajushu1 from @tt as a
left join @t1 as b on a.data=b.data
--統(tǒng)計指定日期范圍[adate,bdate]的四人場玩牌
DECLARE @adate datetime
DECLARE @bdate datetime
--7天內(nèi)
SET @adate = GETDATE()-7
SET @bdate = GETDATE()
--臨時表
DECLARE @tt TABLE (data varchar(100),hy_kind int,jushu int,ajushu varchar(100))--日活躍玩家,總局?jǐn)?shù),平均玩牌局?jǐn)?shù)
DECLARE @t1 TABLE (data varchar(100),changjun int)--場均結(jié)算倍數(shù)
DECLARE @t2 TABLE (data varchar(100),jushu int)--新手場局?jǐn)?shù)
DECLARE @t3 TABLE (data varchar(100),jushu int)--初級場局?jǐn)?shù)
DECLARE @t4 TABLE (data varchar(100),jushu int)--中級場局?jǐn)?shù)
DECLARE @t5 TABLE (data varchar(100),jushu int)--高級場局?jǐn)?shù)
INSERT @tt SELECT CONVERT(varchar(100),CollectDate,23) AS data,COUNT(DISTINCT UserID) AS hy_kind,COUNT(DISTINCT CollectDate) AS jushu,Round(convert(float,COUNT(DISTINCT CollectDate))/convert(float,COUNT(DISTINCT UserID)),2) AS ajushu FROM [QPTreasureDB].[dbo].[GameResultDetails] WHERE CONVERT(varchar(100),CollectDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),CollectDate,23)<= CONVERT(varchar(100), @bdate, 23) and kindid=999 GROUP BY CONVERT(varchar(100),CollectDate,23) ORDER BY data DESC
INSERT @t1 SELECT CONVERT(varchar(100),CollectDate,23) AS data,avg(Score+Revenue)/avg(cellscore) AS changjun FROM [QPTreasureDB].[dbo].[GameResultDetails] WHERE score>0 and cellscore>0 and CONVERT(varchar(100),CollectDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),CollectDate,23)<= CONVERT(varchar(100), @bdate, 23) and kindid=999 GROUP BY CONVERT(varchar(100),CollectDate,23) ORDER BY data DESC
INSERT @t2 SELECT CONVERT(varchar(100),CollectDate,23) AS data,COUNT(DISTINCT CollectDate) AS jushu0 FROM [QPTreasureDB].[dbo].[GameResultDetails] WHERE roomindex=0 and CONVERT(varchar(100),CollectDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),CollectDate,23)<= CONVERT(varchar(100), @bdate, 23) and kindid=999 GROUP BY CONVERT(varchar(100),CollectDate,23) ORDER BY data DESC
INSERT @t3 SELECT CONVERT(varchar(100),CollectDate,23) AS data,COUNT(DISTINCT CollectDate) AS jushu1 FROM [QPTreasureDB].[dbo].[GameResultDetails] WHERE roomindex=1 and CONVERT(varchar(100),CollectDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),CollectDate,23)<= CONVERT(varchar(100), @bdate, 23) and kindid=999 GROUP BY CONVERT(varchar(100),CollectDate,23) ORDER BY data DESC
INSERT @t4 SELECT CONVERT(varchar(100),CollectDate,23) AS data,COUNT(DISTINCT CollectDate) AS jushu2 FROM [QPTreasureDB].[dbo].[GameResultDetails] WHERE roomindex=2 and CONVERT(varchar(100),CollectDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),CollectDate,23)<= CONVERT(varchar(100), @bdate, 23) and kindid=999 GROUP BY CONVERT(varchar(100),CollectDate,23) ORDER BY data DESC
INSERT @t5 SELECT CONVERT(varchar(100),CollectDate,23) AS data,COUNT(DISTINCT CollectDate) AS jushu3 FROM [QPTreasureDB].[dbo].[GameResultDetails] WHERE roomindex=3 and CONVERT(varchar(100),CollectDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),CollectDate,23)<= CONVERT(varchar(100), @bdate, 23) and kindid=999 GROUP BY CONVERT(varchar(100),CollectDate,23) ORDER BY data DESC
--對查詢結(jié)果進(jìn)行左連接
select a.data,a.ajushu,isnull(b.changjun,0) as changjun,isnull(c.jushu,0) as jushu0,isnull(d.jushu,0) as jushu1,isnull(e.jushu,0) as jushu2,isnull(f.jushu,0) as jushu3 from @tt as a
left join @t1 as b on a.data=b.data
left join @t2 as c on a.data=c.data
left join @t3 as d on a.data=d.data
left join @t4 as e on a.data=e.data
left join @t5 as f on a.data=f.data
--統(tǒng)計指定日期范圍[adate,bdate]的付費(fèi)場景(0-商城, 1-首充, 2-入場金幣不足, 3-降場金幣不足, 4-破產(chǎn)金幣不足, 5-房間內(nèi)購買)
DECLARE @adate datetime
DECLARE @bdate datetime
--400天內(nèi)
SET @adate = GETDATE()-7
SET @bdate = GETDATE()
--臨時表
DECLARE @tt TABLE (data varchar(100),bishu int,totalprice int)
DECLARE @t1 TABLE (data varchar(100),bishu int)
DECLARE @t2 TABLE (data varchar(100),bishu int)
DECLARE @t3 TABLE (data varchar(100),bishu int)
DECLARE @t4 TABLE (data varchar(100),bishu int)
DECLARE @t5 TABLE (data varchar(100),bishu int)
INSERT @tt SELECT CONVERT(varchar(100),RechargeDate,23) AS data,COUNT(1) AS bishu,sum(cast(ProductPrice as int)) AS totalprice FROM QPGameUserDB.dbo.UserRechargeOrder WHERE CONVERT(varchar(100),RechargeDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),RechargeDate,23)<= CONVERT(varchar(100), @bdate, 23) and States=1 GROUP BY CONVERT(varchar(100),RechargeDate,23) ORDER BY data DESC
INSERT @t1 SELECT CONVERT(varchar(100),RechargeDate,23) AS data,COUNT(1) AS bishu FROM QPGameUserDB.dbo.UserRechargeOrder WHERE CONVERT(varchar(100),RechargeDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),RechargeDate,23)<= CONVERT(varchar(100), @bdate, 23) and States=1 and PayScene=1 GROUP BY CONVERT(varchar(100),RechargeDate,23) ORDER BY data DESC
INSERT @t2 SELECT CONVERT(varchar(100),RechargeDate,23) AS data,COUNT(1) AS bishu FROM QPGameUserDB.dbo.UserRechargeOrder WHERE CONVERT(varchar(100),RechargeDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),RechargeDate,23)<= CONVERT(varchar(100), @bdate, 23) and States=1 and PayScene=2 GROUP BY CONVERT(varchar(100),RechargeDate,23) ORDER BY data DESC
INSERT @t3 SELECT CONVERT(varchar(100),RechargeDate,23) AS data,COUNT(1) AS bishu FROM QPGameUserDB.dbo.UserRechargeOrder WHERE CONVERT(varchar(100),RechargeDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),RechargeDate,23)<= CONVERT(varchar(100), @bdate, 23) and States=1 and PayScene=3 GROUP BY CONVERT(varchar(100),RechargeDate,23) ORDER BY data DESC
INSERT @t4 SELECT CONVERT(varchar(100),RechargeDate,23) AS data,COUNT(1) AS bishu FROM QPGameUserDB.dbo.UserRechargeOrder WHERE CONVERT(varchar(100),RechargeDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),RechargeDate,23)<= CONVERT(varchar(100), @bdate, 23) and States=1 and PayScene=4 GROUP BY CONVERT(varchar(100),RechargeDate,23) ORDER BY data DESC
INSERT @t5 SELECT CONVERT(varchar(100),RechargeDate,23) AS data,COUNT(1) AS bishu FROM QPGameUserDB.dbo.UserRechargeOrder WHERE CONVERT(varchar(100),RechargeDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),RechargeDate,23)<= CONVERT(varchar(100), @bdate, 23) and States=1 and PayScene=4 GROUP BY CONVERT(varchar(100),RechargeDate,23) ORDER BY data DESC
--對查詢結(jié)果進(jìn)行左連接
select a.data,isnull(a.bishu,0)as total,a.totalprice as totalprice,isnull(b.bishu,0) as shouchong,isnull(c.bishu,0) as ruchang,isnull(d.bishu,0) as jiangchang,isnull(e.bishu,0) as fangjiannei,isnull(f.bishu,0) as pochan from @tt as a
left join @t1 as b on a.data=b.data
left join @t2 as c on a.data=c.data
left join @t3 as d on a.data=d.data
left join @t4 as e on a.data=e.data
left join @t5 as f on a.data=f.data
--統(tǒng)計指定日期范圍[adate,bdate]的付費(fèi)明細(xì)
DECLARE @adate datetime
DECLARE @bdate datetime
--400天內(nèi)
SET @adate = GETDATE()-399
SET @bdate = GETDATE()
SELECT CONVERT(varchar(100),RechargeDate,23) AS data,ProductName,avg(cast(ProductPrice as int)) as avg_price,COUNT(1) AS bishu FROM QPGameUserDB.dbo.UserRechargeOrder WHERE CONVERT(varchar(100),RechargeDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),RechargeDate,23)<= CONVERT(varchar(100), @bdate, 23) and States=1 GROUP BY CONVERT(varchar(100),RechargeDate,23),productid,ProductName ORDER BY data DESC
--統(tǒng)計指定日期范圍[adate,bdate]的新增留存
DECLARE @adate datetime
DECLARE @bdate datetime
--新增用戶newadd、次日留存crlc、七日留存qrlc、30日留存srlc
--crlc0是次日留存用戶
SET @adate = GETDATE()-40
SET @bdate = GETDATE()-1
--臨時表
DECLARE @t1 TABLE (data varchar(100),newadd int,crlc0 int,crlc int,qrlc0 int,qrlc int,srlc0 int,srlc int)
INSERT @t1 SELECT CONVERT(varchar(100),RegisterDate,23) AS data,COUNT(1) AS newadd,null as crlc0,null as crlc,null as qrlc0,null as qrlc,null as srlc0,null as srlc FROM [QPGameUserDB].[dbo].[AccountsInfo] WHERE CONVERT(varchar(100),RegisterDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),RegisterDate,23)<= CONVERT(varchar(100), @bdate, 23) GROUP BY CONVERT(varchar(100),RegisterDate,23) ORDER BY data DESC
--忽略行數(shù)顯示
SET nocount ON
--創(chuàng)建游標(biāo)
DECLARE aaa CURSOR for select data,newadd,crlc0,crlc,qrlc0,qrlc,srlc0,srlc from @t1
--打開游標(biāo)
Open aaa
--聲明變量
DECLARE @tdata varchar(100)
DECLARE @newadd_temp int,@crlc0_temp int,@crlc_temp int,@qrlc0_temp int,@qrlc_temp int,@srlc0_temp int,@srlc_temp int;
--遍歷和獲取游標(biāo)
fetch next from aaa into @tdata,@newadd_temp,@crlc0_temp,@crlc_temp,@qrlc0_temp,@qrlc_temp,@srlc0_temp,@srlc_temp
--開始循環(huán)
WHILE @@FETCH_STATUS = 0
begin
? DECLARE @crlc00 INT
? select @crlc00=count(1) from(
? select UserID FROM [QPGameUserDB].[dbo].[AccountsInfo] where DATEDIFF(day,@tdata,RegisterDate)=0
? INTERSECT
? SELECT UserID FROM [QPTreasureDB].[dbo].[RecordUserEnter] where DATEDIFF(day,@tdata,EnterTime)=1 group by userid
? )as A
? DECLARE @qrlc00 INT
? select @qrlc00=count(1) from(
? select UserID FROM [QPGameUserDB].[dbo].[AccountsInfo] where DATEDIFF(day,@tdata,RegisterDate)=0
? INTERSECT
? SELECT UserID FROM [QPTreasureDB].[dbo].[RecordUserEnter] where DATEDIFF(day,@tdata,EnterTime)=6 group by userid
? )as B
? DECLARE @srlc00 INT
? select @srlc00=count(1) from(
? select UserID FROM [QPGameUserDB].[dbo].[AccountsInfo] where DATEDIFF(day,@tdata,RegisterDate)=0
? INTERSECT
? SELECT UserID FROM [QPTreasureDB].[dbo].[RecordUserEnter] where DATEDIFF(day,@tdata,EnterTime)=29 group by userid
? )as C
update @t1 set crlc0=@crlc00,crlc=@crlc00*100/@newadd_temp,qrlc0=@qrlc00,qrlc=@qrlc00*100/@newadd_temp,srlc0=@srlc00,srlc=@srlc00*100/@newadd_temp WHERE CURRENT OF aaa
fetch next from aaa into @tdata,@newadd_temp,@crlc0_temp,@crlc_temp,@qrlc0_temp,@qrlc_temp,@srlc0_temp,@srlc_temp
end
--關(guān)閉游標(biāo)
Close aaa
--刪除游標(biāo)
Deallocate aaa
--打開計數(shù)
SET nocount OFF
select * from @t1
--統(tǒng)計金幣房指定日期范圍[adate,bdate]的活躍數(shù)據(jù)
DECLARE @adate datetime
DECLARE @bdate datetime
--7天內(nèi)
SET @adate = GETDATE()-6
SET @bdate = GETDATE()
--臨時表
DECLARE @t1 TABLE (data varchar(100),hy_kind int)
DECLARE @t2 TABLE (data varchar(100),hy_kind int)
DECLARE @t3 TABLE (data varchar(100),hy_kind int)
DECLARE @t4 TABLE (data varchar(100),hy_kind int)
DECLARE @t5 TABLE (data varchar(100),hy_kind int)
INSERT @t1 SELECT CONVERT(varchar(100),CollectDate,23) AS data,COUNT(DISTINCT UserID) AS hy_kind FROM [QPTreasureDB].[dbo].[GameResultDetails] WHERE CONVERT(varchar(100),CollectDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),CollectDate,23)<= CONVERT(varchar(100), @bdate, 23) GROUP BY CONVERT(varchar(100),CollectDate,23) ORDER BY data DESC
INSERT @t2 SELECT CONVERT(varchar(100),CollectDate,23) AS data,COUNT(DISTINCT UserID) AS hy_kind FROM [QPTreasureDB].[dbo].[GameResultDetails] WHERE CONVERT(varchar(100),CollectDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),CollectDate,23)<= CONVERT(varchar(100), @bdate, 23) and kindid not in(936,937,941,942,943,950,970) GROUP BY CONVERT(varchar(100),CollectDate,23) ORDER BY data DESC
INSERT @t3 SELECT CONVERT(varchar(100),CollectDate,23) AS data,COUNT(DISTINCT UserID) AS hy_kind FROM [QPTreasureDB].[dbo].[GameResultDetails] WHERE CONVERT(varchar(100),CollectDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),CollectDate,23)<= CONVERT(varchar(100), @bdate, 23) and kindid=999 GROUP BY CONVERT(varchar(100),CollectDate,23) ORDER BY data DESC
INSERT @t4 SELECT CONVERT(varchar(100),CollectDate,23) AS data,COUNT(DISTINCT UserID) AS hy_kind FROM [QPTreasureDB].[dbo].[GameResultDetails] WHERE CONVERT(varchar(100),CollectDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),CollectDate,23)<= CONVERT(varchar(100), @bdate, 23) and kindid=932 GROUP BY CONVERT(varchar(100),CollectDate,23) ORDER BY data DESC
INSERT @t5 SELECT CONVERT(varchar(100),CollectDate,23) AS data,COUNT(DISTINCT UserID) AS hy_kind FROM [QPTreasureDB].[dbo].[GameResultDetails] WHERE CONVERT(varchar(100),CollectDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),CollectDate,23)<= CONVERT(varchar(100), @bdate, 23) and kindid=934 GROUP BY CONVERT(varchar(100),CollectDate,23) ORDER BY data DESC
--對查詢結(jié)果進(jìn)行左連接
select a.data,isnull(a.hy_kind,0)as hy_kindall,isnull(b.hy_kind,0) as hy_kindjbf,isnull(c.hy_kind,0) as hy_kind999,isnull(d.hy_kind,0) as hy_kind932,isnull(e.hy_kind,0) as hy_kind934 from @t1 as a left join @t2 as b on a.data=b.data left join @t3 as c on a.data=c.data left join @t4 as d on a.data=d.data left join @t5 as e on a.data=e.data
--統(tǒng)計金幣房指定日期范圍[adate,bdate]的活躍數(shù)據(jù)old
DECLARE @adate datetime
DECLARE @bdate datetime
--7天內(nèi)
SET @adate = GETDATE()-6
SET @bdate = GETDATE()
--臨時表
DECLARE @t1 TABLE (data varchar(100),hy_kind int)
DECLARE @t2 TABLE (data varchar(100),hy_kind int)
DECLARE @t3 TABLE (data varchar(100),hy_kind int)
DECLARE @t4 TABLE (data varchar(100),hy_kind int)
INSERT @t1 SELECT CONVERT(varchar(100),CollectDate,23) AS data,COUNT(DISTINCT UserID) AS hy_kind FROM [QPTreasureDB].[dbo].[GameResultDetails] WHERE CONVERT(varchar(100),CollectDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),CollectDate,23)<= CONVERT(varchar(100), @bdate, 23) GROUP BY CONVERT(varchar(100),CollectDate,23) ORDER BY data DESC
INSERT @t2 SELECT CONVERT(varchar(100),CollectDate,23) AS data,COUNT(DISTINCT UserID) AS hy_kind FROM [QPTreasureDB].[dbo].[GameResultDetails] WHERE CONVERT(varchar(100),CollectDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),CollectDate,23)<= CONVERT(varchar(100), @bdate, 23) and kindid=999 GROUP BY CONVERT(varchar(100),CollectDate,23) ORDER BY data DESC
INSERT @t3 SELECT CONVERT(varchar(100),CollectDate,23) AS data,COUNT(DISTINCT UserID) AS hy_kind FROM [QPTreasureDB].[dbo].[GameResultDetails] WHERE CONVERT(varchar(100),CollectDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),CollectDate,23)<= CONVERT(varchar(100), @bdate, 23) and kindid=932 GROUP BY CONVERT(varchar(100),CollectDate,23) ORDER BY data DESC
INSERT @t4 SELECT CONVERT(varchar(100),CollectDate,23) AS data,COUNT(DISTINCT UserID) AS hy_kind FROM [QPTreasureDB].[dbo].[GameResultDetails] WHERE CONVERT(varchar(100),CollectDate,23)>= CONVERT(varchar(100), @adate, 23) and CONVERT(varchar(100),CollectDate,23)<= CONVERT(varchar(100), @bdate, 23) and kindid=934 GROUP BY CONVERT(varchar(100),CollectDate,23) ORDER BY data DESC
--對查詢結(jié)果進(jìn)行左連接
select a.data,isnull(a.hy_kind,0)as hy_kindall,isnull(b.hy_kind,0) as hy_kind999,isnull(c.hy_kind,0) as hy_kind932,isnull(d.hy_kind,0) as hy_kind934 from @t1 as a left join @t2 as b on a.data=b.data left join @t3 as c on a.data=c.data left join @t4 as d on a.data=d.data
--統(tǒng)計金幣房最近nDay天的活躍數(shù)據(jù)
DECLARE @nDay INT
SET @nDay = 7
--臨時表
DECLARE @t1 TABLE (data varchar(100),hy_kind int)
DECLARE @t2 TABLE (data varchar(100),hy_kind int)
DECLARE @t3 TABLE (data varchar(100),hy_kind int)
DECLARE @t4 TABLE (data varchar(100),hy_kind int)
INSERT @t1 SELECT CONVERT(varchar(100),CollectDate,23) AS data,COUNT(DISTINCT UserID) AS hy_kind FROM [QPTreasureDB].[dbo].[GameResultDetails] WHERE CONVERT(varchar(100),CollectDate,23)> CONVERT(varchar(100), GETDATE()-@nDay, 23) GROUP BY CONVERT(varchar(100),CollectDate,23) ORDER BY data DESC
INSERT @t2 SELECT CONVERT(varchar(100),CollectDate,23) AS data,COUNT(DISTINCT UserID) AS hy_kind FROM [QPTreasureDB].[dbo].[GameResultDetails] WHERE CONVERT(varchar(100),CollectDate,23)> CONVERT(varchar(100), GETDATE()-@nDay, 23) and kindid=999 GROUP BY CONVERT(varchar(100),CollectDate,23) ORDER BY data DESC
INSERT @t3 SELECT CONVERT(varchar(100),CollectDate,23) AS data,COUNT(DISTINCT UserID) AS hy_kind FROM [QPTreasureDB].[dbo].[GameResultDetails] WHERE CONVERT(varchar(100),CollectDate,23)> CONVERT(varchar(100), GETDATE()-@nDay, 23) and kindid=932 GROUP BY CONVERT(varchar(100),CollectDate,23) ORDER BY data DESC
INSERT @t4 SELECT CONVERT(varchar(100),CollectDate,23) AS data,COUNT(DISTINCT UserID) AS hy_kind FROM [QPTreasureDB].[dbo].[GameResultDetails] WHERE CONVERT(varchar(100),CollectDate,23)> CONVERT(varchar(100), GETDATE()-@nDay, 23) and kindid=934 GROUP BY CONVERT(varchar(100),CollectDate,23) ORDER BY data DESC
--對查詢結(jié)果進(jìn)行左連接
select a.data,isnull(a.hy_kind,0)as hy_kindall,isnull(b.hy_kind,0) as hy_kind999,isnull(c.hy_kind,0) as hy_kind932,isnull(d.hy_kind,0) as hy_kind934 from @t1 as a left join @t2 as b on a.data=b.data left join @t3 as c on a.data=c.data left join @t4 as d on a.data=d.data
SQL獲取數(shù)據(jù)庫名,表名,列名,說明等信息
https://www.cnblogs.com/tuqun/p/3724000.html
執(zhí)行如下SQL語句:
use [QPTreasureDB];
SELECT 字段名 = Rtrim(b.name)
?????? ,主鍵 = CASE
?????????????? WHEN h.id IS NOT NULL THEN 'PK'
?????????????? ELSE ''
???????????? END
?????? ,字段類型 = Type_name(b.xusertype)
??????????????? + CASE
??????????????????? WHEN b.colstat & 1 = 1 THEN '[ID('
???????????????????????????????????????????????? + CONVERT(VARCHAR,Ident_seed(a.name))
???????????????????????????????????????????????? + ','
???????????????????????????????????????????????? + CONVERT(VARCHAR,Ident_incr(a.name))
???????????????????????????????????????????????? + ')]'
??????????????????? ELSE ''
????????????????? END
?????? ,長度 = b.length
?????? ,允許空 = CASE b.isnullable
??????????????? WHEN 0 THEN 'N'
??????????????? ELSE 'Y'
????????????? END
?????? ,默認(rèn)值 = Isnull(e.TEXT,'')
?????? ,字段說明 = Isnull(c.VALUE,'')
FROM???? sysobjects a
???????? INNER JOIN? sys.all_objects aa
?????????? ON a.id=aa.object_id
????????????? AND? schema_name(schema_id)='dbo'
???????? ,syscolumns b
???????? LEFT OUTER JOIN sys.extended_properties c
?????????? ON b.id = c.major_id
????????????? AND b.colid = c.minor_id
???????? LEFT OUTER JOIN syscomments e
?????????? ON b.cdefault = e.id
???????? LEFT OUTER JOIN (SELECT g.id
???????????????????????????????? ,g.colid
????????????????????????? FROM?? sysindexes f
???????????????????????????????? ,sysindexkeys g
????????????????????????? WHERE? (f.id = g.id)
???????????????????????????????? AND (f.indid = g.indid)
???????????????????????????????? AND (f.indid > 0)
???????????????????????????????? AND (f.indid < 255)
???????????????????????????????? AND (f.status & 2048) <> 0) h
?????????? ON (b.id = h.id)
????????????? AND (b.colid = h.colid)
WHERE??? (a.id = b.id)
???????? AND (a.id = Object_id('[GameScoreInfo]'))? --要查詢的表改成你要查詢表的名稱
ORDER BY b.colid
執(zhí)行結(jié)果:
字段名|主鍵|字段類型|長度|允許空|默認(rèn)值|字段說明
UserID|PK|int|4|N||用戶 ID
Score||bigint|8|N|((30))|用戶積分(貨幣)
BankScore||bigint|8|N|((0))|
Revenue||bigint|8|N|((0))|游戲稅收
InsureScore||bigint|8|N|((0))|銀行金幣
WinCount||int|4|N|((0))|勝局?jǐn)?shù)目
LostCount||int|4|N|((0))|輸局?jǐn)?shù)目
DrawCount||int|4|N|((0))|和局?jǐn)?shù)目
FleeCount||int|4|N|((0))|逃局?jǐn)?shù)目
UserRight||int|4|N|((0))|用戶權(quán)限
MasterRight||int|4|N|((0))|管理權(quán)限
MasterOrder||tinyint|1|N|((0))|管理等級
RegisterIP||nvarchar|30|N||注冊 IP
LastLogonIP||nvarchar|30|N||上次登陸 IP
RegisterDate||datetime|8|N|(getdate())|注冊時間
LastLogonDate||datetime|8|N|(getdate())|上次登陸時間
AllLogonTimes||int|4|N|((0))|總登陸次數(shù)
PlayTimeCount||int|4|N|((0))|游戲時間
OnLineTimeCount||int|4|N|((0))|在線時間
RankingStatus||int|4|N|((1))|
[QPServerInfoDB].[dbo].[GameBBS]表:
字段名|主鍵|字段類型|長度|允許空|默認(rèn)值|字段說明
ID||int[ID(1,1)]|4|N||
IsValid||smallint|2|N|((0))|
Type||smallint|2|N|((0))|
Date||datetime|8|N|(getdate())|
Title||nvarchar|256|Y||
Details||nvarchar|1024|Y||
Action||smallint|2|N|((0))|
AttachInfo||nvarchar|128|Y||
ClientName||nvarchar|64|N|(N'')|
StartDate||datetime|8|Y|(getdate())|
EndDate||datetime|8|Y|(getdate())|
[QPTeaHouse].[dbo].[House]表:
字段名|主鍵|字段類型|長度|允許空|默認(rèn)值|字段說明
id||int[ID(1,1)]|4|N||
house_id||varchar|32|Y||茶樓ID
create_id||int|4|Y||樓主ID
playe_rule||varchar|512|Y||茶樓玩法
announcement||varchar|256|Y||茶樓公告
table_sum||int|4|Y||桌子數(shù)量
name||varchar|64|Y||茶樓名字
create_time||datetime|8|N||創(chuàng)建時間
kindid||int|4|N||茶樓KIND
needCheck||int|4|N|((0))|0需要1不需要
[QPGameUserDB].[dbo].[AccountsInfo]表:
字段名|主鍵|字段類型|長度|允許空|默認(rèn)值|字段說明
UserID|PK|int[ID(30003000,1)]|4|N||用戶標(biāo)識
GameID||int|4|N|((0))|游戲標(biāo)識
ProtectID||int|4|N|((0))|密保標(biāo)識
Accounts||nvarchar|62|N||用戶帳號
RegAccounts||nvarchar|62|N||注冊帳號
OpenID||nvarchar|64|Y||
UnionID||nvarchar|128|Y||
FaceUrl||nvarchar|512|Y||
Phone||nvarchar|62|N|('')|
UnderWrite||nvarchar|126|N|('')|個性簽名
LogonPass||nchar|64|N||登錄密碼
InsurePass||nvarchar|64|Y|(N'')|安全密碼
SpreaderID||nvarchar|62|N|(N'')|推薦人標(biāo)識
FaceID||smallint|2|N|((0))|頭像標(biāo)識
Experience||int|4|N|((0))|經(jīng)驗數(shù)值
UserRight||int|4|N|((0))|用戶權(quán)限
MasterRight||int|4|N|((0))|管理權(quán)限
ServiceRight||int|4|N|((0))|服務(wù)權(quán)限
MasterOrder||tinyint|1|N|((0))|管理等級
MemberOrder||tinyint|1|N|((0))|會員等級
MemberOverDate||datetime|8|N|(((1980)-(1))-(1))|過期日期
Loveliness||int|4|N|((0))|
Gender||tinyint|1|N|((0))|用戶性別
Nullity||bit|1|N|((0))|禁止服務(wù)
StunDown||bit|1|N|((0))|關(guān)閉標(biāo)志
MoorMachine||tinyint|1|N|((0))|固定機(jī)器
MachineSerial||nchar|64|N|('')|機(jī)器序列
IDName||nvarchar|64|Y||
IDCard||nvarchar|64|Y||
WebLogonTimes||int|4|N|((0))|登錄次數(shù)
GameLogonTimes||int|4|N|((0))|登錄次數(shù)
RegisterIP||nvarchar|30|N||注冊地址
LastLogonIP||nvarchar|30|N||登錄地址
RegisterDate||datetime|8|N|(getdate())|注冊時間
LastLogonDate||datetime|8|N|(getdate())|登錄時間
CustomFaceVer||tinyint|1|Y|((0))|
IsGuest||tinyint|1|Y|((0))|
?
數(shù)據(jù)類型說明:
BIT 1位的整型,例如Nullity禁止服務(wù)字段、StunDown關(guān)閉標(biāo)志字段
只能表示0或1,一般不用來存儲整數(shù),而用來表示真假邏輯關(guān)系(TRUE/FALSE)。
?
TINY INT 1字節(jié)的整型,例如MasterOrder管理等級字段
可以存儲-2EXP(7)到2EXP(7)的所有正負(fù)整數(shù),范圍從-255到255。每個TINY INT類型占1字節(jié)(8BIT),其中
7BIT表明數(shù)的大小。1BIT表示符號位(正或負(fù))。
SMALL INT 2字節(jié)的整型,例如Type字段
SMALL INT可以存儲-2EXP(15)到2EXP(15)的所有正負(fù)整數(shù),范圍從-32768到32767。每個SMALL INT類型占2字
節(jié)(16BIT),其中15BIT表明數(shù)的大小。1BIT表示符號位(正或負(fù))。
?
INT 4字節(jié)的整型
INT 是幾種整數(shù)類型中常用的一種。可以存儲-2EXP(31)到2EXP(31)的所有正負(fù)整數(shù),范圍從-2147483648到
2147483647。每個INT類型占4字節(jié)(32BIT),其中31BIT表明數(shù)的大小。1BIT表示符號位(正或負(fù))。
BIGINT 8字節(jié)的整型
BIGINT 可以存儲-2EXP(63)到2EXP(63)的所有正負(fù)整數(shù),范圍從-9223372036854775808到
9223372036854775807。每個BIGINT類型占8字節(jié)(64BIT),其中63BIT表明數(shù)的大小。1BIT表示符號位(正或
負(fù))。
?
日期/時間類型
使用datetime數(shù)據(jù)類型存儲從1753年1月1日至9999年12月31日的日期(每個數(shù)值要求8個字節(jié)的存儲空間)。例如RegisterDate注冊時間字段
使用smalldatetime數(shù)據(jù)類型存儲從1900年1月1日至2079年6月6日的日期(每個數(shù)值要求4個字節(jié)的存儲空間)。
字符數(shù)據(jù)類型
CHAR(n) :n個字節(jié),存儲n個字節(jié)的固定長度非Unicode的字符數(shù)據(jù)。n必須是一個介于1和8,000之間的數(shù)值。
NCHAR(n) :2n個字節(jié)。包含n個字符的固定長度Unicode字符數(shù)據(jù)。n必須是一個介于1和8,000之間的數(shù)值。例如LogonPass登錄密碼字段nchar(32),64字節(jié)
varchar(n):最大為n個字節(jié)。最大長度為n個字節(jié)的可變長度且非 Unicode 的字符數(shù)據(jù)。使用varchar(n)可以
節(jié)省不少使用空間。例如house_id茶樓ID字段varchar(32),最大為32的字節(jié)
Nvarchar(n):最大為2n個字節(jié)。字節(jié)的存儲大小是所輸入字符個數(shù)n的兩倍。例如RegisterIP注冊IP字段nvarchar(15),最大為30的字節(jié)
湖南麻將[QPTreasureDB].[dbo].[PrivateGameRecord]表:
字段名|主鍵|字段類型|長度|允許空|默認(rèn)值|字段說明
RecordID||int[ID(1,1)]|4|N||
UserDate||image|16|Y||
InsertTime||datetime|8|N|(getdate())|
二進(jìn)制數(shù)據(jù)類型
binary (n) :固定長度的n個字節(jié)二進(jìn)制數(shù)據(jù)。N必須從1到8,000。存儲空間大小為 n+4 字節(jié)。
varbinary(n):n個字節(jié)變長二進(jìn)制數(shù)據(jù)。n必須從1到8,000。存儲空間大小為實(shí)際輸入數(shù)據(jù)長度+4個字節(jié),
而不是n個字節(jié)。輸入的數(shù)據(jù)長度可能為0字節(jié)。
例如:設(shè)置binary(5),插入0Xaabbccdd,則實(shí)際插入顯示為0Xaabbccdd00(在后面補(bǔ)0)。
而插入0Xabbccddee,則實(shí)際插入顯示0X0abbccddee。(先在數(shù)字前面加0)
binary
固定長度的二進(jìn)制數(shù)據(jù),其最大長度為 8,000 個字節(jié)。
varbinary
可變長度的二進(jìn)制數(shù)據(jù),其最大長度為 8,000 個字節(jié)。
image,例如UserDate字段
可變長度的二進(jìn)制數(shù)據(jù),其最大長度為 2^31 - 1 (2,147,483,647) 個字節(jié)
text
服務(wù)器代碼頁中的可變長度非 Unicode 數(shù)據(jù)的最大長度為 231-1 (2,147,483,647) 個字符。當(dāng)服務(wù)器代碼頁使用雙字節(jié)字符時,存儲量仍是 2,147,483,647 字節(jié)。存儲大小可能小于 2,147,483,647 字節(jié)(取決于字符串)。
SQL Server 小數(shù)類型(float 和 decimal
float 表示近似數(shù)值,存在精度損失,數(shù)據(jù)類型是 float(n),n是可選的,默認(rèn)類型是float(53),占用8bytes。雖然n的取值范圍是1-53,實(shí)際上,float 只能表示兩種類型float(53) 和 float(24),分別占用 8Bytes 和 4Bytes。
decimal不存在精度損失,數(shù)據(jù)類型decimal(p,s) 需要分別指定小數(shù)的最大位數(shù)(p)和小數(shù)位的數(shù)量(s):
decimal(18,2)占用9bytes。
SQL Server數(shù)據(jù)庫(時間戳timestamp)類型
timestamp數(shù)據(jù)類型存儲大小為8個字節(jié)
?
總結(jié)
以上是生活随笔為你收集整理的access/sql server笔记(20160818)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10019---记录一次壮烈牺牲的阿里巴
- 下一篇: 选购笔记本要看清液晶屏幕及主流技术