## SQL Server 基础学习笔记
### 1. SQL Server 概述
SQL Server 是 Microsoft 开发的关系数据库管理系统(RDBMS)。它支持 SQL 语言,并提供了数据存储、查询、更新和管理等功能。
### 2. 安装与配置
- **下载与安装**:从 Microsoft 官方网站下载 SQL Server 安装包并安装。
- **配置管理器**:使用 SQL Server 配置管理器来管理 SQL Server 服务、网络配置等。
### 3. 基本概念
- **数据库**:存储数据的容器,包含表、视图、存储过程等对象。
- **表**:存储数据的基本单位,由行和列组成。
- **视图**:基于表的虚拟表,不存储数据,仅存储查询逻辑。
- **存储过程**:一组预编译的 SQL 语句,用于完成特定任务。
- **触发器**:自动执行的存储过程,当特定事件发生时触发执行。
### 4. 基本操作
- **创建数据库**:
```sql
CREATE DATABASE MyDatabase;
```
- **创建表**:
```sql
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
FirstName NVARCHAR(50),
LastName NVARCHAR(50),
BirthDate DATE
);
```
- **插入数据**:
```sql
INSERT INTO Employees (EmployeeID, FirstName, LastName, BirthDate)
VALUES (1, 'John', 'Doe', '1980-01-01');
```
- **查询数据**:
```sql
SELECT * FROM Employees;
```
- **更新数据**:
```sql
UPDATE Employees
SET FirstName = 'Jane'
WHERE EmployeeID = 1;
```
- **删除数据**:
```sql
DELETE FROM Employees
WHERE EmployeeID = 1;
```
### 5. 常用函数
- **聚合函数**:`SUM()`, `AVG()`, `COUNT()`, `MAX()`, `MIN()`
```sql
SELECT COUNT(*) FROM Employees;
```
- **字符串函数**:`LEN()`, `SUBSTRING()`, `REPLACE()`
```sql
SELECT LEN(FirstName) FROM Employees;
```
- **日期函数**:`GETDATE()`, `DATEADD()`, `DATEDIFF()`
```sql
SELECT GETDATE();
```
### 6. 索引
- **创建索引**:提高查询性能
```sql
CREATE INDEX idx_lastname ON Employees (LastName);
```
- **删除索引**:
```sql
DROP INDEX idx_lastname ON Employees;
```
### 7. 视图
- **创建视图**:
```sql
CREATE VIEW EmployeeNames AS
SELECT FirstName, LastName FROM Employees;
```
- **查询视图**:
```sql
SELECT * FROM EmployeeNames;
```
### 8. 存储过程
- **创建存储过程**:
```sql
CREATE PROCEDURE GetEmployeeByID
@EmployeeID INT
AS
BEGIN
SELECT * FROM Employees WHERE EmployeeID = @EmployeeID;
END;
```
- **执行存储过程**:
```sql
EXEC GetEmployeeByID @EmployeeID = 1;
```
### 9. 触发器
- **创建触发器**:
```sql
CREATE TRIGGER trgAfterInsert
ON Employees
AFTER INSERT
AS
BEGIN
PRINT 'A new row has been inserted.';
END;
```
### 10. 事务管理
- **事务控制**:`BEGIN TRANSACTION`, `COMMIT`, `ROLLBACK`
```sql
BEGIN TRANSACTION;
UPDATE Employees SET FirstName = 'John' WHERE EmployeeID = 1;
COMMIT;
```
### 11. 安全管理
- **用户和权限**:
```sql
CREATE LOGIN MyLogin WITH PASSWORD = 'MyPassword';
CREATE USER MyUser FOR LOGIN MyLogin;
GRANT SELECT ON Employees TO MyUser;
```
### 12. 性能优化
- **查询优化**:使用索引、避免不必要的列和表扫描、优化 SQL 语句。
- **数据库维护**:定期重建索引、更新统计信息、备份和恢复。
### 参考资料
- [Microsoft SQL Server 官方文档](https://docs.microsoft.com/en-us/sql/sql-server)
- 《SQL Server 2019 Internals and Architecture》 - Dmitri Korotkevitch
以上是 SQL Server 基础学习的一个简要笔记,希望对你学习 SQL Server 有所帮助。