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))