SqlServer备忘录
来源:互联网 发布:淘宝网货源网靠谱么? 编辑:程序博客网 时间:2024/05/22 13:14
前言
看了一些书,同时网上参考一些文章,整理的关于SqlServer数据库sql的备忘录文章。
系统变量
全局变量的命名格式:@@xx
select @@VERSION --查看版本信息select @@IDENTITY --查看当前的标识,跟在insert语句后面select @@SERVERNAME --查看服务器名称select @@ERROR --返回最后执行的一句语句的错误编号,如果没错误返回0select @@ROWCOUNT --查看最后执行的一句语句影响的行数
数据的过滤
基本查询
select name as '姓名',age 年龄, gender from t_user;select * from t_user where name like '金_' and gender = '男' and age > 18;select max(age) from t_user;
排序
select * from t_user order by age desc;select * from t_user order by age desc,id ase;
正则表达式
select * from t_user where name like '_love';select * from t_user where name like 'love%';select * from t_user where name like '[张李王]_';select * from t_user where name like '[^张李]%';
空值检测
select * from t_user where name is null;select * from t_user where name = '';
不等运算
select * from t_user where age !=18;select * from t_user where age <>18;
范围查询
select * from t_user where age = 18 or age =19 or age =20;select * from t_user where age in (18,19,20);select * from t_user where age between 18 and 20;
字符串处理
字符串的长度
select len('Kimisme')
大小写转换
select lower('JACK');select upper('rose');
去空格
select ltrim(' love');select rtrim('love ');select ltrim(rtrim(' love '));
截取
select left('abcdefg',3);--abcselect right('abcdefg',3);--efgselect substring('abcdefg',3,2);--cd
替换
select replace('Hello,World','World','Python');
转义
select ascii('a');--97select char(97);--a
位置索引
select charindex('m','kimisme');--3
反转
select reverse('abc');--cba
类型转换
select convert(decimal(10,2),'1.234343')select cast('1.243434' as float)
数学函数
绝对值
select abs(-3.14);
随机数
select rand();--0-1之间select rand(2);--只产生一次,继续运行不变
四舍五入
select round(1.5555,2);--四舍五入:1.5600select ceiling(1.1);--舍入到最大整数:2select floor(1.9);--舍入到最小整数:1
三角函数
select sin(1);--正弦select cos(1);--余弦select tan(1);--正切select asin(1);--反正弦select acos(1);--反余弦select atan(1);--反正切select tan2(1,1),atan(1);--反正切select cat(1);--余切
圆周率
select pi();
角度制与弧度制
select degrees(1),1*180/pi();--弧度制转角度制:角度制=弧度制*100/πselect radians(1),1*pi()/180;--角度制转弧度制:弧度制=角度制*π/180
求一个数的符号
select sign(-3.14),sign(3.14);大于0返回1;小于0返回-1
商与余数
select 7/3;--2select 7%3;--1
指数与平方根
select power(2,3);--8select sqrt(16);--4
日期与时间函数
日期的格式化
select getdate();--2015-08-11 20:25:30.973select convert(varchar(50),getdate(),101) --08/11/2015select convert(varchar(50),getdate(),102) --2015.08.11select convert(varchar(50),getdate(),103) --11/08/2015select convert(varchar(50),getdate(),104) --11.08.2015select convert(varchar(50),getdate(),105) --11-08-2015select convert(varchar(50),getdate(),106) --11 08 2015select convert(varchar(50),getdate(),107) --08 11, 2015select convert(varchar(50),getdate(),108) --20:26:11select convert(varchar(50),getdate(),109) --08 11 2015 10:53:15:397PMselect convert(varchar(50),getdate(),110) --08-11-2015select convert(varchar(50),getdate(),111) --2015/08/11select convert(varchar(50),getdate(),112) --20150811select convert(varchar(50),getdate(),113) --11 08 2015 22:52:17:143select convert(varchar(50),getdate(),114) --22:53:45:847select convert(varchar(50),getdate(),120) --2015-08-11 22:45:34select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','') --20150811225416
日期的差额
select dateadd(year,3,'2015-08-11 20:25:30.973') --2018-08-11 20:25:30.973 --年select dateadd(quarter,1,'2015-08-11 20:25:30.973') --2015-11-11 20:25:30.973--季度select dateadd(month,3,'2015-08-11 20:25:30.973') --2015-11-11 20:25:30.973--月份select dateadd(day,3,'2015-08-11 20:25:30.973') --2015-08-14 20:25:30.973 -- 日select dateadd(hour,3,'2015-08-11 20:25:30.973') --2015-08-11 23:25:30.973 -- 小时select dateadd(minute,3,'2015-08-11 20:25:30.973') --2015-08-11 20:28:30.973 --分select dateadd(second,3,'2015-08-11 20:25:30.973') --2015-08-11 20:25:33.973 --秒select dateadd(millisecond,3,'2015-08-11 20:25:30.973') --2015-08-11 20:25:30.977 --毫秒
计算两个日期相差几天
select datediff(day,'2015-08-11','2015-08-14') -- 3
计算一个日期是星期几
select datename(weekday,'2015-08-11') --星期二
获取日期的指定部分
select datepart(year,'2015-08-11') – 2015select datepart(month,'2015-08-11') – 8select datepart(day,'2015-08-11') – 11
动态执行sql语句
declare @busshallID nvarchar(255)='2,3'declare @strWhere nvarchar(255)=''declare @strMain nvarchar(255)if(@bussHallId is not null) set @strWhere = @strWhere + ' and bh.ID in ('+@bussHallId+')'set @strMain = ' select bh.Name as ''名称'',bh.CreateTime from T_BussHall bhwhere 1 =1 ' +@strWhereexec(@strMain)
其他操作
try…catch…
尽量少用,可以通过@@ERROR来查看上一条语句是否发生了错误
select * into #temp_metercard from T_MeterCardbegin try drop table #temp_metercardend trybegin catch print '删除表失败'end catch
if…else…
if exists(select * from T_MeterCard where ID =0) begin print '存在' endelse begin print '不存在' end
case…when…
select (case when mc.TypeDictID =17 then '居民户' when mc.TypeDictID = 18 then '商业户' when mc.TypeDictID = 19 then '工业户' else '工福户' end) as '户主类型',(case mc.TypeDictID when 17 then '居民户' when 18 then '商业户' when 19 then '工业户' else '工福户' end) as '户主类型2' from T_MeterCard mc
while
declare @i int =1declare @sum int =0while(@i<=10)begin set @sum += @i set @i += 1endprint @sum
事务
declare @ErrorCount int = 0begin tranupdate T_MeterCard set Note = 1/1 where ID =1set @ErrorCount+=@@ERRORupdate T_MeterCard set Note = 1/0 where ID =2set @ErrorCount+=@@ERRORif(@ErrorCount>0) begin rollback tran endelse begin commit tran end
存储过程
无返回值的存储过程
--创建存储过程create proc proc_sum1@num1 int,@num2 intasdeclare @result intset @result = @num1 + @num2print @result--调用存储过程exec proc_sum1 1,2
带返回值的存储过程
--创建存储过程create proc proc_sum2@num1 int,@num2 int,@result int outputasset @result = @num1 + @num2--调用存储过程declare @r intexec proc_sum 1,2,@r outputprint @r
索引
- 创建表
create table T_User( Id int primary key identity(1,1), UNo nvarchar(10), UName nvarchar(10), UAge int)
- 创建索引
create index idx_user_name on T_User(UName)
- 删除索引
drop index idx_user_name on T_User
阅读全文
0 0
- SqlServer备忘录
- sqlserver 数据库操作备忘录
- sqlserver常用知识点备忘录
- sqlserver常用知识点备忘录(更新)
- 备忘录
- 备忘录
- 备忘录
- 备忘录
- 备忘录
- 备忘录
- 备忘录
- 备忘录
- 备忘录
- 备忘录
- 备忘录
- 备忘录
- 备忘录
- 备忘录
- 小程序如何快速获得3000用户?
- VC++USB及串口通信程序(附工程)
- MYSQL:WARN: Establishing SSL connection without server's identity verification is not recommended.
- angularjs实现点击图标显示div,点击div以外的区域隐藏div
- 评分卡风险视图和异常值处理(R语言)
- SqlServer备忘录
- Linux功耗管理(29)Linux CPU core的电源管理(1)_概述
- 第13章 线程安全与锁优化
- Hive ClassNotFoundException: Class org.apache.hadoop.hive.contrib.serde2.RegexSerDe not found
- 使用 getopt() 进行命令行处理
- JAVA 点对点聊天
- 小知识点2
- 双向链表的操作
- springboot实现ajax跨域请求