当前位置:Gxlcms > 数据库问题 > 常用SQL

常用SQL

时间:2021-07-01 10:21:17 帮助过:7人阅读

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









本文出自 “金典sql” 博客,转载请与作者联系!

常用SQL

标签:sql

人气教程排行