EXEC sp_dropuser 'test'   : 从当前数据库删除用户 test
EXEC sp_droplogin 'test' : 从 SQL Server 中删除登录 test
select @@servername :查看本机sql 2008实例名
set quoted_identifier off :关闭双引号识别
sp_who :查询当前使用用户,进程
sp_helptext 函数或者触发器或者存储过程名 :查看代码
sp_helpindex 'table' 查看索引
kill 进程号
dbcc showcontig('u_table') --检查表碎片
DBCC DBREINDEX ('u_table','',90) --优化表重建索引 sp_spaceused :查看当前数据库大小
dbcc checkdb 检查数据库是否有错,是否损坏
select serverproperty('productlevel') --检查是否打了SP4补丁,如果没有打过SP4,则为RTM,否则显示的是SP4版本。
select DATABASEPROPERTYEX('master','version') --查看当前SQL版本号 建表前的判断语句:
if object_id('a') is not null drop table a
create table a(times datetime)
select * from sysobjects --系统对象表
xtype: u表;v视图; p:过程 fn:函数 tr:触发器
select * from sysindexes –查看索引
select * from syscolumns --系统字段表
select * from syscolumns where object_id('u_ware_q')=id
select * from syscolumns where object_name(id) = 'u_ware_q'
select object_name(id),* from syscolumns where object_name(id)='u_ware_p' --根据某个字段查出是哪个表
select * from sysobjects a, syscolumns b where a.id=b.id and b.name = 'maxunit' --查看使用某字段的所有表
select * from syscomments --函数,触发器等的代码
例:查所有触发器 存储过程有发短信的代码
select object_name(id) from syscomments where text like '%短信'
select * from syscolumns where id=object_id('u_ware_q')
select system_user --当前操作系统用户
select user --当前数据库登录用户
SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME='u_ware_q' --查看表的主键
sp_helptext p_物流发送后发短信 --显示所有封装后的代码
用SQL语句查找包含有某个关键字的存储过程、触发器、函数等等,SQL语句如下:
select OBJECT_NAME(id) as 存储过程,id from syscomments
where id in (select object_id(name) from dbo.sysobjects where type='P' --存储过程为P)
and text like '%FieldName%' --关键字
group by id --查表依赖关系
select a.* from sysobjects a, syscomments b where a.id =b.id and b.text like '%u_store_i%'
--断开所有链接
DECLARE @sql VARCHAR(4000)
SET @sql= ''
SELECT @sql = @sql + ' kill ' + CAST(spid AS VARCHAR) + CHAR(13)
FROM master.sys.sysprocesses WHERE dbid = db_id( 'CMDK_DEV')
EXEC(@sql) EXEC sp_executesql @sql xtype:对象类型。可以是下列对象类型中的一种:
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
L = 日志
FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
UQ = UNIQUE 约束(类型是 K)
V = 视图
X = 扩展存储过程 --常用函数
select len('我是中国人') --取字符串
select datalength('我是中国人sddsfs') --取长字符串长度
select dbo.f_left('我是中国人sdflskfsjkl',6) --取字符串:我是中 只在海典系统中使用
select left('我是中国人sdfksfls',6) --取字符串:我是中国人a,汉字作为一个字符
select replace('我是中国人lkklkl','国','asdd') --替换
select REPLACE (' 处方信' ,' ','') --去掉字符串中所有空格
select rtrim('我是中国人 ') --去掉右空格
select ltrim(' 我是中国人') --去掉左空格
select right('test-tsss',charindex('-','test-tsss')-1) --取'-'第一次开始的右边所有字符
select isnumeric('222ss--2sdsd') -- select isnumeric('s222s') --当输入表达式得数为一个有效的整数、浮点数、money 或decimal 类型,那么ISNUMERIC 返回;否则返回。返回值为确保可以将expression 转换为上述数字类型中的一种。但是此函数存在Bug,就是'234a2342'同样会认为是数字类型可以替代的写法是
select PATINDEX('%[^0-9]%', '') --等于0为纯数字--如果返回值大于0,则有非数字字符。
--对于支持小数点和正负数写法是
select PATINDEX('%[^0~9|.|-|+]%','22.22')
select patindex('%[吖-座]%','2221在sss') --有中文返回5
select patindex('%[d]%','rcrdsddddaadadffdr')
--返回,[]中d在字符串rcrdsddddaadadffdr的第一次出现的位置。
select patindex('%[cd]%','rcrdsdddrdaadadffdr')
--返回,[]中c,d在其中一个的位置,返回最先出现的这个位置,c在此字符串里第一次出现位置是,而d是,结果取最先的那个。
select patindex('%[sd]%','rcrdsdddrdaadadffdr')
--返回,[]中c,d在其中一个的位置,返回最先出现的这个位置,s在此字符串里第一次出现位置是,而d是,结果取最先的那个。
select patindex('%[^r]%','rrrdsdddrdaadadffdr')
--返回,除[]中的字符串的匹配字符,第一次出现d不在[^r]里,所以就找到第一次这位。
select patindex('%[^rd]%','rrrdsdddrdaadadffdr')
--返回,除[]中的字符串的匹配字符,第一次出现s不在[^rd]里,所以就找到第一次这位。
select patindex('%[^rsd]%','rrrdsdddrdaadadffdr')
--返回,除[]中的字符串的匹配字符,第一次出现a不在[^rsd]里,所以就找到第一次这位。
max() --取最大值min() --取最小值sum() --求和count() --统计记录数
select accdate,sum(realamt),max(realamt),min(realamt),count(realamt)
from r_sale
where accdate>'2011-01-15 00:00:00.000' and accdate < '2011-01-25 00:00:00.000'
group by accdate
having sum(realamt) > 60000
字符截取:left()、right()、substring()、charindex()
select SUBSTRING(warename,1,4) from u_ware --取字符串,从第1个字符开始至第4个结束
select SUBSTRING(CONVERT(text,'在s在在夺要'),1,5) --截取中英混合的字符串(中文和字母)
select 5000/10000.0 --想变成.5
select 5500/10000.0 --想变成.55
select 5550/10000.0 --想变成.555
select 5555/10000.0 --想变成.5555
其结果分别为:0.5000000 0.5500000 0.5550000 0.5555000
select 15%4 结果为 判断是否整除,是否整数倍
select 15%5 结果为
一、如果想去掉数字后面多余的 ,需要转化一下:
--取随机数
select ceiling(10 * rand())
select rand()
select ceiling(RAND()*(60-20)+20) --随机生成20-60之间的一个整数
select CONVERT(FLOAT,5000/10000.0) --想变成.5
select CONVERT(FLOAT,5500/10000.0) --想变成.55
select CONVERT(FLOAT,5550/10000.0) --想变成.555
select CONVERT(FLOAT,5555/10000.0) --想变成.5555 其结果分别为: 0.5 0.55 0.555 0.5555
--Sql截取浮点小数位数,不四舍五入
round(551.239567,2,0)
结果:551.24 round(551.239567,2,1)
结果:551.23 --第一个表示截取位
--第二个,1分别表示是四舍五入,0以外是截取
select cast(19.001 as int) --数字型取整数部分
select 19.001 - cast(19.001 as int) --数字型取小数部分
select distinct wareid from u_store_m --过滤重复记录 唯一
select space(10) --返回个空格字符串
--两个数据集连接
select wareid from u_accept_c
union all
select wareid from u_store_m where symqty>1000
--存在于某个数据集值in 、not in
select * from u_ware_q where wareid in('','')
select * from u_ware_q where wareid not in(select wareid from u_ware_class where classcode ='')
--存在于某个数据集exists 、not exists ,尽量用这个优化数据集查询速度,可用在多表操作
select * from u_ware_q a where exists(select 1 from u_sale_c b where a.wareid = b.wareid) --查询没有销售记录的商品 --查看表约束
sp_helpconstraint d_ware_print
--修改 删除主键
alter table 表名 drop constraint 约束名/主键名 --给字段默认值
ALTER TABLE [dbo].[u_ware_q] ADD DEFAULT (0) FOR [pile] if col_length('c_dyscript','projectid') is null
alter table c_dyscript add projectid int default 0
go
update c_dyscript set projectid = 0 where projectid is null
go
if exists(select * from syscolumns where id = object_id('c_dyscript') and name = 'projectid' and isnullable = 1)
alter table c_dyscript alter column projectid int not null
go
declare @sql_20140317 nvarchar(1000)
select @sql_20140317 = 'alter table c_dyscript drop constraint [' + name + ']' from sysobjects where parent_obj = object_id('c_dyscript') and xtype = 'pk'
exec(@sql_20140317)
go
alter table c_dyscript add primary key(winname,projectid,control,event)
go select floor(11.23) --返回小于或等于所给数字表达式的最大整数。向下取整
select ceiling(11.23) --向上取整数四舍五入
select round(11.23334,2) --取两位小数
select abs(112.22),abs(-112.33) --取绝对值
select max(stamp)+0 from d_ecs_order_info
select convert(int max(stamp)) from d_ecs_order_info 显式转换
cast((c.supply_qty+0.0)/isnull(a.supply_sumqty,1) as numeric(16,4)) –两个整数相除得行小数的方法 isnull(可能为空字段,'') : sql判断是否为空的写法,如果字段为空的话,就赋''给某个字段。
IDENTITY(int,1,1) :在表中插入递增数
Case 用法:以计算毛利为例:
select case when saleprice =0 then 0 else (saleprice -purprice)/ saleprice end as 毛利率
from u_sale_c
where 条件…. select LTRIM(RTRIM(str(商品编码)+'')),商品名称,商品规格
,case when isnull(生产企业,'')='' then '' else 生产企业 end
from 商品资料测试
时间字段转换
select CONVERT(varchar(12),execdate,23)from u_distapply_m where CONVERT(varchar(12),execdate,23)='2014-05-06' --取时间字段中的日期
CONVERT(varchar(25),dateadd(day,-2,execdate),21 ) --取日期的前两天
datediff(dd,r_sale.accdate,dateadd(mm,1,r_sale.accdate)) –计算当月天数
select datediff(dd,'2016-01-01',getdate()) --从某天至现在的天数
SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
SELECT CONVERT(varchar(100), GETDATE(), 1): 05/16/06
SELECT CONVERT(varchar(100), GETDATE(), 2): 06.05.16
SELECT CONVERT(varchar(100), GETDATE(), 3): 16/05/06
SELECT CONVERT(varchar(100), GETDATE(), 4): 16.05.06
SELECT CONVERT(varchar(100), GETDATE(), 5): 16-05-06
SELECT CONVERT(varchar(100), GETDATE(), 6): 16 05 06
SELECT CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
SELECT CONVERT(varchar(100), GETDATE(), 8): 10:57:46
SELECT CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
SELECT CONVERT(varchar(100), GETDATE(), 10): 05-16-06
SELECT CONVERT(varchar(100), GETDATE(), 11): 06/05/16
SELECT CONVERT(varchar(100), GETDATE(), 12): 060516
SELECT CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
SELECT CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
SELECT CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
SELECT CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
SELECT CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
SELECT CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
SELECT CONVERT(varchar(100), GETDATE(), 24): 10:57:47
SELECT CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
SELECT CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
SELECT CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
SELECT CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
SELECT CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
SELECT CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
SELECT CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
SELECT CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
SELECT CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006
SELECT CONVERT(varchar(100), GETDATE(), 108): 10:57:49
SELECT CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
SELECT CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
SELECT CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
SELECT CONVERT(varchar(100), GETDATE(), 112): 20060516
SELECT CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
SELECT CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
SELECT CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
SELECT CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49:000
select CONVERT(datetime,'2015-06-04 10:46:21', 20) 字符转换为日期
select dateadd(dd,-day(dateadd(month,-1,getdate()))+1,dateadd(month,-1,getdate()))/*上个月一号*/
select dateadd(dd,-day(getdate()),getdate()) /* 上月月底*/
select dateadd(dd,-day(getdate())+1,getdate()) /* 本月一号*/
select dateadd(dd,-day(dateadd(month,1,getdate())),dateadd(month,1,getdate()))/* 本月底*/
select dateadd(dd,-day(dateadd(month,1,getdate()))+1,dateadd(month,1,getdate())) /* 下月一号*/
select dateadd(dd,-day(dateadd(month,2,getdate())),dateadd(month,2,getdate())) /* 下月月底*/
select dateadd(month,-1,getdate()) --取前一个月/上一个月 ,case when DATEPART(weekday,accdate1)=7 then '星期六' --计算星期几
when DATEPART(weekday,accdate1)=1 then '星期天'
else '' end as '备注'
select * from u_dist_m where DATEDIFF(DAY,createtime,GETDATE())<=15
--取最近15天的记录
--取前推7天的请货数,从昨天开始计算
select a.execdate
from u_distapply_m a,u_distapply_c b
where a.applyno=b.applyno and status=1
and convert(varchar(10),a.execdate,23)
between convert(varchar(10),dateadd(day,-7,GETDATE()),23)
and convert(varchar(10),dateadd(day,-1,GETDATE()),23) select * from u_distapply_m a where --按时间段查询数据,在存储过程动态报表中常用
a.execdate between '2017-10-12' and dateadd(ms,-3,dateadd(dd,1,'2017-10-13')) select @day = DATEPART(dd,getdate()) --取日期号数
--逢会员日,打折,不积分
if @day in(8,18,28)
select filename from master.dbo.sysdatabases where name = '数据库名' --查看数据库文件存放位置
DATEDIFF(dd,CONVERT(varchar(12),createtime,23),getdate())>=7 --大于当前日期天含天的日记录
select stamp+0 from u_dist_m where distno='单号' --取时间戳
select wareid,stamp+0,DATEADD(second,stamp+0+ 8 * 3600,'2013-01-01 00:00:00') from u_ware_q where wareid='' –时间戳转日期
select a.wareid,b.warename from hydee_2004..u_ware_q a,hydee_连锁..u_ware_q b where a.wareid=b.wareid --取不同数据库的表数据 sql中,两个比较函数用法:都可生成排序用1、ROW_NUMBER() over(order by wareid)
2、IDENTITY(bigint) --OPENQUERY 的用法:
OPENQUERY (linked_server, "INSERT INTO msgs(...) VALUES(...)");以上做法是不正确的,
正确做法如下:
SELECT 示例:SELECT * FROM OPENQUERY (linked_server, "SELECT * FROM msgs");
INSERT 示例:INSERT OPENQUERY ([192.168.0.200], 'SELECT title, content FROM msgs') VALUES ('title', 'content');
UPDATE 示例:UPDATE OPENQUERY ([192.168.0.200], 'SELECT title, content FROM msgs WHERE id=1') SET title = 'newTitle',content = 'newContent';
DELETE 示例:DELETE OPENQUERY ([192.168.0.200], 'SELECT id FROM msgs WHERE id=1');
--跨服务器更新数据
set quoted_identifier off
go
declare @warename varchar(20)
set @warename='测试商品名'
UPDATE OPENQUERY ([192.168.0.200], "select warename from hydee_fst..d_ware0209 where wareid=''") SET warename=@warename; 注意OPENQUERY 不接受参数变量,也就是说:DELETE OPENQUERY ([192.168.0.200], 'SELECT id FROM msgs WHERE id=' + @id);
是不正确的,但可以这样做:DELETE OPENQUERY ([192.168.0.200], 'SELECT id FROM msgs') WHERE id=@id); 。
T-SQL 中,INSERT 可以省略 INTO,DELETE 也可以省略 FROM。INSERT 时必须明确 SELECT 的字段。

sql 2008常用语法语句收集的更多相关文章

  1. SQL SERVER常用语法记录

    用于记录SQL SERVER常用语法,以及内置函数. 以下语句包含: WITH 临时表语法 ROW_NUMBER()内置函数,我一般主要是用来分页.针对于查出来的所有数据做一个数字排序 分页的BETW ...

  2. SQL基础常用语法

    一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 DROP database dbname 3.说明:创建新表 create table ...

  3. SQL 2008 RAISERROR语法在SQL 2012/2014不兼容问题

    原文 旧的RAISERROR语法在SQL 2012不兼容问题 raiserror 写法: SQL 2008: raiserror 55030 'text error' SQL 2012: raiser ...

  4. sql 操作常用操作语句 新增、修改字段等

    常用sql --sql 事务 BEGIN TRAN 事物名 )BEGIN ROLLBACK TRAN 事物名;RETURN;END COMMIT TRAN 事物名 --数据库清缓存 DBCC DROP ...

  5. sql server 常用语法

    --1 创建数据库 DROP DATABASE mydb1 CREATE DATABASE mydb1 ON ( NAME ='mydb1',FILENAME='D:\mydb1.mdf') LOG ...

  6. SQL其他常用的语句

    阅读目录 一:汇总数据 1.理解AVG函数 2.理解COUNT()函数 3.理解max()函数 4.理解min()函数 5.理解sum()函数 二:分组数据 1 创建分组(group by) 2 HA ...

  7. SQL SERVER常用语法汇总

    阅读目录 一.SQL分类 二.基础语句 三.sql技巧 四.(MS SQL Server)SQL语句导入导出大全 回到目录 一.SQL分类 DDL—数据定义语言(CREATE,ALTER,DROP,D ...

  8. php中一些常用的语句收集

    清空数据表   truncate 表名; http://blog.knowsky.com/234205.htm    常用的SQL语句实例 http://blog.csdn.net/vericlong ...

  9. sql server常用语法点

    if exists(select name from sysobjects where name = 'stuInfo')drop table stuInfogocreate table stuInf ...

随机推荐

  1. lnmp环境下 tp3.2 not found

    最近将一个lamp环境下使用tp3.2 开发的项目迁移到本地了, 但是在打开项目的时候,提示 not found,经过多方面查找发现是伪静态问题,解决方法如下: 在nginx 域名配置文件我这里是[v ...

  2. 【SpringBoot】 项目中运用的一些技巧,mybatis-plus 自动编译等(持续更新)

    前言 本文将总结项目中用到的一些springboot 的技巧,持续更新. Mybatis-Plus 的运用 使用原因: 主要是节省了Mapper层的编写,通过继承BaseMapper可以直接调用通用的 ...

  3. 【转】PyQt5系列教程(七)控件

    PyQt5系列教程(七)控件   软硬件环境 Windows 10 Python 3.4.2 PyQt 5.5.1 PyCharm 5.0.4 前言 控件是PyQt应用程序的基石.PyQt5自带很多不 ...

  4. ngrinder压力测试

    文章目录 另一篇 部署demo 写脚本 压力测试 目标主机监控 可能报错 总结: 另一篇 https://blog.csdn.net/dataiyangu/article/details/888518 ...

  5. PHP 调试 - Xdebug

    PHP 调试指南.pdf PHP 程序员的调试技术 根据要调试的对象的不同,采取的方法也不一样: 调试 web 应用:对于 web 应用,可以在浏览器中安装插件,或者在 IDE 中设置,下面的设置二选 ...

  6. inclusion_tag 基本使用

    inclusion_tag的用途 inclusion_tag可以实现从后台往前端传递绑定数据的样式,一般用来动态显示模板页面中显示固定格式的数据. inclusion_tag的用法 step1: 编写 ...

  7. MyEclipse下Junit报错"The input type of the launch configuration"

    MyEclipse下Junit运行测试用例的时候报错: "The input type of the launch configuration does not exist" 原因 ...

  8. Eclipse Kepler安装WST Server Adapter后创建Server无Tomcat解决方法

    在Eclipse Kepler下安装完WST Server Adapter后,创建Server时发现没有Tomcat服务器的选项,这个问题解决起来很简单, 只需要安装一下JST Server Adap ...

  9. CodeForces 711D Directed Roads (DFS找环+组合数)

    <题目链接> 题目大意: 给定一个$n$条边,$n$个点的图,每个点只有一条出边(初始状态),现在能够任意对图上的边进行翻转,问你能够使得该有向图不出先环的方案数有多少种. 解题分析: 很 ...

  10. Metasploitable2使用指南

    Metasploitable2使用指南 Metasploitable2 虚拟系统是一个特别制作的ubuntu操作系统,本身设计作为安全工具测试和演示常见漏洞攻击.版本2已经可以下载,并且比上一个版本包 ...