常用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 要删除的表名









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