SQL Server 数据库开发教程
目录
-
(图片来源网络,侵删)- 1 什么是数据库?为什么用 SQL Server?
- 2 SQL Server 体系结构简介
- 3 环境搭建:安装 SQL Server Management Studio
- 4 第一个查询:
SELECT语句 - 5 数据库和表的创建与管理
-
- 1 数据查询语言
SELECT基础:FROM,WHERE,ORDER BY- 高级查询:
JOIN(内连接、左连接、右连接、全连接) - 聚合函数:
COUNT,SUM,AVG,MAX,MIN - 分组与筛选:
GROUP BY和HAVING
- 2 数据操纵语言
INSERT: 插入数据UPDATE: 更新数据DELETE: 删除数据
- 3 数据定义语言
CREATE TABLE: 创建表ALTER TABLE: 修改表结构DROP TABLE: 删除表
- 4 数据控制语言
GRANT: 授权REVOKE: 撤销权限
- 1 数据查询语言
-
- 1 约束:保证数据完整性
PRIMARY KEY(主键)FOREIGN KEY(外键)UNIQUE(唯一约束)NOT NULL(非空约束)CHECK(检查约束)DEFAULT(默认值)
- 2 索引:提升查询性能
- 什么是索引?
- 聚集索引 vs. 非聚集索引
- 创建和管理索引
- 3 视图:虚拟表
- 创建和使用视图
- 视图的优势
- 4 存储过程:预编译的SQL脚本
- 创建、执行和管理存储过程
- 使用参数
- 5 函数
- 标量值函数
- 表值函数
- 6 触发器:自动化业务逻辑
AFTER和INSTEAD OF触发器- 常见应用场景
- 1 约束:保证数据完整性
-
- 1 数据库设计三大范式
- 2 实体-关系模型
- 3 事务
- ACID 特性
BEGIN TRANSACTION,COMMIT,ROLLBACK- 事务的隔离级别
-
(图片来源网络,侵删)- 1 执行计划:理解查询如何执行
- 2 常见性能问题及优化方法
- 3 T-SQL 编码规范与最佳实践
-
- 1 项目需求:设计一个简单的“在线书店”数据库
- 2 数据库设计
- 3 表结构创建与数据初始化
- 4 核心业务逻辑实现(存储过程与函数)
第一部分:基础入门
1 什么是数据库?为什么用 SQL Server?
- 数据库:长期储存在计算机内、有组织的、可共享的大量数据的集合,它就像一个高度优化的电子表格仓库。
- DBMS (数据库管理系统):用于管理数据库的软件,如 SQL Server, MySQL, Oracle。
- 为什么用 SQL Server:
- 强大的功能:提供从数据存储、处理、分析到商业智能的全套解决方案。
- 与微软生态集成:与 .NET、Visual Studio、Power BI 等产品无缝集成。
- 高可靠性与安全性:提供完善的数据备份、恢复和权限管理机制。
- 广泛的应用:在金融、电商、企业级应用中占据重要地位。
2 SQL Server 体系结构简介
- 关系引擎:负责查询的解析、编译、优化和执行,它决定如何最高效地从存储引擎获取数据。
- 存储引擎:负责数据的物理存储和检索,它管理表、索引、事务和锁。
- T-SQL (Transact-SQL):SQL Server 使用的 SQL 语言,是标准的 SQL 的超集,增加了变量、流程控制、函数等编程特性。
3 环境搭建:安装 SQL Server Management Studio
- 下载 SQL Server:访问 Microsoft SQL Server 评估中心,下载并安装免费的 SQL Server Developer 版本(功能与企业版几乎相同,仅限开发、测试和学习使用)。
- 下载 SSMS:访问 SSMS 下载页面,下载并安装 SQL Server Management Studio (SSMS),这是我们用来连接和管理 SQL Server 数据库的主要图形界面工具。
4 第一个查询:SELECT 语句
SELECT 是最核心的 SQL 语句,用于从数据库中检索数据。
-- 语法结构 SELECT column1, column2, ... FROM table_name; -- 示例:假设我们有一个名为 Employees 的表 -- 查询所有员工的名字和职位 SELECT FirstName, JobTitle FROM Employees; -- 查询所有列 SELECT * FROM Employees;
5 数据库和表的创建与管理
-- 创建一个新数据库
CREATE DATABASE MyOnlineStore;
GO -- GO 表示批处理结束,是 SSMS 中的命令分隔符
-- 使用/切换到这个数据库
USE MyOnlineStore;
GO
-- 创建一个表
CREATE TABLE Products (
ProductID INT PRIMARY KEY, -- 主键
ProductName NVARCHAR(100) NOT NULL, -- 非空
Price DECIMAL(10, 2) CHECK (Price > 0), -- 检查约束
StockQuantity INT DEFAULT 0 -- 默认值
);
GO
第二部分:核心SQL语言
1 数据查询语言
SELECT 基础
-- 从 Products 表中查询所有价格大于 100 的产品,并按价格降序排列 SELECT ProductName, Price FROM Products WHERE Price > 100 ORDER BY Price DESC;
高级查询:JOIN
JOIN 用于基于相关列将两个或多个表的行组合起来。
-- 假设还有一个 Categories 表
CREATE TABLE Categories (
CategoryID INT PRIMARY KEY,
CategoryName NVARCHAR(50)
);
GO
-- 假设 Products 表中有一个 CategoryID 外键
ALTER TABLE Products ADD CategoryID INT;
GO
-- 内连接:只返回两个表中匹配的行
SELECT p.ProductName, c.CategoryName
FROM Products AS p -- 使用 AS 给表起别名
INNER JOIN Categories AS c ON p.CategoryID = c.CategoryID;
-- 左连接:返回左表(Products)的所有行,以及右表中匹配的行,如果右表没有匹配,则为 NULL。
SELECT p.ProductName, c.CategoryName
FROM Products AS p
LEFT JOIN Categories AS c ON p.CategoryID = c.CategoryID;
聚合函数
-- 计算总共有多少个产品 SELECT COUNT(*) AS TotalProducts FROM Products; -- 计算所有产品的总库存价值 SELECT SUM(Price * StockQuantity) AS TotalInventoryValue FROM Products; -- 计算产品的平均价格 SELECT AVG(Price) AS AveragePrice FROM Products; -- 找出最贵的产品价格 SELECT MAX(Price) AS MaxPrice FROM Products; -- 找出最便宜的产品价格 SELECT MIN(Price) AS MinPrice FROM Products;
分组与筛选:GROUP BY 和 HAVING
GROUP BY 将结果集按一个或多个

