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

想真正上手数据库开发的朋友,都需要通盘搞清这些问题,才能把一个个概念落实到实际代码中,达到融会贯通的水平。做到手中有剑,心里不慌!
这也正是我自己理解SQL Server采用的方式—— 从工程视角抽丝剥茧,用比喻类比让概念落地。如果你也觉得这是一个不错的方式,那就花20分钟跟着我的思路来试一试吧!现在,先把上面说的典型例子抛出来。
想象一下,你有一个巨大的仓库,里面堆满了各种各样的货物(数据)。你需要一个 超级管理员来帮你:
SQL Server,就是Microsoft公司研发的这样一个“超级仓库管理员”。它是一个 关系型数据库管理系统(RDBMS)——别被这个高大上的名字吓到,简单说就是: 用表格的方式来管理数据。
它的核心功能就是 存储和检索数据,同时提供了一整套强大的工具,让管理数据库变得更高效,包括:
SQL Server支持使用 结构化查询语言(SQL) 进行数据管理。SQL是一种标准化的“通用语言”,专门用来跟关系型数据库聊天。你可以通过SQL方便地:
工程视角小贴士:可以把SQL Server想象成一个 智能数据库引擎,它跟Windows系统深度绑定,支持分布式架构(多个电脑一起干活),核心特性包括高性能、系统管理、事务处理,还有自己的SQL语言。很多企业级应用都用它来管理海量数据。
SQL Server的发展史,就像一棵小树苗慢慢长成参天大树。我们来看看它的关键里程碑:
| 版本 | 年份 | 核心亮点 | 比喻 |
|---|---|---|---|
| SQL Server 1.0 | 1989 | first版本,运行在OS/2上,基本功能 | 刚发芽的种子 |
| SQL Server 4.2 | 1992 | first在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 | first支持Linux!图数据库 | 跨平台了 |
| SQL Server 2019 | 2019 | 大数据虚拟化、加密扩展 | 走向云端 |
每个版本都带来新功能,让SQL Server变得更强大、更灵活。
SQL Server的应用场景非常广泛,就像一把“瑞士knife”,什么都能干:
互动提问:你猜猜,你现在用的某个App,后台是不是就用了SQL Server?🤔

在数据库中,每种数据都需要一个“标签”,告诉数据库它是什么类型。就像整理仓库时,你需要区分“箱子”、“瓶子”、“文件”一样。
| 类型 | 大小 | 范围 | 比喻 |
|---|---|---|---|
| INT | 4字节 | -2^31 ~ 2^31-1 | 普通整数 |
| BIGINT | 8字节 | -2^63 ~ 2^63-1 | 超大整数 |
| TINYINT | 1字节 | 0 ~ 255 | 小整数 |
| SMALLINT | 2字节 | -32768 ~ 32767 | 中等整数 |
| 类型 | 精度 | 比喻 |
|---|---|---|
| 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) | 存可变长度的二进制数据 |
工程视角:选择数据类型就像选容器,选对了,存储高效、查询快;选错了,要么浪费空间,要么数据存不进去。
SELECT是SQL里最常用的语句,它的作用就是 从数据库表中提取数据。就像你去仓库,告诉管理员:“我要拿这些货。”
基本语法:
SELECT 列名1, 列名2, ... FROM 表名;
举个例子: 假设有一个叫
Customers的表,里面存着客户信息,包括
CustomerID、
FirstName、
LastName、
City。
取所有数据:
SELECT * FROM Customers;
这里的
*是通配符,意思是“所有列”。
取部分列:
SELECT CustomerID, FirstName, LastName FROM Customers;
加条件过滤:
SELECT * FROM Customers WHERE City = 'New York';
WHERE子句就像给管理员下指令:“我只想要住在纽约的客户。”
互动提问:如果我只想查
CustomerID为1的客户,SQL该怎么写?试试看!👇
INSERT用来 向表中添加新行。就像往仓库里搬进新货物。
基本语法:
INSERT INTO 表名 (列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...);
添加单行数据:
INSERT INTO Customers (CustomerID, FirstName, LastName, City) VALUES (1, 'John', 'Doe', 'New York');
这会在
Customers表中插入一行:CustomerID=1,FirstName='John',LastName='Doe',City='New York'。
添加多行数据:
INSERT INTO Customers (CustomerID, FirstName, LastName, City) VALUES (2, 'Jane', 'Smith', 'Los Angeles'), (3, 'Alice', 'Johnson', 'Chicago');
从其他表复制数据:
INSERT INTO Customers (CustomerID, FirstName, LastName, City) SELECT CustomerID, FirstName, LastName, City FROM OtherTable WHERE Condition;
这就像从另一个仓库批量搬货过来。
注意:插入数据时,必须提供所有 非空列的值,或者这些列有默认值。否则操作会失败。
UPDATE用来 修改表中已存在的行。就像给仓库里的货物换标签或改位置。
基本语法:
UPDATE 表名 SET 列1 = 值1, 列2 = 值2, ... WHERE 条件;
修改单列:
UPDATE Customers SET City = 'Los Angeles' WHERE CustomerID = 1;
把CustomerID为1的客户的City改为'Los Angeles'。
修改多列:
UPDATE Customers SET City = 'Los Angeles', FirstName = 'Jane' WHERE CustomerID = 2;
⚠️ 危险操作:不加WHERE条件
UPDATE Customers SET City = 'New York';
这会 把所有客户的城市都改成New York!就像把仓库里所有货物的标签都撕掉重贴。所以 一定要加WHERE条件,除非你真的想全部修改。
DELETE用来 从表中删除行。就像把不需要的货物从仓库里扔掉。
基本语法:
DELETE FROM 表名 WHERE 条件;
删除指定行:
DELETE FROM Customers WHERE CustomerID = 1;
删除CustomerID为1的客户。
⚠️ 危险操作:删除所有行
DELETE FROM Customers;
这会 删除表中所有数据!就像把整个仓库清空。所以 务必谨慎,确保WHERE条件正确。
工程视角小贴士:在实际开发中,DELETE操作前最好先备份数据,或者用
SELECT先查一下要删除的数据,确认无误后再执行DELETE。
🧨🧨🧨 让我们一起在技术的海洋中探索前行,共同书写美好的未来!你现在已经掌握了SQL Server的基础概念和核心操作,下一步就可以尝试自己写SQL语句了。记住: 实践是最好的老师,打开SQL Server Management Studio,动手试试吧!🚀
学SQL,光看不动手可不行,练才是王道!
全套SQL学习资源:资料+练习+视频,一步到位!强烈安利这个自学网站👉🏻 SQL自学网 http://xuesql.cn 入门首选,零基础也能轻松上手: https://www.w3schools.com
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70049428/viewspace-3175953/ ,如需转载,请注明出处,否则将追究法律责任。