sql 2008常用语法语句收集
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]%', '234122') --等于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('2339','12233') select * from u_ware_q where wareid not in(select wareid from u_ware_class where classcode ='01010') --存在于某个数据集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(商品编码)+'1')),商品名称,商品规格 ,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='110160' –时间戳转日期 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='100000'") 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常用语法语句收集相关推荐
- SQL Server 常用更新语句,用B表数据作为条件或数据源更新A表数据
SQL Server 常用更新语句,用B表数据作为条件或数据源更新A表数据 示例:用B表姓名覆盖A表姓名 假设: A表数据 Id,Name 1,张三 B表数据 Id,Name 1,李四 用下面这个语句 ...
- MySQL学习宝典之最全的常用语法语句
MySQL学习宝典 MySQL引言 1.登录MySQL数据库 一.数据库操作相关 二.表相关 三.数据相关 四.约束 五.主键约束+自增 六.注释 七.事务 八.数据库数据类型 九.数据库导入导出 十 ...
- PL/SQL Developer常用命令快捷设置
序言 使用PL/SQL,常用命令语句查询SELECT 插入INSERT 更新UPDATE 删除DELETE等这类基础语句,都希望能像Liunx系统一样按TAB按键可以补全或查找,为了提高效率,我们可以 ...
- 征集佳句-精妙SQL语句收集
征集佳句-精妙SQL语句收集 SQL语句先前写的时候,很容易把一些特殊的用法忘记,我特此整理了一下SQL语句操作,方便自己写SQL时方便一点,想贴上来,一起看看,同时希望大家能共同多多提意见,也给我留 ...
- sql常用语法命令及函数_SQL右连接命令:语法示例
sql常用语法命令及函数 For this guide we'll discuss the SQL RIGHT JOIN. 对于本指南,我们将讨论SQL RIGHT JOIN. 正确加入 (Right ...
- SQL数据库常用语句大全
cmd环境下开启关闭数据库 以管理员身份运行命令提示符环境,启动数据库服务(其中MySQL57为数据库服务名,查找方法:右键我的电脑->管理->服务,):net start MySQL57 ...
- SQL常用基础语句(SQL常用增删改查语句及案例)
一.添加数据 语法: * insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n); 注意: (1) 列名和值要一一对应. (2) 如果表名后,不定义列名, ...
- MongoDB 查询语法与常用查询语句总结
MongoDB 常用查询语句总结 先来一波查询语句语法的基本解释: 列子: db.mycol.find({"likes": {$gt:10}, $or: [{"by&qu ...
- SQL注入教程——(二)常用语法基础
本文使用的数据库为hijack89 该数据库中存在名为user 的表 表中存在id.username.password 三个列 具体数据内容如下: 注意:该数据表第一条数据项为id为2,usernam ...
最新文章
- python怎样导入excel数据_python导入excel数据
- 设计模式入门(策略模式)
- android权限列表
- ant-mobile的Toast的样式修改(react)
- 微服务架构·基础篇[转]
- python集成包地址 Anaconda 一键安装拥有所有包
- 解决XP精简版(无IIS的XP系统)安装IIS服务器的问题
- 基于PHP+MySQL共享自行车租赁管理系统的设计与实现
- 浦发银行计算机基础知识题库,2018浦发银行面试经验(信息科技岗,总行信息技术岗等)...
- 【zblog】模板怎么安装?zblog主题安装教程
- Android内存优化大总结
- DDOS攻击是什么意思?日本奥运官网遭逾4亿次网络攻击
- JS学习之路系列总结四象阵(此文犹如武林之中的易筋经,是你驰骋IT界的武功心法,学会JS五大阵法就学会了JS,博主建议先学三才阵)
- Excel中CTRL+D的别样用法 隔行和隔列向下填充示例
- wl_15 Scanner使用
- acwing算法基础课数学知识关于质数的笔记
- Praat脚本-001 | 音频文件重新采样
- 如何通过SPSS的计算新变量功能,挖掘新洞察
- wpa_supplicant驱动移植
- (一)、HTTP分块传输(chunked)