SQL Server 基础知识

SQL Server 基础知识

规范:

一般来说,关键词是要使用大写格式的,但在SQL Server中是不关注大小写的,这是规范。

  • 基本的查询:

SELECT : 选择(需要查询的数据)

FROM : 数据的来源

WHERE :用于进行条件筛选

  • 逻辑 :

OR : 或

AND : 与

NOT : 非

IS NULL:组合式,查找NULL

IN : 左侧为列,右侧为条件

BETWEEN:用于查询区间的值,可以限制最大值和最小值,两个范围之间使用AND隔开

LIKE:用于模糊搜索,%表示任意(%通配符),_表示固定的占位长度

  • 排序

ORDER BY : 根据指定的字段进行排序,默认是从小到大(顺序),如果需要从大到小排序,使用 DESC 进行倒序操作。

  • 用于连接的关键词

INNER : 内连接 ,默认就是内连接,可以不写。

JOIN : 用于连接另外一张表格。

LEFT : 外连接,返回左表的数据,无视对应的连接条件。

RIGHT :外连接,返回右表的数据,无视对应的连接条件。

OUTER : 外连接,可以不写。

UNION :用于连接,将两个查询语句进行连接,返回结果。

CROSS :交叉连接。

聚合函数

集合函数,又称内置函数。其对组执行计算并返回每一个组的唯一的值。

常用的聚合函数:

COUNT() : 用于统计数量 (int类型)

SUM() : 求数值的总和

MAX() :求最大值

MIN() :求最小值

AVG() :求平均值,总共的和 ÷ 总的数量

分组

GROUP BY

GROUP BY 子句一般和聚合函数一起使用,用于统计数据。

将行排列成组,根据某一个字段进行分组

HAVING

用于筛选条件 和 WHERE 类似

相同之处:HAVING 和 WHERE 表现效果一致。

不同之处:HAVING 关键字用于获取数据之后;WHERE 关键字用于获取数据之前。

HAVING 关键字常常用于配合聚合函数使用,一般进行数据统计之后,再进行数据的过滤。


查询

使用最简洁的查询方法,将整张表的数据返回。

SELECT * FROM dbo.SYS_studentFile

查询部分的数据,返回部分需要数据。

SELECT 
  studentName,
  seudentSex
FROM 
  StudentFile

连表查询

SELECT 
  * 
  FROM 
  courseTable as c
  JOIN studentTable as s
  ON c.aid = s.aid ;

需求某一条特定的数据,主要在最新和最旧的数据上;
我们可以使用ORDER BY进行升序排列,添加上DESC为降序排序。

-- 正序排列,返回最旧的数据
SELECT * FROM course ORDER BY cname 
-- 降序排列,返回最新的数据
SELECT * FROM course ORDER BY cname DESC

使用GROUP BY来进行分组

SELECT c.cname,sc.score,COUNT(*)
FROM course AS c 
JOIN sc ON c.cno = sc.cno
GROUP BY c.cname,sc.score
ORDER BY c.cname 

插入(新增)

INSERT INTO table (name, sex) 
VALUES ('紫萱',)

更新(修正)

UPDATE table
SET 
  PW_student = 'studentFile'
WHERE 
  studentID = 1

删除

DELETE FROM table WHERE tableID = 1 

数值函数

SELECT RAND(); -- 生成随机数
SELECT ROUND(3.3, 0); -- 3 四舍五入,书写第二参数,指定保留位数,返回值会带着后面的0
SELECT FLOOR(3.5); -- 4 向下取整
SELECT CEILING(3.5); -- 4 向上取整
SELECT TRUNCATE (6.33, 0); -- 6 截取位数

日期函数

-- 当前时间
SELECT GETDATE(); 
-- 年
SELECT YEAR(); 
-- 月
SELECT MONTH(); 
-- 日
SELECT DAY(); 
-- 日期计算
SELECT DATE_A( GETDATE(), INTERVAL 1 YEAR); -- 在当前的基础上添加一年
SELECT DATE_B( GETDATE(), INTERVAL 1 YEAR); -- 在当前的基础上减少一年
-- 获取秒数
SELECT DATA_MINCT('01:00'); -- 3600
-- 获取时间两个时间的间隔,只返回相差的天数
SELECT DATEDIFF( GETDATE(), DATE_A( GETDATE(),INTERVAL 1 YEAR))
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值