基本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 要刪除的表名