SQL Server基础学习

目录

一、SQL Server基础概念

1. 数据库与SQL Server

2. SQL语言

3. SQL Server组件

二、环境搭建

1. 安装SQL Server

2. 安装SSMS

三、核心操作详解

1. 数据库操作

2. 表操作

3. 数据操作

4. 高级功能

四、案例:学生管理系统

1. 需求分析

2. 数据库设计

3. 实现步骤

五、学习资源推荐

1. 官方文档

2. 在线课程

3. 书籍

4. 实践平台

六、学习建议


一、SQL Server基础概念

1. 数据库与SQL Server
  • 数据库(Database):存储数据的仓库,以结构化方式组织数据(如表格、字段、记录)。
  • SQL Server:由微软开发的关系型数据库管理系统(RDBMS),支持事务处理、商业智能、数据分析等功能。
2. SQL语言
  • 定义:结构化查询语言(Structured Query Language),用于操作关系型数据库。
  • 核心分类
    • DDL(数据定义语言):定义数据库结构(如CREATEALTERDROP)。
    • DML(数据操作语言):操作数据(如SELECTINSERTUPDATEDELETE)。
    • DCL(数据控制语言):管理权限(如GRANTREVOKE)。
    • TCL(事务控制语言):管理事务(如COMMITROLLBACK)。
3. SQL Server组件
  • 数据库引擎:核心服务,负责存储、处理数据。
  • SSMS(SQL Server Management Studio):图形化管理工具,用于编写查询、管理数据库。
  • SQL Server Agent:自动化任务调度工具(如备份、ETL)。
  • Integration Services (SSIS):数据集成工具,支持ETL(抽取、转换、加载)。
  • Analysis Services (SSAS):用于构建数据模型,支持OLAP(联机分析处理)。
  • Reporting Services (SSRS):报表生成工具,支持动态报表。

二、环境搭建

1. 安装SQL Server
  • 版本选择
    • Developer Edition:免费,适合学习/开发,功能与企业版一致。
    • Express Edition:轻量级免费版,适合小型应用。
  • 安装步骤
    1. 下载安装包:Microsoft SQL Server 下载页面
    2. 运行安装程序,选择“基本”或“自定义”安装。
    3. 配置实例名称、身份验证模式(建议选择“混合模式”并设置SA密码)。
    4. 完成安装后,通过SSMS连接。
2. 安装SSMS
  • 下载地址SQL Server Management Studio (SSMS)
  • 功能
    • 编写和执行SQL查询。
    • 管理数据库、表、视图、存储过程等对象。
    • 监控服务器状态、调试代码。

三、核心操作详解

1. 数据库操作
  • 创建数据库
CREATE DATABASE SchoolDB
ON PRIMARY 
(
  NAME = 'SchoolDB_Data',
  FILENAME = 'D:\Data\SchoolDB.mdf',
  SIZE = 10MB,
  MAXSIZE = UNLIMITED,
  FILEGROWTH = 5%
)
LOG ON 
(
  NAME = 'SchoolDB_Log',
  FILENAME = 'D:\Data\SchoolDB.ldf',
  SIZE = 5MB,
  MAXSIZE = 1GB,
  FILEGROWTH = 1MB
);

  • 删除数据库
DROP DATABASE SchoolDB;

  • 备份与恢复
-- 完整备份
BACKUP DATABASE SchoolDB TO DISK = 'D:\Backup\SchoolDB_Full.bak';
-- 差异备份
BACKUP DATABASE SchoolDB TO DISK = 'D:\Backup\SchoolDB_Diff.bak' WITH DIFFERENTIAL;
-- 恢复备份
RESTORE DATABASE SchoolDB FROM DISK = 'D:\Backup\SchoolDB_Full.bak' WITH REPLACE;

    2. 表操作
    • 创建表
      CREATE TABLE Students (
        StudentID INT PRIMARY KEY IDENTITY(1,1), -- 自增主键
        Name NVARCHAR(50) NOT NULL,
        Age INT CHECK (Age >= 18),              -- 检查约束
        EnrollmentDate DATE DEFAULT GETDATE(),  -- 默认值
        MajorID INT FOREIGN KEY REFERENCES Majors(MajorID) -- 外键约束
      );
       
    • 修改表结构
    ALTER TABLE Students ADD Email NVARCHAR(100); -- 添加列
    ALTER TABLE Students ALTER COLUMN Email NVARCHAR(200); -- 修改列类型
    ALTER TABLE Students DROP COLUMN Email; -- 删除列

    • 删除表
    DROP TABLE Students;
    

      3. 数据操作
      • 插入数据
      INSERT INTO Students (Name, Age, MajorID) 
      VALUES ('张三', 20, 1),
             ('李四', 22, 2);

      • 查询数据
      SELECT Name, Age 
      FROM Students 
      WHERE Age > 18
      ORDER BY EnrollmentDate DESC;
      

      • 更新数据
      UPDATE Students 
      SET Age = 21 
      WHERE StudentID = 1;
      

      • 删除数据
      DELETE FROM Students 
      WHERE StudentID = 1;
      

      4. 高级功能
      • 索引
      CREATE INDEX idx_name ON Students(Name); -- 创建索引
      DROP INDEX idx_name ON Students; -- 删除索引
       
      
      • 视图

      CREATE VIEW StudentView 
      AS 
      SELECT Name, Age, MajorName 
      FROM Students s
      JOIN Majors m ON s.MajorID = m.MajorID;
      

      • 存储过程
      CREATE PROCEDURE GetStudentsByAge 
        @MinAge INT, 
        @MaxAge INT 
      AS
      BEGIN
        SELECT * FROM Students 
        WHERE Age BETWEEN @MinAge AND @MaxAge;
      END;
      -- 调用存储过程
      EXEC GetStudentsByAge @MinAge = 18, @MaxAge = 25;
      

      • 触发器

      CREATE TRIGGER trg_UpdateStudent
      ON Students
      AFTER UPDATE
      AS
      BEGIN
        IF UPDATE(Age)
        BEGIN
          PRINT '年龄字段已被更新!';
        END
      END;
       
      

      四、案例:学生管理系统

      1. 需求分析
      • 管理学生信息(学号、姓名、年龄、专业)。
      • 支持增删改查操作。
      • 统计各专业学生人数。
      • 记录学生选课信息。
      2. 数据库设计
      • 表结构
        • Students(学生表):StudentIDNameAgeMajorIDEnrollmentDate
        • Majors(专业表):MajorIDMajorName
        • Courses(课程表):CourseIDCourseNameCredit
        • StudentCourses(选课表):StudentIDCourseIDGrade
      3. 实现步骤
      • 创建数据库和表

      --创建数据库
      CREATE DATABASE SchoolDB;
      USE SchoolDB;
      CREATE TABLE Majors (MajorID INT PRIMARY KEY, MajorName NVARCHAR(50));
      CREATE TABLE Students (
        StudentID INT PRIMARY KEY,
        Name NVARCHAR(50),
        Age INT,
        MajorID INT FOREIGN KEY REFERENCES Majors(MajorID)
      );
      -- 插入测试数据
      INSERT INTO Majors VALUES (1, '计算机科学'), (2, '数学');
      INSERT INTO Students VALUES (1, '张三', 20, 1), (2, '李四', 22, 2);
       
      
      • 查询操作

      -- 查询计算机专业学生
      SELECT s.Name, s.Age 
      FROM Students s
      JOIN Majors m ON s.MajorID = m.MajorID
      WHERE m.MajorName = '计算机科学';
      -- 统计各专业人数
      SELECT m.MajorName, COUNT(*) AS StudentCount
      FROM Students s
      JOIN Majors m ON s.MajorID = m.MajorID
      GROUP BY m.MajorName;

      • 存储过程

      CREATE PROCEDURE AddStudent
        @Name NVARCHAR(50),
        @Age INT,
        @MajorID INT
      AS
      BEGIN
        INSERT INTO Students (Name, Age, MajorID)
        VALUES (@Name, @Age, @MajorID);
      END;


      五、学习资源推荐

      1. 官方文档
      2. 在线课程
      3. 书籍
      • 《SQL Server 2019 入门经典》(Ben-Gan Itzik 著):适合初学者,覆盖基础到高级主题。
      • 《高性能SQL Server:核心优化技术大揭秘》(Grant Fritchey 著):深入讲解索引、查询优化等。
      4. 实践平台

      六、学习建议

      1. 动手实践
        • 每天编写T-SQL语句,从简单查询到复杂存储过程逐步进阶。
        • 使用SSMS的查询编辑器调试代码,观察执行计划。
      2. 结合项目
        • 尝试用SQL Server实现一个完整的小型项目(如博客系统、电商订单管理)。
        • 参与开源项目或企业实习,积累实战经验。
      3. 深入原理
        • 学习事务隔离级别、锁机制、执行计划优化等高级主题。
        • 阅读《SQL Server 2019 Internals》(Kalen Delaney 著)了解底层机制。
      4. 关注社区

      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

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

      抵扣说明:

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

      余额充值