SQLSERVER基础语法有哪些

这篇文章主要介绍SQL SERVER基础语法有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

创新互联IDC提供业务:服务器托管,成都服务器租用,服务器托管,重庆服务器租用等四川省内主机托管与主机租用业务;数据中心含:双线机房,BGP机房,电信机房,移动机房,联通机房。

Struct Query Language

1.3NF

a.原子性

b.不能数据冗余

c.引用其他表的主键

2.约束

a.非空约束

b.主键约束

c.唯一约束

d.默认约束

e.检查约束

f.外键约束

3.外键与关系

外键是约束,不做外键处理,关系也是存在的.

4.char varchar nchar nvarchar

char:是固定字符,如果不够,会用空格来处理. 不需要计算长度,速度快.

varchar:是动态的大小.需要计算长度,速度慢,存储占用小.

nvarchar:是以unicode编码存储.每个字符占2个字节.可以在任何sql server都能正常显示中文.不带n的英文占1个字节.中文占2个字节

5.crud

[select]:

取前5:select top 5

取前5%:select top 5 percent

去除重复:select distinct

条件:select * from 表名 where

[insert]:insert into 表名[(字段名,字段名)] values(字段值,字段值)

[update]:update 表名 set 字段名=字段值 [where]

[delete]:delete [from] 表名 [where]

6.运算符优先级

[逻辑运算符]: and or not(!)

[比较运算符]:< > = !=

比较运算符一般逻辑运算符优先级要高,除了not.!只比小括号的优先级低.

7.模糊查询

like:select * from 表名 where 字段名 like 值

_:匹配任意一个字符

%:匹配任意多个字符

[%]:匹配字符%

8.空值处理

ISNULL:select ISNULL(english,'缺考') from Scroe 英语成绩为空则显示缺考

is [not] null:select * from Scroe where english is null 把英语成绩为null的查询出来

9.聚合函数

SUM AVG COUNT MAX MIN

聚合函数一般和group by配合使用,having可以对group by后再过滤

10.完整查询语句顺序

select top 5 distinct * from T where field = fieldValue group by field2 having field2>5 order by field

1:from T  2:*  3:where  4:distinct  5:group by field2  6:having field2>5  7:order by  8:top 5

11.常用函数

[类型转换]:CAST(值 as 类型)  CONVERT(类型,值)

[字符串]:LTRIM(值)  RTRIM(值)  LOWER(值)  UPPER(值)  LEN(值)  SUBSTRING(值,开始位置,长度)

[日期]:GETDATE()取现在时间  DATEADD(datepart,number,date)加时间date+num  DATEDIFF(datepart,startdate,enddate)取时间差end-start  DATEPART(datepart,date)

取消/强制插入标识列:set identity_insert 表名 off/on

清空表:truncate table 表名

12.复制表

   select * into 新表 from 原表 where 1=1

13.联合查询

当2个结果集列数相同,类型相同,可以合并为一个结果集.

union:会自动去除重复行

union all:显示所有行.

14.连接查询

分内连接和外连接

内连接:[inner ]join

select * from T1 inner join T2 on T1.ID2 = T2.ID

自连接是特殊的内连接,树结构存储: select * from T as T1 join T as T2 where T2.PID = T1.ID

外连接:

left [outer] join:左连接,左表内容全部显示.右边没有的用NULL标示

right [outer] join:右连接,右表内容全部显示.左边没有的用NULL标示

full [outer] join:全连接,左右表内容全部显示,没有的用NULL标示

15.开窗函数

可以将多行合并为一个区来看待.可以对一个区进行统计.区别于group by,可以查询所有列.

开窗函数:over()  里面可以跟order by和partition by(类似 group by)

排名:rank() over(order by id)

排序:row_number() over(order by id)

小计:avg(cost) over(partition by cost)(平均费用)

16.视图

本质封装一个sql语句,不会存储任何数据.

创建:  create view viewName as sql语句

查看sql:  exec sp_helptext viewName 

17.事务

事务是保证多个操作同时成功或者同时失败

begin tran(开始事务)  commit tran(提交事务)  rollback tran(回滚事务)

打开/关闭事务自动提交:set implicit_transactions off/on

18.存储过程

存储过程本质是封装一段代码.

创建:  create proc procName

@param1 int,@param2 int output

as

set  @param2 =@param1 * @param1 

参数默认值:存储过程只有最后一个参数可以有默认值.

19.索引

[聚焦索引]:

[非聚焦索引]:

create index indexName on tableName(fieldName)

20.触发器

对某个表的进行增删改操作时,自动执行一个操作.有2种方式执行,1是触发源操作前替换执行 2是触发源操作后执行

临时表:inserted deleted

2种方式:after | instead of

3种触发源:insert update delete

创建:

create trigger triggerName

after insert

as  begin

insert into T  select * from inserted

end

建议:影响效率 谨慎使用

21.游标

逐行的操作数据

对每条数据执行指定的

使用:(让T表中每个人的年龄增1)

declare c1 cursor for

select id,age from T

declare @id int

declare @age int

open c1

fetch c1 into @id,@age

while(@@FETCH_STATU = 0)

begin

set @age= 1 + @age

update T set age = @age where id = @id

fetch c1 into @id,@age

end

close c1

deallocate c1

以上是“SQL SERVER基础语法有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!


本文名称:SQLSERVER基础语法有哪些
链接分享:http://hbruida.cn/article/gehpds.html