加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLServer从入门到精通

发布时间:2020-12-12 13:51:23 所属栏目:MsSql教程 来源:网络整理
导读:1、数据分页 OFFSET:指定在从查询表达式中返回行之前,将跳过的行数。 FETCH:指定在OFFSET子句后,将返回的行数。 OFFSET是页号的同义词,FRTCH则代表每页显示的行数。 select?ProductID,?ProductNumber,?Name?AS?ProductName,?ListPricefrom?Production.P

1、数据分页

OFFSET:指定在从查询表达式中返回行之前,将跳过的行数。

FETCH:指定在OFFSET子句后,将返回的行数。


OFFSET是页号的同义词,FRTCH则代表每页显示的行数。

select?ProductID,?ProductNumber,?Name?AS?ProductName,?ListPrice
from?Production.Product
order?by?ProductID
offset?0?rows
fetch?next?10?rows?only


2、使用变量

声明变量:declare ?@variable ?int

三种赋值方法:可以使用SET关键字,这是最佳选择;也可以在SELECT语句中为变量分配一个值;还可以在声明变量的过程中为其赋值。

declare?@variable?int
set?@variable?=?<value>
select?@variable?=?<column?or?expression>
from?<table?name>
declare?@variable?int?=?<value>


3、更改数据库名称

alert?database?test_db
motify?name=company


4、查询前三条数据

select?TOP?3?*?from?test_table

5、性别不为男

select?*?from?test_table?where?not?S_sex='男'

6、用户权限

赋予权限

grant?update,delete?on?test_table
to?sa?with?grant?option

取消权限

deny?update?on?test_table?to?sa?cascade

7、case语句

select?s_id,s_name,case?s_name
????when??'马华'??then??'班长'
????when??'徐三'??then??'学习委员'
????when????'刘杰'????then????'体育委员'
????else????'无'
end
as????'职位'
from????stu_info


8、延迟10秒

declare?@name?varchar(50);
set?@name='admin';
begin
waitfor?delay?'00:00:10';
print?@name;
end;


9、函数

select?ASCII('s'),ASCII('sql'),ASCII('1');

输出:????115????115????49

select?char(115),char(49);

输出:????s????1

select?left('football',4);????//right,取右边的四个

输出:????foot

select?'('+'?book?'+')','('+LTRIM('?book?')+')';????//删除字符串左边的空格

输出:????( book )(book )

select?STR(3141.55,6,1),STR(123.45,2,2)????//数字转化为字符串

输出:????3141.6**

select?REVERSE('abc')????//字符串逆序

输出:????cba

SELECT?LEN('no'),LEN('日期'),LEN(12345)????//字符串长度

输出:????2????2????5

SELECT?CHARINDEX('a','banana'),CHARINDEX('a','banana',4),CHARINDEX('na',4)????//指定字符开始位置

输出:????2????4????5

SELECT?LOWER('BEA'),LOWER('Well')????//大写字符转换为小写,UPPER--转换为大写

输出:????bea????well

SELECT?REPLACE('xxx.sqlserver2012.com','x','w')????//字符串替换

输出: ? ?www.sqlserver2012.com

SELECT?ABS(2),ABS(-3.3),ABS(-33)????//取绝对值

输出:????2????3.3????33

SELECT?PI()????//圆周率

输出:????3.14159265358979

SELECT?SQRT(9),SQRT(40)????//求平方根

输出:????36.32455532033676

SELECT?RAND(),RAND(),RAND()????//产生0-1之间的一个随机数
SELECT?ROUND(1.38,ROUND(1.38,0),ROUND(232.38,-1),-2)????//四舍五入

输出:????1.40?1.00 ????230.00 ????200.00

SELECT?SIGN(-21),SIGN(0),SIGN(21)????//符号函数

输出:????-101

SELECT?CEILING(-3.35),CEILING(3.35)????//向上取整

输出:????-34

SELECT?FLOOR(-3.35),FLOOR(3.35)????//向下取整

输出:????-43

SELECT?POWER(2,2),POWER(2.00,-2)????//幂运算

输出:????40.25

SELECT?EXP(3),EXP(-3),EXP(0)????//已e为底的幂运算

输出:????20.08553692318770.04978706836786391

10、数据类型转换函数

SELECT?CAST('121231'?AS?DATE),CAST(100?AS?CHAR(3)),CONVERT(TIME,'2016-12-13?10:57:00')????//数据转换

输出:????2012-12-31100? ??10:57:00.0000000

11、日期和时间函数

select???getdate()????//获取当前日期
SELECT?GETUTCDATE()????//获取世界标准日期值
select??day('2016-12-13?01:01:01')????//获取天
select??month('2016-12-13?01:01:01')????//获取月
select??year('2016-12-13?01:01:01')????//获取年
select????datename(weekday,'2016-12-13?01:01:01')????//星期几
select????datename(dayofyear,'2016-12-13?01:01:01')????//一年的第几天


增加时间

SELECT?DATEADD(YEAR,1,'2016-12-13?01:01:01'),DATEADD(MONTH,DATEADD(HOUR,'2016-12-13?01:01:01')

输出:2017-12-13 01:01:01.000 2017-02-13 01:01:01.000 2016-12-13 02:01:01.000

12、系统函数

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读