SQL SERVER基础语法有哪些

56次阅读
没有评论

共计 2776 个字符,预计需要花费 7 分钟才能阅读完成。

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

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 基础语法有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-19发表,共计2776字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)