DataBase 之 常用操作
(1) try catch 配合 Transactions 使用
--打开try catch功能
set xact_abort on
begin try
begin tran
insert into tableName(ID) values(1)
commit tran
print 'commited'
end try
begin catch
rollback
print 'rolled back'
end catch
(2)获取当前月前一个月有多少天(DatePart( date , datetime) DateAdd(date , 数字 ,datetime) Cast(exp as datetime))
select DatePart
(day,DateAdd(DAY,-1,
Cast(cast(YEAR(getdate()) as nvarchar)+'-'+
cast(month(getdate()) as nvarchar)+'-01' as datetime))
)
(3)取到小数第二位四舍五入(类型转换)
Select Convert(Numeric(20,2), IsNull(50.01634,0))
结果:50.02
(4)获取时间
[1]一个月第一天:select DateAdd(mm,DateDiff(mm,0,getdate()),0)
--DateAdd当添加的值和初试值均为0时,返回的时间为1900-01-01 00:00:000
select DATEADD(mm,0,0);
[2]本年:year(getdate())
[3]本月:month(getdate())
[4]本日:Day(getDate())
[5]昨天的记录:datediff(day,[Datetime],getdate())=1 把Datetime换为你的相应字段,getdate()-Datetime即为时间差。
[6]本月/周/日记录:DateDiff(month/week/day,[dateadd],getdate())=0
[7]本周的星期一:Select DateAdd(wk, DateDiff(wk,0,getdate()), 0)
[8]季度的第一天:Select DateAdd(qq, DateDiff(qq,0,getdate()), 0)
[9]当天的凌晨(半夜):Select DateAdd(dd, DateDiff(dd,0,getdate()), 0)
[10]本年的第一天::select DateAdd(YY,DateDiff(yy,0,getdate()),0)
[11]去年的最后一天(今年的第一天减去3毫秒):select DateAdd(ms,-3,DateAdd( yy, DateDiff( yy, 0, getdate()), 0))
[12]本月的第一天:select DateAdd( mm, DateDiff( mm, 0 , GetDate()), 0);
[13]本月的最后一天:select DateAdd(ms,-3, DateAdd(mm, DateDiff(mm,0,getdate()), 0))
[14]本年的最后一天:Select DateAdd(ms,-3, DateAdd(yy, DateDiff(yy, 0, getdate()) +1, 0))
[15]本月的第一个星期一:select DateAdd(wk, DateDiff(wk,0, DateAdd(dd,6 - Datepart(day,getdate()) ,getdate()) ), 0)
[16]显示星期几:select DateName(weekday , getdate() );
[17]显示本月的天数:select DateDiff(dd , getdate() , DateAdd(mm , 1 , getdate()) );
[18]显示某年某月有多少天
create Function DaysInMonth1(@datetime datetime)
returns int
as
begin
return Day( Datepart( dd, DateAdd( ms, -3, DateAdd(mm ,DateDiff(mm,0,@datetime)+1 , 0) ) ))
end
调用select dbo.DaysInMonth1('2012-2-13');
(5)获取当前数据库中所有用户的表
select * from sysobjects where xtype='U'
(6)随机取出3条数据
Select top 3 * from Table order by NewId()
(7)查找表中多余的重复记录
Select * from Table where ID in( select SID from Table group by ID having Count(Name)>1)
(8)关键字waitfor 主要有waitfor delay(推迟执行),waitfor time (特定时间执行)
waitfor delay '00:00:08'
print('Hello ,Im waitfrom delay')
waitfor time '20:49:50'
print('Hello,Im waitfor time')
(9)检测数据是否存在
[1]检测数据库是否存在
if( Exists(select * from sys.databases where name='School'))
select * from Student
go
[2]检测数据表是否存在
if( exists(select * from sys.objects where name='Student'))
select * from Student order by SID desc
go
[3]检测数据列是否存在
if(exists(select * from sys.all_columns where object_id=object_id('Student') and name='Sname'))
select * from Student
go
(10)表连接
--同时无条件的查询两个不相关的表,所得新表字段为两表字段之和,信息条数为两个信息条数的乘积 (即为:两表的笛卡尔积)
select T.* , Student.* from T , Student
--交叉连接即为上边所讲的那种连接
select T.*,Student.* from T Cross Join Student
--随机数均可以产生0-1之间的随机数
Select Rand(); select Rand( CheckSum(NewId()) )
--随机数0-9
select ABS(Rand()); select ABS(CheckSum(NewId()))%10
--随机数a-b之间
select a+ABS(checksum(newid()))%(b-a+1)
select 1+ABS(checksum(newid()))%100
字符串操作
--SubString字符串截取(str ,StartIndex , Length)
select SubString( 'Olive116', 1, 5)
--left/right从左边截取字符串
select Left/Right ( 'Olive', 3 )
--字符串替换Replace( str, str1, str2)
select Replace('OOLive','o','1')
--反转排序
select Reverse('Olive')
--删除指定的长度并在指定的起点处插入另一组字符
select Stuff('OliveOOO',6,3,'Hello')
--以指定的次数重复字符串的值
select Replicate('Olive',3)
--返回表达式中第一次出现的位置
select PatIndex('%Olive%','Hello!Olive')
--返回字符串中指定表达式的开始位置
select CharIndex('O','Hello,Olive')
--返回输入表达式的第一个字符的整数值
select UniCode('o')
--返回由数字数据转换来的字符数据
select STR(123.1314,4),LEN(STR(123.3212,321))
select STR(123.1334,4,4)
--发音匹配度
select Sname,SOUNDEX(Sname) from Student
--Difference()简化两个字符串发音相似度,返回0-4之间的值来反应两个字符的相似度,值越大就越相似
select Sname,SOUNDEX(Sname), Difference (Sname,'Olive') from Student
--查询重复记录
select * from Table where SID in (select SID from Table group by SID having COUNT(SID)>0)
--删除重复的记录(并保留SID最小的记录)
delete from Table where
SID in (select SID from Table group by SID having COUNT(SID)>0)
and SID not in(select MIN(SID) from Student group by SID having count(SID)>0)
--双引号
select '''''' as result
--isnumeric()判断是否是数字是为1否为0
select IsNumeric('a')
--isdate()判断是否为日期是为1否为0
select IsDate('2012-3-2')
DataBase 之 常用操作的更多相关文章
- mysql常用操作语句
mysql常用操作语句 1.mysql -u root -p 2.mysql -h localhost -u root -p database_name 2.列出数据库: 1.show datab ...
- Oracle常用操作——创建表空间、临时表空间、创建表分区、创建索引、锁表处理
摘要:Oracle数据库的库表常用操作:创建与添加表空间.临时表空间.创建表分区.创建索引.锁表处理 1.表空间 ■ 详细查看表空间使用状况,包括总大小,使用空间,使用率,剩余空间 --详细查看表空 ...
- DBA必备:MySQL数据库常用操作和技巧
DBA必备:MySQL数据库常用操作和技巧 2011-02-25 15:31 kaduo it168 字号:T | T MySQL数据库可以说是DBA们最常见和常用的数据库之一,为了方便大家使用,老M ...
- [转]Mysql命令行常用操作
Mysql命令行常用操作 一.从命令行登录MySQL数据库服务器 1.登录使用默认3306端口的MySQL /usr/local/mysql/bin/mysql -u root -p 2.通过TCP连 ...
- MySQL常用操作总结
MySQL常用操作 前提条件:已安装MySQL. 学习目标:用一条sql语句写出A和B的剩余数量 AA表 BB表 以上为一道面试题,接下来由这道面试题来回顾一些数据库的基本操作. 登录MySQL su ...
- mongodb的常用操作
对于nosql之前工作中有用到bekerlydb,最近开始了解mongodb,先简单写下mongodb的一些常用操作,当是个总结: 1.mongodb使用数据库(database)和集合(collec ...
- Linux常用操作练习
Linux常用操作练习 练习一:安装CentOS 1.设置为1G内存(才有图形界面).10G硬盘 2.分给交换分区2G(4G一下2G,8G-32G分4G-8G) 练习二:安装CentOS迷你版 1.安 ...
- MongoDB副本集的常用操作及原理
本文是对MongoDB副本集常用操作的一个汇总,同时也穿插着介绍了操作背后的原理及注意点. 结合之前的文章:MongoDB副本集的搭建,大家可以在较短的时间内熟悉MongoDB的搭建和管理. 下面的操 ...
- Linux下mysql的常用操作
Linux下mysql的常用操作: 显示数据库 show databases; 选择数据库 use 数据库名; 显示数据库中的表 show tables; 显示数据表的结构 describe 表名; ...
随机推荐
- mysql操作时遇到的小问题
mysql数据库在程序中执行sql语句时,或者在执行sql时,数据库表可能会有一些特殊的字符,比如说#,.等,这样在执行时 可能会遇到问题 如以下的表名,backup_2014.2.22, 这个表在查 ...
- web服务器分析与设计(一)
自己写一个简单的服务器. 面向对象分析与设计第一步:获取需求(基于用例) 功能:1,支持html静态网页,2,支持常用HTTP请求,且容易扩展支持不现请求 3,可以发布站点 补充:至于对动态网页等高级 ...
- 基础排序算法,java实现(快速,冒泡,选择,堆排序,插入)
1.冒泡排序: (1)比较相邻的元素.如果第一个比第二个大,就交换他们两个. (2)外面再套个循环就行. 算法复杂度:O(N2) 不罗嗦,上代码: //冒泡排序(两两交换,外加一个外循环) pub ...
- redis的sets类型
set是集合 , 它是string类型的无序集合 . set是通过hash table 实现的 , 添加.删除和查找的复杂度都是O(1) . 对集合我们可以取并集.交集.差集.通过这些操作我们可以实现 ...
- 自动帮助创建android资源xml文件的网站
自动帮助创建android资源xml文件的网站 http://android-holo-colors.com/ stack overflow上一个seekbar的例子: http://stackove ...
- gratitute
韩信帮刘邦夺得天下,最终又得到了什么?姑且不问当初刘邦拜将是何心态?虽然他的所拜之相并不是的那边从芒砀山带下来的哥们或是在沛县时候一起打混的兄弟? 韩信在汉军营得以重用,在项羽处屈其才,此真正的原因在 ...
- VIM技巧(2)-删除匹配行
VIM技巧(2)-删除匹配行 代码如下: * @Company:中国股份有限公司 * @author ymzhao (也有zyyang的) * @Date: Jan 22, 2014 11:25:29 ...
- codeforce 621A(水题)
A. Wet Shark and Odd and Even time limit per test 2 seconds memory limit per test 256 megabytes inpu ...
- [C语言 - 7] 结构体struct
A. 基本知识 与数组的对比 数组: 构造类型 只能有多个相同类型的数据构成 结构体: 结构体类型 可以由多个不同类型的数据构成 1. 定义类型 struct Student { int ...
- CCS3.3入门
CCS3安装包下载地址:http://pan.baidu.com/share/link?shareid=1887452332&uk=1799203308&qq-pf-to=pcqq.c ...