?? 2007100814100729938.txt
字號:
Top
回復人: oldsky(九指神丐) ( ) 信譽:54 2003-3-19 13:13:09 得分:0
微軟不公布SQLserver2000中的函數:
print pwdcompare('helloworld', pwdencrypt('helloworld'))
print pwdcompare('hello', pwdencrypt('world'))
Top
回復人: funboy88(司令) ( ) 信譽:121 2003-3-19 13:20:20 得分:0
pwdencrypt
密碼加密?
有些什么作用,不明白
隨機取出10條數據
select top 10 * from tablename order by newid()
Top
回復人: mzcih(小馬過河) ( ) 信譽:110 2003-3-19 13:25:31 得分:0
看君一張貼,勝看一天書。
Top
回復人: funboy88(司令) ( ) 信譽:121 2003-3-19 13:26:48 得分:5
功能:
type vender pcs
電腦 A 1
電腦 A 1
光盤 B 2
光盤 A 2
手機 B 3
手機 C 3
select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type
Top
回復人: funboy88(司令) ( ) 信譽:121 2003-3-19 13:30:27 得分:0
FUNCTION:DELELTE REPEAT RECORDS
DELETE from tablename where id not in (select max(id) from tablename group by col1,col2,...)
Top
回復人: chonboy(一只來自南方的羊) ( ) 信譽:100 2003-3-19 14:32:56 得分:0
Microsoft SQL Server是如何加密口令的?未公開的加密函數?
如果對MSSQL的用戶信息有興趣的,可能會發現master.dbo.sysxlogins里面存放著用戶的口令,可是呢,password字段如果不是null就是一堆看不懂的binary,這個口令是怎么加密的呢?
其實只要仔細看看master.dbo.sp_addlogin就知道了,MSSQL的sp都可以看到代碼,真是不錯。
讓我們來看看它是怎么做的,注意這一行select @passwd = pwdencrypt(@passwd),這個時后@passwd就被加密了,讓我們也來試一下
DECLARE @ClearPWD varchar(255)
DECLARE @EncryptedPWD varbinary(255)
SELECT @ClearPWD = 'test'
SELECT @EncryptedPWD = CONVERT(varbinary(255), pwdencrypt(@ClearPWD))
SELECT @EncryptedPWD
看上去不錯,確實被加密了,可是我怎么還原呢?
呵呵,這就沒戲了,口令加密都是單向的,用加密后的密文來比較就可以了。
繼續看看其它用戶相關的sp,可以發現master.dbo.sp_password里面有口令比較的內容。
pwdcompare(@old, password, (CASE WHEN xstatus&2048 = 2048 THEN 1 ELSE 0 END))
不用去理會xstatus,這是一個狀態掩碼,一般我們用的時候就直接用0就可以了
DECLARE @ClearPWD varchar(255)
DECLARE @EncryptedPWD varbinary(255)
SELECT @ClearPWD = 'test'
SELECT @EncryptedPWD = CONVERT(varbinary(255), pwdencrypt(@ClearPWD))
SELECT pwdcompare(@ClearPWD, @EncryptedPWD, 0)
SELECT pwdcompare('ErrorPassword', @EncryptedPWD, 0)
這樣我們就可以使用這兩個函數來加密自己的密碼了,怎么樣,還不錯吧?
引用自
http://www.bgchina.com/daily/bd_1/
Top
回復人: csdntoll(低調慣了) ( ) 信譽:147 2003-3-20 10:00:45 得分:0
SELECT語法:(基本)
SELECT [DISTINCT]
(column [{, column } ] )| *
FROM table [ { , table} ]
[ORDER BY column [ASC] | [DESC
[{ , column [ASC] | [DESC } ] ]
WHERE predicate [ { logical-connector predicate } ];
------------------------------------------------------
INSERT語法:
INSERT INTO table
[(column { ,column})]
VALUES
(columnvalue [{,columnvalue}]);
------------------------------------------------------
UPDATE語法:
UPDATE table
SET column = value [{, column = value}]
[ WHERE predicate [ { logical-connector predicate}]];
------------------------------------------------------
DELETE語法:
DELETE FROM table
[WHERE predicate [ { logical-connector predicate} ] ];
------------------------------------------------------
Top
回復人: liuzxit(每日暈十幾次) ( ) 信譽:115 2003-3-20 10:13:05 得分:0
想把我那兩頁長的SELECT語句拿出來了﹐不過沒興趣
Top
回復人: lgj1012(oοО○≮國產超人≯○Оοo) ( ) 信譽:99 2003-3-20 10:13:41 得分:0
MARK MARK
Top
回復人: csdntoll(低調慣了) ( ) 信譽:147 2003-3-20 10:41:56 得分:0
常識補充
統計函數:
AVG(字段名) 得出一個表格欄平均值
COUNT(*|字段名) 對數據行數的統計或對某一欄有值的數據行數統計
MAX(字段名) 取得一個表格欄最大的值
MIN(字段名) 取得一個表格欄最小的值
SUM(字段名) 把數據欄的值相加
eg:
sql="select sum(字段名) as 別名 from 數據表 where 條件表達式"
Top
回復人: carl__yao(頭目) ( ) 信譽:95 2003-3-20 10:50:06 得分:0
select top 0 * into b from a
Top
回復人: flashasp(flashasp) ( ) 信譽:95 2003-3-20 13:05:01 得分:0
select name from sysobjects where type='U''列出數據庫里所有的表名
select name from syscolumns where id=object_id('TableName')'列出表里的所有的
Top
回復人: flashasp(flashasp) ( ) 信譽:95 2003-3-20 13:05:47 得分:0
select name from sysobjects where type='U''列出數據庫里所有的表名
select name from syscolumns where id=object_id('TableName')'列出表里的所有的字段名
Top
回復人: annkie(無聲的雨) ( ) 信譽:113 2003-3-20 13:27:22 得分:0
幫忙看看這個帖子,解決了我想貼在這里應該是可以的 :)
http://expert.csdn.net/Expert/topic/1554/1554516.xml?temp=.6041071
Top
回復人: flyinto(孤獨求敗) ( ) 信譽:100 2003-3-20 14:14:42 得分:0
MARK
Top
回復人: yonghengdizhen(剎那←→永恒) ( ) 信譽:112 2003-3-20 14:15:00 得分:0
source data
kzx4dm xbdm jylsfsdm ...
11 2 10
11 2 10
12 2 10
12 1 20
12 1 20
destination:
kzx4dm bys_count yjs_count jy_ratio
11 2 2 1.00
12 3 1 1/3
SELECT DISTINCT kzx4dm,(SELECT COUNT(jylsfsdm) FROM tablename WHERE kzx4dm=TA.kzx4dm) AS bys_count,(SELECT COUNT(jylsfsdm) FROM tablename WHERE kzx4dm=TA.kzx4dm WHERE jylsfsdm=10) AS yjs_count,yjs_count/bys_count AS jy_ratio
FROM tablename AS TA
Top
回復人: yonghengdizhen(剎那←→永恒) ( ) 信譽:112 2003-3-20 14:18:35 得分:10
to annkie(活著便精彩)
看看上面的語句是否解決了問題?
糾正一下,應該是
SELECT DISTINCT kzx4dm,(SELECT COUNT(jylsfsdm) FROM tablename WHERE kzx4dm=TA.kzx4dm) AS bys_count,(SELECT COUNT(jylsfsdm) FROM tablename WHERE kzx4dm=TA.kzx4dm AND jylsfsdm=10) AS yjs_count,yjs_count/bys_count AS jy_ratio
FROM tablename AS TA
Top
回復人: GageCSDN(稻草人) ( ) 信譽:100 2003-3-20 17:30:45 得分:0
seeing........
Top
回復人: allserver(server) ( ) 信譽:100 2003-3-20 19:13:25 得分:0
8錯
Top
回復人: kirc(無聊中...) ( ) 信譽:100 2003-3-20 19:16:32 得分:0
關注....
Top
回復人: annkie(無聲的雨) ( ) 信譽:113 2003-3-20 19:28:23 得分:0
To yonghengdizhen:
thank you.
正在研究此問題中.
yjs_count/bys_count AS jy_ratio 這句無法通過檢查,不過可以把前面的東西拿倒這里來搞定,不使用字段名.
你的sql語句是對的.
Top
回復人: flyycyu(fly) ( ) 信譽:100 2003-3-21 9:36:40 得分:0
gz
Top
回復人: csdntoll(低調慣了) ( ) 信譽:147 2003-3-21 10:02:00 得分:0
我決定:把200分中的180分,獎給貼出最精妙的SQL的高手!
Top
回復人: yonghengdizhen(剎那←→永恒) ( ) 信譽:112 2003-3-21 11:00:52 得分:0
二維表 T(F1,F2,F3,F4,F5,F6,F7) 表示如下關系:
學生ID 學生姓名 課程ID 課程名稱 成績 教師ID 教師姓名
S3 王五 K4 政治 53 T4 趙老師
S1 張三 K1 數學 61 T1 張老師
S2 李四 K3 英語 88 T3 李老師
S1 張三 K4 政治 77 T4 趙老師
S2 李四 K4 政治 67 T5 周老師
S3 王五 K2 語文 90 T2 王老師
S3 王五 K1 數學 55 T1 張老師
S1 張三 K2 語文 81 T2 王老師
S4 趙六 K2 語文 59 T1 王老師
S1 張三 K3 英語 37 T3 李老師
S2 李四 K1 數學 81 T1 張老師
請以一句 T-SQL (Ms SQL Server) 或 Jet SQL (Ms Access) 在 原表 T 基礎上作答
1.如果 T 表還有一字段 F0 數據類型為自動增量整型(唯一,不會重復),
而且 T 表中含有除 F0 字段外,請刪除其它字段完全相同的重復多余的臟記錄數據:
delete from t where f0 in(select max(f0) from t group by f1,f2,f3,f4,f5,f6,f7 having count(f0)>1)
2.列印各科成績最高和最低的記錄: (就是各門課程的最高、最低分的學生和老師)
課程ID,課程名稱,最高分,學生ID,學生姓名,教師ID,教師姓名,最低分,學生ID,學生姓名,教師ID,教師姓名
select tb.f4,tb.f3,tb1.f5,tb.f1,tb.f2,tb.f6,tb.f7,tb2.f5,tb2.f1,tb2.f2,tb2.f6,tb2.f7 from t tb where
f5=(select max(f5) from t where t.f4=tb.f4)
join select f2,f7 from t tb2 where
f5=(select min(f5) from t where t.f4=tb2.f4)
on tb.f4=tb2.f4
先完成一個,想想在做下一個.
3.按成績從高到低順序,列印所有學生四門(數學,語文,英語,政治)課程成績: (就是每個學生的四門課程的成績單)
學生ID,學生姓名,數學,語文,英語,政治,有效課程數,有效平均分
(注: 有效課程即在 T 表中有該學生的成績記錄,如不明白可不列印"有效課程數"和"有效平均分")
select tb1.f1,tb1.f2,count(tb1.f5) as scores,sum(tb1.f5) as scoresum, avg(tb1.f5) AS average,
tb2.f5,tb3.f5,tb4.f5,tb5.f5
from t as tb1
left join t as tb2
on tb1.f0=tb2.f0 and tb2.f3=k4
left join t as tb3
on tb1.f0=tb3.f0 and tb3.f3=k3
left join t as tb4
on tb1.f0=tb4.f0 and tb4.f3=k2
left join t as tb5
on tb1.f0=tb5.f0 and tb5.f3=k1
grout by tb1.f2 order by tb1.scoresum desc
4.按各科不及格率的百分數從低到高和平均成績從高到低順序,統計并列印各科平均成績和不及格率的百分數(用"N行"表示): (就是分析哪門課程難)
課程ID,課程名稱,平均成績,及格百分數
select f3,f4, (select count(f1) from t where t.f4=tb.f4 and f5<60)/(select count(f1) from t where t.f4=tb.f4) as failper,((select sum(f5) from t where t.f4=tb.f4)/ (select count(f5) from t where t.f4=tb.f4)) as averagescore
from t tb order by failper asc, as averagescore desc
Top
回復人: wenhao676(zzc) ( ) 信譽:93 2003-3-21 11:01:50 得分:0
/****** Object: Stored Procedure dbo.dt_checkoutobject Script Date: 2003-3-12 9:25:26 ******/
create proc dbo.dt_checkoutobject
@chObjectType char(4),
@vchObjectName varchar(255),
@vchComment varchar(255),
@vchLoginName varchar(255),
@vchPassword varchar(255),
@iVCSFlags int = 0,
@iActionFlag int = 0/* 0 => Checkout, 1 => GetLatest, 2 => UndoCheckOut */
as
set nocount on
declare @iReturn int
declare @iObjectId int
select @iObjectId =0
declare @VSSGUID varchar(100)
select @VSSGUID = 'SQLVersionControl.VCS_SQL'
declare @iReturnValue int
select @iReturnValue = 0
declare @vchTempText varchar(255)
/* this is for our strings */
declare @iStreamObjectId int
select @iStreamObjectId = 0
declare @iPropertyObjectId int
select @iPropertyObjectId = (select objectid from dbo.dtproperties where property = 'VCSProjectID')
declare @vchProjectName varchar(255)
declare @vchSourceSafeINI varchar(255)
declare @vchServerName varchar(255)
declare @vchDatabaseName varchar(255)
exec dbo.dt_getpropertiesbyid_vcs @iPropertyObjectId, 'VCSProject', @vchProjectName OUT
exec dbo.dt_getpropertiesbyid_vcs @iPropertyObjectId, 'VCSSourceSafeINI', @vchSourceSafeINI OUT
exec dbo.dt_getpropertiesbyid_vcs @iPropertyObjectId, 'VCSSQLServer', @vchServerName OUT
exec dbo.dt_getpropertiesbyid_vcs @iPropertyObjectId, 'VCSSQLDatabase', @vchDatabaseName OUT
if @chObjectType = 'PROC'
begin
/* Procedure Can have up to three streams
Drop Stream, Create Stream, GRANT stream */
exec @iReturn = sp_OACreate @VSSGUID, @iObjectId OUT
if @iReturn <> 0 GOTO E_OAError
exec @iReturn = sp_OAMethod @iObjectId,
'CheckOut_StoredProcedure',
NULL,
@sProjectName = @vchProjectName,
@sSourceSafeINI = @vchSourceSafeINI,
@sObjectName = @vchObjectName,
@sServerName = @vchServerName,
@sDatabaseName = @vchDatabaseName,
@sComment = @vchComment,
@sLoginName = @vchLoginName,
@sPassword = @vchPassword,
@iVCSFlags = @iVCSFlags,
@iActionFlag = @iActionFlag
if @iReturn <> 0 GOTO E_OAError
exec @iReturn = sp_OAGetProperty @iObjectId, 'GetStreamObject', @iStreamObjectId OUT
if @iReturn <> 0 GOTO E_OAError
create table #commenttext (id int identity, sourcecode varchar(255))
select @vchTempText = 'STUB'
while @vchTempText IS NOT NULL
begin
exec @iReturn = sp_OAMethod @iStreamObjectId, 'GetStream', @iReturnValue OUT, @vchTempText OUT
if @iReturn <> 0 GOTO E_OAError
if (@vchTempText IS NOT NULL) insert into #commenttext (sourcecode) select @vchTempText
end
select 'VCS'=sourcecode from #commenttext order by id
select 'SQL'=text from syscomments where id = object_id(@vchObjectName) order by colid
end
CleanUp:
return
E_OAError:
exec dbo.dt_displayoaerror @iObjectId, @iReturn
GOTO CleanUp
GO
看的我直暈~!
Top
回復人: yonghengdizhen(剎那←→永恒) ( ) 信譽:112 2003-3-21 11:17:12 得分:0
1.如果 T 表還有一字段 F0 數據類型為自動增量整型(唯一,不會重復),
而且 T 表中含有除 F0 字段外,請刪除其它字段完全相同的重復多余的臟記錄數據:
delete from t where f0 in(select max(f0) from t group by f1,f2,f3,f4,f5,f6,f7 having count(f0)>1)
上面這個sql有問題
正確的如下
DELETE Legal_Dispute_Lawyer WHERE Lawyer_Record_No IN(SELECT Lawyer_Record_No FROM Legal_Dispute_Lawyer LDL WHERE Lawyer_Record_No(SELECT TOP 1 Lawyer_Record_No FROM Legal_Dispute_Lawyer WHERE LD=LDL.LD AND Name=LDL.Name AND Email=LDL.Email AND Phone_No=LDL.Phone_No AND Fax_No=LDL.Fax_No))
消除Legal_Dispute_Lawyer 表中除Lawyer_Record_No(自增字段)外其余數據完全相同的記錄.
表結構如下
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -