当前位置:   article > 正文

一篇文章带你精通Sql Server 基础语法_sql server语法

sql server语法

当代软件开发离不开数据库的支持,而数据库又离不开SQL语句。SQL(Structured Query Language)是一种专门用于在关系型数据库中进行操作的语言。它包括一系列的基础语句,如SELECT、INSERT、UPDATE和DELETE等,这些语句是数据库中最基本也是最常用的语句。此外,SQL还包括一些高级语句,如JOIN、GROUP BY、HAVING、UNION等,这些语句可以帮助我们更高效地操作数据库。在数据库的设计、建模、管理和维护等环节中,都需要掌握SQL语句的基本知识。本文将介绍SQL语句的基础知识,包括各种基本语句的语法、用法以及常见的应用场景等。


一、找到自己的表

 我这里用这个表举例,这个表是Users表。下面的方法都用这个来列举示例:

1、创建数据库

CREATE DATABASE my_database;--创建数据库

2、创建表

  1. CREATE TABLE customers (--创建表
  2. Uid uniqueidentifier PRIMARY KEY,--id 主键
  3. UName NVARCHAR(50),--姓名
  4. Pwd NVARCHAR(50),--密码
  5. );

3、分页查询数据——Offset  Rows  Fetch

  1. -- Begin 分页查询
  2. declare ---用户参数
  3. @pageIndex int=1,---定义页码
  4. @pageSize int =2,---定义每页数量
  5. @startIndex int --查询参数
  6. set @startIndex=(@pageIndex -1)*@pageSize --计算开始位置
  7. select * from Users
  8. order by Uid
  9. offset @startIndex rows
  10. fetch next @pageSize
  11. row only
  12. -- End 分页查询

4、添加数据——Insert

  1. Insert Users --表名
  2. (Uid,UName,Pwd) --字段
  3. Values
  4. ('77D4CBFE-71F6-4145-B28A-ADF5C7C9A098','哈哈哈','123')--数据

5、删除数据——Delete

  1. Delete Users --表名
  2. where Uid = '77D4CBFE-71F6-4145-B28A-ADF5C7C9A098'--删除的条件,如果没有条件则全部删除

6、删除整个表——Drop

Drop Users--表名

7、修改数据——Update Set

  1. Update Users --表明
  2. set
  3. Pwd = '123456' --要修改的字段
  4. where Uid = '77D4CBFE-71F6-4145-B28A-ADF5C7C9AE12'--修改条件

8、分组查询——Group By Having

  1. SELECT Uid, Count(UName) --必须要有聚合函数
  2. FROM Users --表名
  3. GROUP BY Uid --分组的字段
  4. HAVING Count(UName) > 0; --分组的条件。注意Having只能用于分组的语句;在使用HAVING子句时,务必小心,确保只选择和过滤您想要的结果

9、排序操作——Order By Asc/Desc

  1. select * --字段
  2. from Users --表明
  3. Order By Pwd Asc--排序的字段 Asc升序从小到大 Desc降序从大到小

10、连表查询——Join onLeft Join on  - Right Join on

  1. -- 普通连表
  2. select A.Uid,B.UName,B.Pwd,B.Age,B.Sex --查询的字段
  3. from Users A join Users_LianBiao B --查询的表和连接的表
  4. on A.Uid = B.Uid --连接条件
  1. -- 左连接连表
  2. select A.Uid,B.UName,B.Pwd,B.Age,B.Sex --查询的字段
  3. from Users A Left join Users_LianBiao B --查询的表和连接的表
  4. on A.Uid = B.Uid --连接条件
  5. -- 左连接(LEFT JOIN)会返回左表中的所有行和右表中匹配的行,如果右表中没有匹配的行,则返回NULL值。

  1. -- 右连接连表
  2. select A.Uid,B.UName,B.Pwd,B.Age,B.Sex --查询的字段
  3. from Users A Right join Users_LianBiao B --查询的表和连接的表
  4. on A.Uid = B.Uid --连接条件
  5. -- 右连接(RIGHT JOIN)则是左连接的反向操作,它会返回右表中的所有行和左表中匹配的行,如果左表中没有匹配的行,则返回NULL值。


11、聚合函数——Sum() - Avg() - Count() - Max() - Min()

  1. --SUM(): 计算指定列的总和。例如,SUM(column_name)将返回指定列中所有值的总和。
  2. select Sum(Age) --求和
  3. from Users_LianBiao --表名
  4. Group By Sex --分组的字段
  1. --AVG(): 计算指定列的平均值。例如,AVG(column_name)将返回指定列中所有值的平均值。
  2. select Avg(Age) --平均值
  3. from Users_LianBiao --表名
  4. Group By Sex --分组的字段
  1. --COUNT(): 计算指定列中的行数或非NULL值的数量。例如,COUNT(*)将返回表中的行数,COUNT(column_name)将返回指定列中的非NULL值的数量。
  2. select Count(Age) --计数
  3. from Users_LianBiao --表名
  4. Group By Sex --分组的字段
  1. --MAX(): 计算指定列中的最大值。例如,MAX(column_name)将返回指定列中的最大值。
  2. select Max(Age) --最大值
  3. from Users_LianBiao --表名
  4. Group By Sex --分组的字段
  1. --MIN(): 计算指定列中的最小值。例如,MIN(column_name)将返回指定列中的最小值。
  2. select Sum(Age) --最小值
  3. from Users_LianBiao --表名
  4. Group By Sex --分组的字段

12、创建视图——View As

  1. Create View aaa --创建一个名叫aaa的视图
  2. As
  3. select A.Uid,B.UName,B.Pwd,B.Age,B.Sex from Users A join Users_LianBiao B on A.Uid = B.Uid --连表查询,把查到的字段数据存到aaa视图里面相当于
  4. select * from aaa --查询视图得到的就是上面语句的结果

13、存储过程——Proc  As

  1. --存储过程
  2. if exists(select * from sysobjects where name='vvv') --查看是否存在vvv
  3. drop proc vvv 存在的话删除
  4. go
  5. Create Proc vvv( --创建要给叫VVV的存储过程
  6. @a int, --声明一个参数 @a
  7. @u varchar(50) --声明一个参数@u 后面跟的是类型
  8. )
  9. As
  10. select * from Users_LianBiao where Age = @a or UName = @u --存储过程里面要执行的语句
  11. exec vvv '12','你好' --创建完成后可以执行这个存储过程 把参数传递过去

存储过程通常和事务一起书写,通常会在存储过程里开一个事务。


14、事务——Transaction

  1. --查询两个数据的性别,互换一下
  2. --声明两个变量存储
  3. Declare @sex1 nvarchar
  4. Declare @sex2 nvarchar
  5. select @sex1=sex from Users_LianBiao where UName = '马化腾' --赋值
  6. select @sex2=sex from Users_LianBiao where UName = '马斯克' --赋值
  7. --开启事务
  8. Begin Tran
  9. begin
  10. update Users_LianBiao set sex=@sex2 where UName = '马化腾'
  11. end
  12. if @@error=0 --判断
  13. begin
  14. print '第一个修改成功'
  15. update Users_LianBiao set sex=@sex1 where UName = '马斯克'
  16. if @@Error=0
  17. begin
  18. print '第二个修改成功'
  19. commit Tran --提交事务
  20. end
  21. else
  22. begin
  23. print '第二个修改失败'
  24. rollback Tran --事务回滚
  25. end
  26. end
  27. else
  28. begin
  29. print '第一个修改失败'
  30. rollback Tran --事务回滚
  31. end

15、触发器——Trigger

  1. --触发器
  2. -- 创建一个名为trig_customers的触发器,当向Users_LianBiao表中插入新行时触发
  3. CREATE TRIGGER trig_customers
  4. ON Users_LianBiao
  5. AFTER INSERT
  6. AS
  7. BEGIN
  8. -- 在此处编写触发器的主体代码
  9. -- 示例代码:向Users表中插入一条新的记录
  10. INSERT Users (Uid,UName,Pwd) Values ('77D4CBFE-71F6-4145-B28A-ADF5C7C9A888', '张磊','456')
  11. END

16、修改某个字段的部分值(不修改全部)

  1. -- 字段 要修改的值 字段 修改后的值
  2. -- STUFF(PriceInfo, CHARINDEX('价格不一致', PriceInfo), 1, '价格变化')
  3. UPDATE JinDingDB..JinDingData
  4. SET PriceInfo = STUFF(PriceInfo, CHARINDEX('价格不一致', PriceInfo), 1, '价格变化')
  5. WHERE OTAName = 'DYCnHotelMD' and PriceInfo like '%价格不一致%'

sql中的基本操作大致就是以上这些。写的还是比较详细的,大家可以进行参考。

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号