常用SQL



                          基本SQL語句大全


--(1)查詢

select LoginId, LoginPwd from Admin where LoginId='jbit'--條件查詢


--(2) 刪除

delete from Admin where LoginId='zhang'--條件刪除某條記錄


--(3) 新增

insert into Admin (LoginId, LoginPwd) values ('yin','1234')


--(4) 修改

update  Admin set LoginId='jbt',LoginPwd='dbqn' where LoginId='zhang' and LoginPwd='321'--條件修改某條記錄


--(5)分頁

select top 3* from Student where StudentNo not in(select top ((3-1)*3 )StudentNo from Student order by StudentNo)

 order by StudentNo

 

--(6) 排序 

select * from Admin order by LoginId, LoginPwd 

--(7) 求和 ,最大(max),平均(avg),最小(min),總數(count)

select sum(LoginId) as sumvalue from Admin



--(8)子查詢(表名1:a 表名2:b)

select a,b,c from a where a IN (select d from b ) 



--(9)外連接查詢(表名1:a 表名2:b)

select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c



--(10)查詢在 TableA 中但不在 TableB和TableC 表中的行並消除所有重複行而派生出一個結果表

(select a from tableA ) except (select a from tableB) except (select a from tableC)



--隨機生成10條數據

select top 10 * from dbo.Student order by newid()


--(11)創建數據庫和賬號密碼

create database  OA

exec  sp_adduser  'sa','sa'


--(12)添加主鍵:

 Alter table tabname add primary key(col) 

--(13)刪除主鍵:

 Alter table tabname drop primary key(col) 

 

 --(14)添加主鍵約束

 alter table tabname add constraint  YueSuMing primary key (lieming)

 --(15)添加外鍵約束

  alter table tabname add constraint  YueSuMing foreign key (lieming)

  references  Admin(lieming)


--============================


 go

 

--(6)存儲過程

create proc Admin_cx


@LoginId nvarchar(50),

@LoginPwd nvarchar(50)

as

select * from dbo.Admin


--存儲過程的原理:是一組爲了完成特定功能的SQL語句集,經編譯後存儲在數據庫中。

                --用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。


--(7)遊標


declare @A int

set @A=1

while @A<=35

begin

if 2*@A+4*(35-@A)=96

begin

print '雞的數量'+cast(@A as char(5))

print '兔的數量'+cast(35-@A as char(5))

end

set @A=@A+1

end

--遊標的原理:是一種能從包括多條數據記錄的結果集中每次提取一條記錄的機制。



--====================數據庫開發經典


--(1)按姓氏筆畫排序:

Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as //從少到多


---(2)數據庫加密

select encrypt('原始密碼')

select pwdencrypt('原始密碼')

select pwdcompare('原始密碼','加密後密碼') = 1--相同;否則不相同 encrypt('原始密碼')

select pwdencrypt('原始密碼')

select pwdcompare('原始密碼','加密後密碼') = 1--相同;否則不相同


--(3)生成本地表

select * into 表 from openrowset( 'SQLOLEDB ', 'sql服務器名 '; '用戶名 '; '密碼 ',數據庫名.dbo.表名)


 

--(4)把本地表導入遠程表

insert openrowset( 'SQLOLEDB ', 'sql服務器名 '; '用戶名 '; '密碼 ',數據庫名.dbo.表名)



                                      經 典 sql 


(1)創建一張帶動態時間的表


--效果: DATA_aa2013-5-14

--用到技術:存儲過程,系統函數


IF EXISTS(SELECT * FROM sys.objects where name = 'DATA_aa' and type = 'P')

DROP PROCEDURE [dbo].[SelectT_PolicyCommon]

GO

-- 使用說明:EXEC [dbo].[DATA_aa]

CREATE PROC [dbo].[DATA_aa]


AS

BEGIN


--創建數據庫:AA

--use AA


declare @tablename nvarchar(100) set  @tablename='表名' +convert(char(8),getdate(),112)  --動態生成一張帶當前時間的表

if exists(select * from sysobjects where name=@tablename)  --如果這張表存在就bengin 刪除

begin

declare @dropTable nvarchar(1000) set @dropTable ='drop table '+@tablename

execute sp_executesql @dropTable

end  ---否則就添加這張動態表 (id 爲主鍵要加:primary key )

declare @createTable nvarchar(1000) set @createTable ='create table '+@tablename+'( int AA .....全是這張表的字段 )' 

execute sp_executesql @createTable

END

GO





(2)將相同的列,數據用逗號分開合併成一列

---用到技術:函數法


----原本的表

--it                   it1

--it                   it2

--it                   it3

--it2                  aa

--it2                  aac


---應該要得到的表

--it            it1,it2,it3

--it2           aa, aac


-----------------------函數法

select * from sysobjects where name='fun'

--刪除 fun 表

drop function fun


--新建表 fun

Create function [dbo].[fun](@type nvarchar(10),@Cabin_Name nvarchar(10))

returns nvarchar(200)

as

begin


declare @re nvarchar(200)

declare @code nvarchar(200)

set @re=''

set @code=''

select @re=@re+Id+','  from S_Cabin where Comp_ID=@type and Cabin_Name=@Cabin_Name group by Id

select @re=left(@re, len(@re)-1)

--返回@re

return @re

end


--查詢fun 表

select Comp_ID,dbo.fun(Comp_ID,Cabin_Name),Cabin_Name from (select  Comp_ID,Cabin_Name from S_Cabin group by Comp_ID,Cabin_Name) A



--查詢表S_Cabin的結果

select Cabin_Name from S_Cabin




(3)快速刪除一張表sql

      truncate table 要刪除的表名









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章