- 浏览: 108612 次
- 性别:
- 来自: 南京
-
文章分类
最新评论
select * from table1;
insert into table1(name,pwd) values('csj','csj');
update table1 set pwd='css' where name='csj';
delete from table1 wherename='csj';
select top 3 * from stu order bystuno desc; --desc降序排列,asc为升序;
定义别名:select name as names from users
输出语句:print 'csj' + @@rowcount
将数值转换成字符串:convert(varchar(5),@@error);
最后插入的标识值:@@identity
批处理语句:GO是批处理的结束;
条件:in; not in;=;<>;
exists;not exists
declare @age int
select @age=stuage from stuinfo where stuname='csj'
select * from stuinfo where stuname=@age
逻辑控制语句:
1 条件:
if(@age>90)
语句块
else
语句块
if(条件)
begin
语句1
语句2
.......
end
else
begin
语句1
语句2
.......
end
2循环语句
while(@age >90)
begin
语句1
语句2
.......
end
3 case 多分支语句
select stuno, case
when age1=90 then 结果1
when age1=80 then 结果2
end
from stum
数据库文件的组成:
主数据库文件:*.mdf
次要数据文件:*.ndf
日志文件:*.ldf
if(select* from sysdatabase where name=db1
create database db1
drop database db1
2 创建表
use master --设置当前数据库为master
if exists (select * from sysobjects where name='table1') --检查要创建的表是否存在,若存在删除;
drop table table1
create table table1
(
user char(7) not null,
pwd char(6) not null
)
droptable table1
3给表添加约束
约束类型:目的是确保表中数据的完整性;
主健约束:要求主健列唯一且不为空;
唯一约束:要求列唯一可为空,只有一个空值;
检查约束:某列取值范围限制,格式限制等;
默认约束:某列默认值,如男性较多,默认为男;
添加约束:alter table table1
add constraintpk_name primary key (name) --添加主健约束,名称作为主健;
alter table table1
add constraintpk_nameunique (name) --添加唯一约束,名称不能重复;
alter table table1
add constraint df_address default('地点不详') for saddress --添加默认约束,地点不详;
alter table table1
add constraint ck_age check (ages between 20 and 60)--添加检查约束,要求年龄在20-60间;
alter table table1
add constraint fk_stuno foreing key(stuno) references table2(stuno) --添加外健约束,主表table2和从表table1建立关系,通过stuno;
删除约束: alter table table1
drop constraint pk_name;
4 使用变量
局部变量的名称必须用@作前缀;
全局变量的名称必须用@@作前缀;
declare @username varchar(8)
set @username='csj'
select * from table1 where username=@username
全局变量的名称必须用@@作前缀;
@@ROWCOUNT受一个SQL语句景响的行数;
@@ERROR最后一个T-SQL错误的错误号;
5 事务,索引,视图;
开始事务:begin transaction
提交事务:commit transaction
回滚事务:rollback transaction
begin transaction
declare @errorsum int
语句块
set @errorsum=@errorsum + @@error
if @errorsum <>0
begin
rollback transaction
end
else
begin
commit transaction
end
---------------------------------------
视图
create view view_name
as
select * from sql语句
--------------------
存储过程
exec proc_name 60,'csj'
if exists (select * from sysobjects where
create proc proc_name
@no int,
@name
as
语句块
---------------------------------------------
触发器:是在对表执行插入,更新,删除操作时自动执行的存储过程;
if exists (select name from sysobjects where name='trigger_name')
drop trigger trigger_name
create trigger trigger_name
on table_name
for insert / delete/update
as
语句块
-----------------------------------------------------------------
create trigger trigger_name
on table_name
for insert
as
if(@type='zhiqu')
update bank set currentmoney=currentmoney -@outmoney where cordid=@id
else
update bank set currentmoney=currentmoney +@outmoney where cordid=@id
go
-- 当向这个表插入记录时,有自己动启动触发器;
创建删除触发器;
创建更新触发器;
========================================
游标:
使用游标有四种基本的步骤:声明游标、打开游标、提取数据、关闭游标。
1 声明游标:
DECLARE CustomerCursor CURSOR FOR
SELECT acct_no,name,balance
FROM customer
WHERE province="北京";
2 打开游标
OPEN CustomerCursor;
3 提取数据
当用OPEN语句打开了游标并在数据库中执行了查询后,您不能立即利用在查询结果集中的数据。您必须用FETCH语句来取得数据。一条FETCH语句一次可以将一条记录放入程序员指定的变量中。事实上,FETCH语句是游标使用的核心
4 关闭游标 :CLOSE CustomerCursor
原理:游标就是把数据按照指定要求提取出相应的数据集,然后逐条进行数据处理。
1.1游标的概念
游标(Cursor)它使用户可逐行访问由SQL Server返回的结果集。使用游标(cursor)的一个主要的原因就是把集合操作转换成单个记录处理方式。用SQL语言从数据库中检索数据后,结果放在内存的一块区域中,且结果往往是一个含有多个记录的集合。游标机制允许用户在SQL server内逐行地访问这些记录,按照用户自己的意愿来显示和处理这些记录。
1.2 游标的优点
从游标定义可以得到游标的如下优点,这些优点使游标在实际应用中发挥了重要作用:
1)允许程序对由查询语句select返回的行集合中的每一行执行相同或不同的操作,而不是对整个行集合执行同一个操作。
2)提供对基于游标位置的表中的行进行删除和更新的能力。
3)游标实际上作为面向集合的数据库管理系统(RDBMS)和面向行的程序设计之间的桥梁,使这两种处理方式通过游标沟通起来。
1.3 游标的使用
讲了这个多游标的优点,现在我们就亲自来揭开游标的神秘的面纱。
使用游标的顺序: 声名游标、打开游标、读取数据、关闭游标、删除游标。
1.3.1声明游标
最简单游标声明:DECLARE <游标名>CURSOR FOR<SELECT语句>;
其中select语句可以是简单查询,也可以是复杂的接连查询和嵌套查询
1.3.2 打开游标
非常简单,我们就打开刚才我们声明的游标mycursor
OPEN mycursor
1.3.3读取数据
FETCH [ NEXT | PRIOR | FIRST | LAST] FROM { 游标名 | @游标变量名 } [ INTO @变量名 [,…] ]
参数说明:
NEXT 取下一行的数据,并把下一行作为当前行(递增)。由于打开游标后,行指针是指向该游标第1行之前,所以第一次执行FETCH NEXT操作将取得游标集中的第1行数据。NEXT为默认的游标提取选项。
INTO @变量名[,…] 把提取操作的列数据放到局部变量中。
列表中的各个变量从左到右与游标结果集中的相应列相关联。
各变量的数据类型必须与相应的结果列的数据类型匹配或是结果列数据类型所支持的隐性转换。变量的数目必须与游标选择列表中的列的数目一致。
1.3.4关闭游标
CLOSE mycursor
1.3.5删除游标
DEALLOCATE mycursor
本文来源于Woody的鸟窝(Woody's Blog) http://www.smartgz.com, 原文地址:http://www.smartgz.com/blog/Article/976.asp
给出具体的例子:
declare @id nvarchar(20) --定义变量来保存ID号
declare @A float --定义变量来保存值
declare mycursor cursor for select * from tb_c --为所获得的数据集指定游标
open mycursor --打开游标
fetch next from mycursor into @id,@A --开始抓第一条数据
while(@@fetch_status=0) --如果数据集里一直有数据
begin
select tb_b.name,(tb_b.gz + @A) from tb_b where tb_b.id = @id --开始做想做的事(什么更新呀,删除呀)
fetch next from mycursor into @id,@A --跳到下一条数据
end
close mycursor --关闭游标
deallocate mycursor --删除游标
实例:
use database1
declare my_cursor cursor scroll dynamic
/**//*scroll表示可随意移动游标指 针(否则只能向前),dynamic表示可以读写游标(否则游标只读)*/
for
select productname from product
open my_cursor
declare @pname sysname
fetch next from my_cursor into @pname
while(@@fetch_status=0)
begin
print 'Product Name: ' + @pname
fetch next from my_cursor into @pname
end
fetch first from my_cursor into @pname
print @pname
/**//*update product set productname='zzg' where current of my_cursor */
/**//*delete from product where current of my_cursor */
close my_cursor
deallocate my_cursor
发表评论
-
Oracle创建表空间、用户等常用脚本
2013-02-28 12:44 958Oracle是开发人员常用的数据库工具,以下是从创 ... -
打包并自动安装SQL数据库
2007-08-05 13:04 605NET平台下WEB应用程序的 ... -
Windows mobile Install the Tools
2007-08-23 17:39 602Install Visual Studio 2005 ... -
mysql的常用命令备份表
2007-08-30 16:37 6091连接数据库:进入mysql的安装路径bin如:C:>c ... -
Sybase Power Designer 11.0 中文破解版 下载
2007-09-05 13:44 748SybasePowerDesigner11.0中文破解版文件大 ... -
SQL Server 2005 CE基础概要
2007-09-07 14:19 648SQL Server 2005 Compact Edition ... -
HSQLDB介绍
2007-12-06 10:47 709目前稳定版本 hsqldb_1_8_0_9.zip 下载处 ... -
Spring 让 LOB 数据操作变得简单易行
2007-12-17 08:40 613本文讲解了在 Spring 中处理 LOB 数据的原理和方法, ... -
oralce里面的单引号
2007-12-20 08:20 580在oracle中,字符串是由 ... -
Sql Server中的日期与时间函数
2008-01-16 13:23 5321.当前系统日期、时间 select getdate() ... -
小写金额转换成大写(sql server)
2008-01-21 08:33 725if exists (select * from dbo.sy ... -
char varchar nvarchar区别
2008-02-15 17:14 597联机帮助上的: char(n) 定长 索引效率高 程 ... -
Spring 让 LOB 数据操作变得简单易行
2008-04-18 11:11 407级别: 中级 摘自:http://www.ibm.com/d ... -
ORACLE常用数值函数、转换函数、字符串函数介绍 (转)
2009-09-02 19:38 1133本文更多将会介绍三思在日常中经常会用到的,或者虽然很少用到 ...
相关推荐
在SQL和Microsoft SQL Server(MSSQL)领域中,数据库管理和查询是核心概念。本文档,"SQL-MSSQL-CODE大全.doc",提供了一个全面的指南,涵盖了从数据库创建到复杂的查询和数据修改,再到函数和脚本的各个方面。 1....
### SQL变量 #### 局部变量 局部变量是在某个程序范围内可见的变量,它们必须通过`DECLARE`语句声明,并通过`SET`或`SELECT`赋值。 ```sql DECLARE @EmpID INT; SET @EmpID = 100; ``` #### 全局变量 全局变量是...
嵌入式八股文面试题库资料知识宝典-华为的面试试题.zip
训练导控系统设计.pdf
嵌入式八股文面试题库资料知识宝典-网络编程.zip
人脸转正GAN模型的高效压缩.pdf
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
少儿编程scratch项目源代码文件案例素材-鸡蛋.zip
嵌入式系统_USB设备枚举与HID通信_CH559单片机USB主机键盘鼠标复合设备控制_基于CH559单片机的USB主机模式设备枚举与键盘鼠标数据收发系统支持复合设备识别与HID
嵌入式八股文面试题库资料知识宝典-linux常见面试题.zip
面向智慧工地的压力机在线数据的预警应用开发.pdf
基于Unity3D的鱼类运动行为可视化研究.pdf
少儿编程scratch项目源代码文件案例素材-霍格沃茨魔法学校.zip
少儿编程scratch项目源代码文件案例素材-金币冲刺.zip
内容概要:本文深入探讨了HarmonyOS编译构建子系统的作用及其技术细节。作为鸿蒙操作系统背后的关键技术之一,编译构建子系统通过GN和Ninja工具实现了高效的源代码到机器代码的转换,确保了系统的稳定性和性能优化。该系统不仅支持多系统版本构建、芯片厂商定制,还具备强大的调试与维护能力。其高效编译速度、灵活性和可扩展性使其在华为设备和其他智能终端中发挥了重要作用。文章还比较了HarmonyOS编译构建子系统与安卓和iOS编译系统的异同,并展望了其未来的发展趋势和技术演进方向。; 适合人群:对操作系统底层技术感兴趣的开发者、工程师和技术爱好者。; 使用场景及目标:①了解HarmonyOS编译构建子系统的基本概念和工作原理;②掌握其在不同设备上的应用和优化策略;③对比HarmonyOS与安卓、iOS编译系统的差异;④探索其未来发展方向和技术演进路径。; 其他说明:本文详细介绍了HarmonyOS编译构建子系统的架构设计、核心功能和实际应用案例,强调了其在万物互联时代的重要性和潜力。阅读时建议重点关注编译构建子系统的独特优势及其对鸿蒙生态系统的深远影响。
嵌入式八股文面试题库资料知识宝典-奇虎360 2015校园招聘C++研发工程师笔试题.zip
嵌入式八股文面试题库资料知识宝典-腾讯2014校园招聘C语言笔试题(附答案).zip
双种群变异策略改进RWCE算法优化换热网络.pdf
内容概要:本文详细介绍了基于瞬时无功功率理论的三电平有源电力滤波器(APF)仿真研究。主要内容涵盖并联型APF的工作原理、三相三电平NPC结构、谐波检测方法(ipiq)、双闭环控制策略(电压外环+电流内环PI控制)以及SVPWM矢量调制技术。仿真结果显示,在APF投入前后,电网电流THD从21.9%降至3.77%,显著提高了电能质量。 适用人群:从事电力系统研究、电力电子技术开发的专业人士,尤其是对有源电力滤波器及其仿真感兴趣的工程师和技术人员。 使用场景及目标:适用于需要解决电力系统中谐波污染和无功补偿问题的研究项目。目标是通过仿真验证APF的有效性和可行性,优化电力系统的电能质量。 其他说明:文中提到的仿真模型涉及多个关键模块,如三相交流电压模块、非线性负载、信号采集模块、LC滤波器模块等,这些模块的设计和协同工作对于实现良好的谐波抑制和无功补偿至关重要。
内容概要:本文探讨了在工业自动化和物联网交汇背景下,构建OPC DA转MQTT网关软件的需求及其具体实现方法。文中详细介绍了如何利用Python编程语言及相关库(如OpenOPC用于读取OPC DA数据,paho-mqtt用于MQTT消息传递),完成从OPC DA数据解析、格式转换到最终通过MQTT协议发布数据的关键步骤。此外,还讨论了针对不良网络环境下数据传输优化措施以及后续测试验证过程。 适合人群:从事工业自动化系统集成、物联网项目开发的技术人员,特别是那些希望提升跨协议数据交换能力的专业人士。 使用场景及目标:适用于需要在不同通信协议间建立高效稳定的数据通道的应用场合,比如制造业生产线监控、远程设备管理等。主要目的是克服传统有线网络限制,实现在不稳定无线网络条件下仍能保持良好性能的数据传输。 其他说明:文中提供了具体的代码片段帮助理解整个流程,并强调了实际部署过程中可能遇到的问题及解决方案。