发布网友
共3个回答
懂视网
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
热心网友
1.检索数据
SELECT prod_nameFROM Procts;
#检索单列
SELECT prod_id, prod_name, prod_priceFROMProcts;
#检索多列
SELECT * FROM Procts;
#检索所有列
SELECT DISTINCTvend_id FROMProcts;
#检索不同的值
SELECTprod_name FROM Procts LIMIT 5;
#返回不超过5行数据
SELECTprod_name FROM Procts LIMIT 5 OFFSET 5;
#返回从第5行起的5行数据。LIMIT指定返回的行数,LIMIT带的OFFSET指定从哪儿开始。
2.排序检索数据
SELECTprod_name
FROMProcts
ORDER BYprod_name;
#排序数据
SELECT prod_id, prod_price, prod_name
FROMProcts
ORDER BY prod_price, prod_name;
#按多个列排序
SELECT prod_id, prod_price, prod_name
FROMProcts
ORDER BY 2, 3;
#按列位置排序,第三行表示先按prod_price, 再按prod_name进行排序
SELECT prod_id, prod_price, prod_name
FROMProcts
ORDER BY prod_priceDESC, prod_name;
#prod_price列以降序排序,而prod_name列(在每个价格内)仍然按标准的升序排序
3.过滤数据
SELECT prod_name, prod_price
FROMProcts
WHERE prod_price< 10;
#检查单个值
SELECT prod_name, prod_price
FROMProcts
WHERE vend_id <> ‘DLL01’;
#不匹配检查
SELECT prod_name, prod_price
FROMProcts
WHERE prod_priceBETWEEN 5 AND 10;
#范围值检查
SELECT cust_name
FROMCUSTOMERS
WHERE cust_emailIS NULL;
#空值检查
4.高级数据过滤
SELECTprod_id, prod_price, prod_name
FROMProcts
WHERE vend_id = ‘DLL01’ANDprod_price <= 4;
#AND操作符
SELECTprod_name, prod_price
FROMProcts
WHEREvend_id=’DLL01’ OR vend_id=’BRS01’;
#OR操作符
SELECTprod_name, prod_price
FROMProcts
WHERE (vend_id = ’DLL01’ORvend_id=’BRS01’)
ANDprod_price >= 10;
#求值顺序 AND的优先级高于OR
SELECTprod_name, prod_price
FROMProcts
WHERE vend_idIN (‘DLL01’,’BRS01’)
ORDER BY prod_name;
#IN操作符
SELECT prod_name
FROMProcts
WHERE NOTvend_id = ‘DLL01’
ORDER BY prod_name;
#NOT 操作符
SELECT prod_name
FROMProcts
WHEREvend_id <> ‘DLL01’
ORDER BY prod_name;
#NOT 操作符
热心网友
select
into
from语句
要求目标表table_4不存在,因为在插入时会自动创建表table_4,并将table_3中指定字段数据复制到table_4中。
可以考虑使用如下语句:
insert
into
dbo.table_4
(sname,
semail)
(select
sname,
semail
from
table_3);