SQLServer语法常用总结
1. 有时候查看SQL的时候表名或者字段名需要加[],这是因为有时候你的表名或者字段名正好与sqlserver的保留字段重了
比如:有一个user表,直接select会报错
select * from user;
正确语法如下:
select * from [user];
2. SQL的子查询需要加 as 别名,否则编译报错;而oracle和mysql的子查询可以不加 as 别名
select * from (select * from [user])as a;
3.SQLServer的字符串也是用单引号包裹,双引号会报错
4.SQLServer的字符串拼接用concat()函数,如下
select CONCAT('1','2');
select CONCAT('1','2','3','4');
5.SQLServer触发器
参考:https://www.cnblogs.com/wangprince2017/p/7827091.html
例如:表结构
1. 创建触发器: (修改指定列name1的时候修改name2列的值为name1列的新值)
-- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date,,> -- Description: <Description,,> -- ============================================= CREATE TRIGGER [dbo].[trigger1] ON [dbo].[test] AFTER UPDATE AS print'修改name1触发触发器执行1'; IF UPDATE([name1]) BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; begin DECLARE @data_id integer set @data_id=(select [ID] from inserted) DECLARE @name1 nvarchar(50) set @name1=(select name1 from inserted) print'修改name1触发触发器执行2'; update test set name2 = @name1 where id = @data_id; print'修改name1触发触发器执行3'; end -- Insert statements for trigger here END print'修改name1触发触发器执行4'; return;
测试SQL:
update test set name2 = '';
结果:
修改name1触发触发器执行1
修改name1触发触发器执行4
(1 行受影响)
注意:
(1)IF语句如果不加{}也是对后面第一条语句生效(Begin-end视为一条语句);
(2)inserted是一个临时表,存的是更新后的新值,deleted也是一个临时表,存的是更新前的值;
(3)print @var可以打印变量信息;if update(column)表示修改指定列。
2.查看数据库所有的触发器以及与表的对应关系的SQL如下:
select triggers.name as [触发器],tables.name as [表名],triggers.is_disabled as [是否禁用],
triggers.is_instead_of_trigger AS [触发器类型],
case when triggers.is_instead_of_trigger = 1 then 'INSTEAD OF'
when triggers.is_instead_of_trigger = 0 then 'AFTER'
else null
end as [触发器类型描述]
from sys.triggers triggers
inner join sys.tables tables on triggers.parent_id = tables.object_id
where triggers.type ='TR'
order by triggers.create_date
3.根据触发器名称单独查看某个触发器的创建语句
exec sp_helptext 'triggername'
6. SQLServer查看监听的端口
exec sys.sp_readerrorlog 0, 1, 'listening'
SQLServer语法常用总结的更多相关文章
- sqlserver服务器常用的性能计数器
sqlserver服务器常用的性能计数器,在此标记. 性能对象 计数器 说明 Processor %Processor Time %Privileged Time 建议值:持续低于80 建议值:持续低 ...
- sqlServer数据库常用连接字符串
sqlServer 数据库常用连接字符串 用户名和密码验证的方式去连接到数据库服务器 <add name="conStr" connectionString=" ...
- sqlserver里常用的语法
bb 为nvarchar(50)CAST(bb AS int) select MAX(CAST(bb AS int)) from AAA
- SqlServer触发器常用语法AFTER、INSTEAD OF及其详解
先创建一个简单的触发器 CREATE TRIGGER trigger_name ON table_name [WITH ENCRYPTION] FOR | AFTER | INSTEAD OF [DE ...
- Sqlite基础及其与SQLServer语法差异
1 TOP 这是一个大家经常问到的问题,例如在SQLSERVER中可以使用如下语句来取得记录集中的前十条记录: SELECT TOP 10 * FROM [index] ORDER BY indexi ...
- SQLServer 之 常用函数及查看
一.查看 (1)应用程序名称 SELECT APP_NAME() (2)获取登录者名字 SELECT SUSER_NAME() (3)获取字段定义的长度 ...
- 一个很简单的SqlServer生成常用C#语句工具的诞生
前言: 这个文章只要是记录一下,这个工具的诞生过程.作用.其中的技术实在是太简单可以说没有什么技术~主要是锻炼一下写文章的能力! 正文: 在开发项目的时,常常会要维护或变更一些老项目,涉及到简单的几张 ...
- .bat学习-基础语法(常用)
一般来说,脚本或者语言都有相同地方 定义变量,输入,输出,判断条件等等.知道的相同之处,我们就可以借助强大的搜索引擎进行查找我们想要知道的东西. bat为批处理脚本BATCH.现在只知道是使用于win ...
- [PowerShell] 快速入门, 基本语法, 常用类型, 函数, .NET 互操作
PowerShell 快速入门 开始之前, 我们认定你已经有一定的编程基础, 熟悉 .NET 中的类型与对象. 此文章对于 .NET 开发者来说更简单哦! 在 PowerShell 中, 几乎一切都是 ...
随机推荐
- java中异常的面试
https://blog.csdn.net/qq_36523638/article/details/79363652 1) Java中的检查型异常和非检查型异常有什么区别? 这又是一个非常流行的Jav ...
- 关于 C# 中 Dictionary与Hashtable的性能测试
https://www.cnblogs.com/qianxingdewoniu/p/5266243.html
- 虚拟机centos无法连接外网时怎么处理
1. 首先查看service 如果没有启动请启动这2个服务. 2. 在虚拟机那重启网络端口 ifdown ens33 ifup ens33
- ntp 时间同步
NTP 是网络时间协议(Network Time Protocol)的简称,通过 udp 123 端口进行网络时钟同步 一.安装 # 既可做服务端也可做客户端 yum install -y ntp # ...
- JAVA核心技术I---JAVA基础知识(对象与类)
一:规范 将每一个类存在一个单独的源文件中 Employee.java public class Employee { private int age; private float salay; pr ...
- Hadoop记录-Hadoop jmx
https://cwiki.apache.org/confluence/display/EAG/Hadoop+JMX+Monitoring+and+Alerting curl http://10.11 ...
- [JVM-3]Java垃圾回收(GC)机制和垃圾收集器选择
哪些内存需要回收? 1.引用计数法 这个算法的实现是,给对象中添加一个引用计数器,每当一个地方引用这个对象时,计数器值+1:当引用失效时,计数器值-1.任何时刻计数值为0的对象就是不可能再被使用的.这 ...
- DirectX11 With Windows SDK--05 键盘和鼠标输入
前言 提供键鼠输入可以说是一个游戏的必备要素.在这里,我们不使用DirectInput,而是使用Windows的消息处理机制,不过要从头开始实现会让事情变得很复杂.DXTK提供了鼠标输入的Mouse. ...
- 5年GTD自我管理经验,一块听听
我在胜利油田做了20多年的油田信息化工作,以前的我经常处于这样一种状态: 当我正在做着手边的一项事情时,头脑里却不断地蹦出来其它的事务,让我烦心不已,焦虑不安:PPT经常要拖到汇报当天的凌晨才做完,有 ...
- maven多模块依赖源码调试
Maven多模块项目中,通常存在摸个模块同时依赖其他多个基础模块的情况.在eclipse中使用run-jetty-run插件调试时,常常会出现找不到被依赖模块对应源码的错误提示.举个例子,模块A同时依 ...