SQL Server基础学习笔记
相信很多朋友都看到过类似"SQL Server是关系型数据库管理系统"的介绍,如果你是像我这样喜欢刨根问底的工程师,自然而然会想搞清楚------关系型数据库 到底是什么意思?SQL 又是怎么跟数据库"对话"的?数据类型 、SELECT 、INSERT这些基础操作,背后到底是怎么工作的?它们之间又是什么关系?

想真正上手数据库开发的朋友,都需要通盘搞清这些问题,才能把一个个概念落实到实际代码中,达到融会贯通的水平。做到手中有剑,心里不慌!
这也正是我自己理解SQL Server采用的方式------从工程视角抽丝剥茧,用比喻类比让概念落地。如果你也觉得这是一个不错的方式,那就花20分钟跟着我的思路来试一试吧!现在,先把上面说的典型例子抛出来。
一、引言:SQL Server到底是什么?------一个超级"仓库管理员"
1. SQL Server概述------你的数据"管家"
想象一下,你有一个巨大的仓库,里面堆满了各种各样的货物(数据)。你需要一个超级管理员来帮你:
- 记录每件货物放在哪里
- 快速找到你想要的货物
- 随时添加新货物
- 修改或扔掉旧的货物
- 保证仓库安全,不会着火或被盗
SQL Server ,就是Microsoft公司研发的这样一个"超级仓库管理员"。它是一个关系型数据库管理系统(RDBMS) ------别被这个高大上的名字吓到,简单说就是:用表格的方式来管理数据。
它的核心功能就是存储和检索数据,同时提供了一整套强大的工具,让管理数据库变得更高效,包括:
- 数据模型设计:规划你的"仓库"长什么样
- 数据的导入与导出:搬货进仓、出货
- 事务处理:保证操作要么全部完成,要么全部不做(就像网购付款,要么扣钱成功,要么不扣)
- 数据备份与恢复:给仓库上保险
SQL Server支持使用结构化查询语言(SQL) 进行数据管理。SQL是一种标准化的"通用语言",专门用来跟关系型数据库聊天。你可以通过SQL方便地:
- 创建:建新表格
- 修改:改表格结构
- 查询:找数据
工程视角小贴士 :可以把SQL Server想象成一个智能数据库引擎,它跟Windows系统深度绑定,支持分布式架构(多个电脑一起干活),核心特性包括高性能、系统管理、事务处理,还有自己的SQL语言。很多企业级应用都用它来管理海量数据。
2. SQL Server的发展历程------从"小树苗"到"参天大树"
SQL Server的发展史,就像一棵小树苗慢慢长成参天大树。我们来看看它的关键里程碑:
| 版本 | 年份 | 核心亮点 | 比喻 |
|---|---|---|---|
| SQL Server 1.0 | 1989 | 首个版本,运行在OS/2上,基本功能 | 刚发芽的种子 |
| SQL Server 4.2 | 1992 | 首次在Windows NT上运行,加入存储过程、触发器 | 长出第一片叶子 |
| SQL Server 6.0 | 1995 | 引入OLAP、复制、数据仓库 | 开始分叉长枝 |
| SQL Server 7.0 | 1998 | 重大更新,数据仓库、数据转换服务、分析服务 | 茁壮成长 |
| SQL Server 2000 | 2000 | 支持XML、分区表、报告服务 | 开花了 |
| SQL Server 2005 | 2005 | CLR集成、XML数据类型、窗口函数 | 枝繁叶茂 |
| SQL Server 2008 | 2008 | 空间数据、压缩、透明数据加密 | 更加结实 |
| SQL Server 2012 | 2012 | AlwaysOn可用性组、列存储索引 | 长出"超能力" |
| SQL Server 2014 | 2014 | 内存优化表、缓存列存储索引 | 速度更快 |
| SQL Server 2016 | 2016 | 支持R语言、动态数据掩码、JSON | 更智能 |
| SQL Server 2017 | 2017 | 首次支持Linux!图数据库 | 跨平台了 |
| SQL Server 2019 | 2019 | 大数据虚拟化、加密扩展 | 走向云端 |
每个版本都带来新功能,让SQL Server变得更强大、更灵活。
3. SQL Server的应用领域------它能在哪些地方"大显身手"?
SQL Server的应用场景非常广泛,就像一把"瑞士军刀",什么都能干:
-
企业应用程序:作为企业系统的"数据库后盾",存储和管理公司数据。比如:
- 内部管理系统
- 客户关系管理(CRM)系统
- 企业资源规划(ERP)系统
-
网站和网络应用:很多网站的后台数据库就是SQL Server。它存储用户数据、内容数据、交易数据,提供高可用性、高性能和安全性。
-
商业智能与数据分析:SQL Server有丰富的商业智能(BI)功能,包括:
- 数据仓库(存历史数据)
- 数据挖掘(找规律)
- 报表和分析服务(做图表)
-
大数据与分布式计算:SQL Server 2019支持大规模数据虚拟化,可以跟Azure数据湖等服务集成,处理海量数据。
-
云计算与混合云环境:提供Azure SQL数据库等云服务,可以在云端快速部署,也支持混合云(本地+云端)。
-
移动应用程序:作为移动应用的后端数据库,存储用户数据、地理位置数据等,可以跟Xamarin等框架集成。
互动提问:你猜猜,你现在用的某个App,后台是不是就用了SQL Server?🤔

二、SQL基础------跟数据库对话的"语法"
1. SQL Server数据类型------给数据"贴标签"
在数据库中,每种数据都需要一个"标签",告诉数据库它是什么类型。就像整理仓库时,你需要区分"箱子"、"瓶子"、"文件"一样。
整数类型------存"整的"
| 类型 | 大小 | 范围 | 比喻 |
|---|---|---|---|
| INT | 4字节 | -2^31 ~ 2^31-1 | 普通整数 |
| BIGINT | 8字节 | -2^63 ~ 2^63-1 | 超大整数 |
| TINYINT | 1字节 | 0 ~ 255 | 小整数 |
| SMALLINT | 2字节 | -32768 ~ 32767 | 中等整数 |
小数与浮点类型------存"带小数"的
- DECIMAL / NUMERIC:定点小数,精度高,适合存钱(比如金额)
- FLOAT:浮点数,精度稍低,但范围大
日期与时间类型------存"时间"
| 类型 | 精度 | 比喻 |
|---|---|---|
| DATE | 年月日 | 日历上的日期 |
| TIME | 时分秒 | 钟表上的时间 |
| DATETIME | 年月日时分秒 | 完整时间戳 |
| DATETIME2 | 更高精度(最多7位小数) | 超级精确的时间 |
| SMALLDATETIME | 精度较低,范围小 | 简单时间 |
字符串类型------存"文字"
| 类型 | 特点 | 比喻 |
|---|---|---|
| CHAR(n) | 固定长度,最多n个字符 | 固定大小的"盒子" |
| VARCHAR(n) | 可变长度,最多n个字符 | 能伸缩的"袋子" |
| NCHAR(n) | Unicode固定长度 | 支持多国语言的盒子 |
| NVARCHAR(n) | Unicode可变长度 | 支持多国语言的袋子 |
| TEXT | 大文本,最多2GB | 超级大箱子 |
其他类型
| 类型 | 用途 |
|---|---|
| BIT | 存0或1(开关) |
| UNIQUEIDENTIFIER | 存全局唯一ID(GUID) |
| BINARY(n) | 存固定长度的二进制数据 |
| VARBINARY(n) | 存可变长度的二进制数据 |
工程视角:选择数据类型就像选容器,选对了,存储高效、查询快;选错了,要么浪费空间,要么数据存不进去。
2. SQL Server SELECT语句------从仓库里"拿东西"
SELECT 是SQL里最常用的语句,它的作用就是从数据库表中提取数据。就像你去仓库,告诉管理员:"我要拿这些货。"
基本语法:
sql
SELECT 列名1, 列名2, ...
FROM 表名;
举个例子:
假设有一个叫Customers的表,里面存着客户信息,包括CustomerID、FirstName、LastName、City。
取所有数据:
sql
SELECT *
FROM Customers;
这里的*是通配符,意思是"所有列"。
取部分列:
sql
SELECT CustomerID, FirstName, LastName
FROM Customers;
加条件过滤:
sql
SELECT *
FROM Customers
WHERE City = 'New York';
WHERE子句就像给管理员下指令:"我只想要住在纽约的客户。"
互动提问 :如果我只想查
CustomerID为1的客户,SQL该怎么写?试试看!👇
3. SQL Server INSERT语句------往仓库里"加货"
INSERT 用来向表中添加新行。就像往仓库里搬进新货物。
基本语法:
sql
INSERT INTO 表名 (列1, 列2, 列3, ...)
VALUES (值1, 值2, 值3, ...);
添加单行数据:
sql
INSERT INTO Customers (CustomerID, FirstName, LastName, City)
VALUES (1, 'John', 'Doe', 'New York');
这会在Customers表中插入一行:CustomerID=1,FirstName='John',LastName='Doe',City='New York'。
添加多行数据:
sql
INSERT INTO Customers (CustomerID, FirstName, LastName, City)
VALUES (2, 'Jane', 'Smith', 'Los Angeles'),
(3, 'Alice', 'Johnson', 'Chicago');
从其他表复制数据:
sql
INSERT INTO Customers (CustomerID, FirstName, LastName, City)
SELECT CustomerID, FirstName, LastName, City
FROM OtherTable
WHERE Condition;
这就像从另一个仓库批量搬货过来。
注意 :插入数据时,必须提供所有非空列的值,或者这些列有默认值。否则操作会失败。
4. SQL Server UPDATE语句------修改仓库里的"货物"
UPDATE 用来修改表中已存在的行。就像给仓库里的货物换标签或改位置。
基本语法:
sql
UPDATE 表名
SET 列1 = 值1, 列2 = 值2, ...
WHERE 条件;
修改单列:
sql
UPDATE Customers
SET City = 'Los Angeles'
WHERE CustomerID = 1;
把CustomerID为1的客户的City改为'Los Angeles'。
修改多列:
sql
UPDATE Customers
SET City = 'Los Angeles', FirstName = 'Jane'
WHERE CustomerID = 2;
⚠️ 危险操作:不加WHERE条件
sql
UPDATE Customers
SET City = 'New York';
这会把所有客户的城市都改成New York !就像把仓库里所有货物的标签都撕掉重贴。所以一定要加WHERE条件,除非你真的想全部修改。
5. SQL Server DELETE语句------从仓库里"扔掉货物"
DELETE 用来从表中删除行。就像把不需要的货物从仓库里扔掉。
基本语法:
sql
DELETE FROM 表名
WHERE 条件;
删除指定行:
sql
DELETE FROM Customers
WHERE CustomerID = 1;
删除CustomerID为1的客户。
⚠️ 危险操作:删除所有行
sql
DELETE FROM Customers;
这会删除表中所有数据 !就像把整个仓库清空。所以务必谨慎,确保WHERE条件正确。
工程视角小贴士 :在实际开发中,DELETE操作前最好先备份数据,或者用
SELECT先查一下要删除的数据,确认无误后再执行DELETE。
🧨🧨🧨 让我们一起在技术的海洋中探索前行,共同书写美好的未来!你现在已经掌握了SQL Server的基础概念和核心操作,下一步就可以尝试自己写SQL语句了。记住:实践是最好的老师,打开SQL Server Management Studio,动手试试吧!🚀
学SQL,光看不动手可不行,练才是王道!
全套SQL学习资源:资料+练习+视频,一步到位!强烈安利这个自学网站👉🏻 SQL自学网 http://xuesql.cn
入门首选,零基础也能轻松上手:https://www.w3schools.com