看了一些书,同时网上参考一些文章,整理的关于SqlServer数据库sql的备忘录文章。
全局变量的命名格式:@@xx
select @@VERSION --查看版本信息 select @@IDENTITY --查看当前的标识,跟在insert语句后面 select @@SERVERNAME --查看服务器名称 select @@ERROR --返回最后执行的一句语句的错误编号,如果没错误返回0 select @@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);--abc select right('abcdefg',3);--efg select substring('abcdefg',3,2);--cd替换
select replace('Hello,World','World','Python');转义
select ascii('a');--97 select 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.5600 select ceiling(1.1);--舍入到最大整数:2 select 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;--2 select 7%3;--1指数与平方根
select power(2,3);--8 select sqrt(16);--4日期的格式化
select getdate();--2015-08-11 20:25:30.973 select convert(varchar(50),getdate(),101) --08/11/2015 select convert(varchar(50),getdate(),102) --2015.08.11 select convert(varchar(50),getdate(),103) --11/08/2015 select convert(varchar(50),getdate(),104) --11.08.2015 select convert(varchar(50),getdate(),105) --11-08-2015 select convert(varchar(50),getdate(),106) --11 08 2015 select convert(varchar(50),getdate(),107) --08 11, 2015 select convert(varchar(50),getdate(),108) --20:26:11 select convert(varchar(50),getdate(),109) --08 11 2015 10:53:15:397PM select convert(varchar(50),getdate(),110) --08-11-2015 select convert(varchar(50),getdate(),111) --2015/08/11 select convert(varchar(50),getdate(),112) --20150811 select convert(varchar(50),getdate(),113) --11 08 2015 22:52:17:143 select convert(varchar(50),getdate(),114) --22:53:45:847 select convert(varchar(50),getdate(),120) --2015-08-11 22:45:34 select 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') – 2015 select datepart(month,'2015-08-11') – 8 select datepart(day,'2015-08-11') – 11尽量少用,可以通过@@ERROR来查看上一条语句是否发生了错误
select * into #temp_metercard from T_MeterCard begin try drop table #temp_metercard end try begin catch print '删除表失败' end catch无返回值的存储过程
--创建存储过程 create proc proc_sum1 @num1 int, @num2 int as declare @result int set @result = @num1 + @num2 print @result --调用存储过程 exec proc_sum1 1,2带返回值的存储过程
--创建存储过程 create proc proc_sum2 @num1 int, @num2 int, @result int output as set @result = @num1 + @num2 --调用存储过程 declare @r int exec proc_sum 1,2,@r output print @r