SQL Server数据库与C# ADO.NET数据库编程

发布时间:2026/8/25 19:05:32

SQL Server数据库与C# ADO.NET数据库编程
本周学习总结SQL Server 数据库与 C# ADO.NET 数据库编程学习学习周期本周学习方向关系型数据库基础、T‑SQL 语法、约束、CRUD、高级查询、多表联查、事务变量、C# ADO.NET 数据库访问编程一、本周学习概述本周主要完成SQL Server关系型数据库系统学习从数据库分类、数据库安装基础到T‑SQL完整语法覆盖库、表、约束、增删改查基础CRUD、聚合函数、分页、子查询、多表联查、事务、局部变量最后延伸到C#语言通过ADO.NET实现程序和SQL Server数据库交互。数据库是绝大多数业务系统的数据底层支撑不管是桌面程序、Web项目数据持久化都离不开数据库存储。本次学习重点掌握SQL语句编写逻辑理解表与表之间的关系同时掌握C#程序连接数据库完成数据读写的完整流程为后续WinForm项目、业务系统开发打下基础。本周学习内容量较大知识点分为两大块第一块是数据库理论与T‑SQL脚本编写第二块是C# ADO.NET编程把程序和数据库打通。学习过程中也遇到语法细节、约束含义、多表联查区分内外连接、事务回滚逻辑、数据库连接对象使用等难点通过手写SQL脚本、敲示例代码理清每一条语句执行含义。二、数据库基础认知2.1 常见数据库分类数据库可以理解为专门用来存储、管理数据的软件不同场景选用不同数据库各自优缺点差异明显。MySQL大型开源关系数据库多用于大型 APP、Web 大型程序开源免费互联网项目使用非常广泛。SQL Server微软推出的关系型数据库和 C# 语言适配度极高适合 Windows 平台企业项目、VS 开发环境。部分版本付费也提供免费学习版本。安装为傻瓜式向导安装但步骤不能随意跳过一旦安装出错卸载修复比较麻烦。数据库备份还原时如果出现权限报错可以在文件属性安全选项中添加everyone对象开放访问权限解决还原失败问题。SQLite轻量级小型数据库适合小型APP、单机小程序不需要独立服务进程。但是支持SQL语法不完整数据处理效率一般适合数据量不大的单机软件。MongoDB网络分布式非关系数据库文档型数据库适合海量分布式数据存储场景。本次课程重点学习SQL Server熟悉T‑SQL语法T‑SQL是SQL Server扩展的结构化查询语言可以完成建库建表、数据操作、业务逻辑编写。2.2 SQL Server 常用数据类型在建表的时候需要为每一列指定数据类型约束存入数据格式。varchar(n)字符串类型n 代表字符串允许最大长度存储文本。datetime完整日期时间类型同时保存年月日时分秒。date仅保存日期不保存时分秒。float浮点小数类型保存小数数值。bit位类型SQL Server 没有 bool 布尔类型业务中使用 bit 替代布尔取值 0 或者 1。2.3 数据库约束约束的作用是保证表中数据的合法性防止脏数据存入数据表。主键约束 Primary Key主键用来唯一标识一行记录主键字段不允许为空、不允许重复常常搭配identity(起始值,步长)实现自增新增数据不需要手动传入主键值数据库自动生成编号。唯一约束 Unique字段内容不能重复但是允许为空适合手机号、身份证这类业务唯一字段。CHECK 约束自定义校验规则例如校验身份证长度必须等于18位不符合规则的数据无法插入。主外键约束实现多张数据表之间关联关系保证关联数据完整性。三、T‑SQL基础语法学习T‑SQL 操作层级操作数据库库→操作数据表表→操作表内数据CRUD。3.1 数据库操作创建数据库可以自定义数据文件存放路径、初始大小、最大容量、文件增长大小。CreateDatabaseTest02onprimary(nameTest02,filenameD:\Test02.mdf,size5MB,maxsize1000MB,filegrowth1mb)使用指定数据库use Test02切换当前操作数据库后续建表写表操作都作用于该库。 删除数据库drop database Test02删除数据库风险极高实际开发禁止随意执行。### 3.2 数据表操作删除表drop table Student直接删除整张数据表表结构和数据全部消失。 创建表定义列名、数据类型、是否为空、主键自增约束。sqlcreatetableStudent(IdintNOTNULLidentity(1,1)primarykey,Namevarchar(50)NULL)修改表AltertableStudent用于后续新增列、删除列、修改列属性。 添加约束使用altertable给已有表追加约束。sql--添加唯一约束ALTERTABLEStudentADDCONSTRAINTUCUNIQUE(CardNo)--添加check校验约束ALTERTABLEStudentADDCONSTRAINTCKCheck(len(CardNo)18)3.3CRUD 增删改查 CRUD 代表数据新增Create、查询Read、修改Update、删除Delete是数据库最核心四大操作。 新增Insert主键设置自增时insert语句不需要书写主键字段数据库自动生成 id。 全字段插入sqlinsertintoStudentvalues(张三)一次性插入多条记录sqlinsertintoStudentvalues(李四),(王五)指定部分字段插入只给部分列赋值sqlinsertintoStudent(Name)values(赵六)删除Delete/Truncatedelete按条件删除行数据sqldeleteStudentwhereId6不带where条件会删除整张表全部数据但不会重置自增计数器。sqldeletefromStudentTruncateTABLE清空整张表全部数据并且重置自增标识回到初始值执行速度快。sqlTRUNCATETABLEEmployee;注意生产环境删除语句务必携带where条件避免误删整张表业务数据。 修改Updateupdate修改表数据必须带上where条件否则会修改表里面全部行。sqlupdateStudentsetName新名字whereid5查询Select查询是业务中使用频率最高的语句用来读取数据表数据。 查询全部列select*fromStudent*代表返回表所有字段。 指定需要返回的字段selectId,NamefromStudent减少不必要字段提升查询性能。 字段别名as修改返回结果列名sqlselectNameas学生姓名,Idas编号fromStudent 额外构造虚拟列可以拼接固定文本作为返回列。sqlselect*,在读as状态fromStudentwhere条件筛选数据支持多条件and、orsqlselect*fromStudentwhereid%2!0andName张三模糊查询like通配符%匹配任意字符%内容%字段任意位置包含该内容 内容%字段以内容开头%内容字段以内容结尾sqlselect*fromStudentwhereNamelike%张%排序orderbyasc升序默认desc降序sqlselect*fromStudentorderbyIddesc类型转换convert函数时间格式转换120代表标准时间格式sqlselectCONVERT(varchar(50),getdate(),120)fromStudent3.4聚合函数 聚合函数做统计计算统计行数、最大最小、求和聚合函数直接返回统计结果不能和普通字段随意混用。 count 统计行数count(0)性能优于count(*)sqlselectcount(0)fromStudent max 最大值、min 最小值sqlselectmax(Id),min(Id)fromStudent sum 求和selectsum(Id)fromStudentbetween…and数值区间筛选select*fromStudentwhereIdbetween1and103.5in子查询 当条件很多写多个or比较繁琐使用in匹配括号内任意值notin匹配不在集合中的数据。sqlselect*fromStudentwhereIdin(1,3,5,7)in还支持嵌套子查询括号内部可以写一条select查询语句。3.6分页实现原理 早期SQLServer 版本没有内置分页关键字使用top关键字完成分页逻辑。 假设每页20条获取第2页数据排除前20条再取后面20条。sqlselecttop20*fromStudentwhereIdnotin(selecttop20IdfromStudent)分页本质就是跳过前面 N 条读取 M 条数据业务系统列表页面离不开分页查询。 四、多表联查 真实业务系统不会把全部数据存放在一张表里会拆分多张数据表表和表依靠关联字段建立关系需要多表联查同时取出多张表的数据。4.1内连接innerjoin内连接只返回两张表能够匹配成功的数据两边匹配不到的数据不会出现在结果集。 隐式内连接写法sqlselect*fromStudent,ClasswhereStudent.ClassIdClass.Id 标准innerjoin写法sqlselect*fromStudentinnerjoinClassonStudent.ClassIdClass.Id4.2左外联leftjoin以左边表作为主表左边表所有记录全部查询出来右表匹配不到数据右边字段填充null。适合场景查询全部学生同时关联班级部分学生没有分配班级也要显示学生信息。sqlselect*fromStudentleftjoinClassonStudent.ClassIdClass.Id 右外联rightjoin逻辑相反以右边表为主表。4.3多张表连续联查 业务复杂时可以连续多次leftjoin关联第三张、第四张表。sqlselect*fromStudentleftjoinClassonStudent.ClassIdClass.IdleftjoinScoreonStudent.IdScore.StuIdwhere114.4交叉连接crossjoin生成笛卡尔积第一张表行数 × 第二张表行数一般业务极少使用。sqlselect*fromStudentcrossjoinClass4.5全连接fulljoin返回左右表全部数据两边匹配不上的数据保留业务场景使用较少。 五、子查询、分组、事务、局部变量5.1子查询 子查询把一条select查询语句嵌套在另一条SQL当中当做条件使用。in子查询括号内查询返回一组集合。条件子查询括号内部查询只能返回单行单列一个值用来做等值判断。sqlselect*fromStudentwhereId(selectmax(Id)fromStudent)5.2groupby分组 分组统计数据分组规则查询列要么是分组字段要么是聚合函数不能写普通非聚合非分组字段。常用于统计每个班级人数、每个分类总数量等统计需求。5.3事务 事务核心思想一组数据库操作要么全部执行成功要么全部失败回滚防止一部分SQL执行成功一部分失败造成数据错乱。 典型场景转账扣钱和加钱必须同时成功。 T‑SQL事务关键字begintran开启事务committran提交事务把修改真正写入数据库rollbacktran回滚事务撤销全部修改 ERROR系统变量捕获上一条语句错误编号大于0代表发生错误。 基础事务伪代码逻辑sqldeclareerrintbegintran--多条数据库操作语句写在这里seterrERRORif(err0)beginrollbacktranendelsebegincommittranend5.4局部变量 T‑SQL支持声明局部变量变量名称必须开头指定数据类型可以赋值打印输出。sql--声明变量declarenumint100declarenamevarchar(20)--set赋值setname小明--打印输出printname有convert(varchar(20),num)块也可以使用select完成变量赋值。 六、C# ADO.NET数据库编程学会SQL脚本之后下一步是在 C# 程序当中调用 SQL Server实现软件界面操作数据库这就是ADO.NET。需要引入命名空间using System.Data.SqlClient;专门适配 SQL Server 数据库。完整操作流程分为导入命名空间→编写连接字符串→创建 SqlConnection 连接对象→打开数据库连接→编写SQL语句→创建执行命令对象→执行SQL获取返回数据→关闭数据库连接。 数据库连接字符串填写数据库服务器地址、数据库名称账号密码认证信息。 csharp 运行 string connStrserver.;databaseTest02;Integrated SecurityTrue;创建连接对象 csharp 运行 SqlConnection connnew SqlConnection(connStr);打开数据库连接 csharp 运行 conn.Open();编写SQL语句字符串 csharp 运行 stringsqlselect * from Student;创建执行对象两种 SqlCommand执行增删改以及 SqlDataReader 流式读取 SqlDataAdapter 适配器自动打开关闭连接填充 DataTable 内存数据表。 适配器填充 DataTable 示例 csharp 运行 SqlDataAdapter sdanew SqlDataAdapter(sql,conn);DataTable dtnew DataTable();sda.Fill(dt);SqlCommandSqlDataReader 逐行读取数据流 csharp 运行 SqlCommand cmdnew SqlCommand(sql,conn);SqlDataReader drcmd.ExecuteReader();while(dr.Read()){//读取字段转为对应类型string namedr[Name].ToString();} 使用完毕关闭数据库连接 csharp 运行 conn.Close();学习注意点数据库连接属于稀缺资源用完必须关闭实际开发推荐using语法块自动释放连接资源。ExecuteReader 是向前只读数据流DataTable 是把全部数据加载到内存。 七、本周学习遇到问题与心得体会 本周数据库知识点体系庞大刚开始学习的时候很容易混淆概念。 约束方面一开始分不清主键、唯一约束区别。主键非空且唯一一张表只能一个主键唯一约束允许null一张表可以多个唯一约束。CHECK约束用来自定义业务规则。 多表联查难点内连接、左连接容易写混。内连接只拿两边匹配记录左连接保证左表全部数据右表匹配不到返回null写SQL的时候要先理清谁是主表。多表联查on条件不要写到where里面。 事务逻辑事务要理解原子性多条修改语句包裹事务出现错误及时rollback回滚防止业务数据不一致。 ADO.NET编程踩坑连接字符串写错服务器名、数据库名大小写、符号错误直接打不开数据库忘记Open()打开连接执行语句直接报错读取 DataReader 时要循环Read()不调用Read拿不到行数据数据库用完记得Close关闭连接。SQL编写习惯delete、update语句必须养成写where条件的习惯防止误操作清空整张表select尽量不要直接写select*按需查询字段提升性能。 数据库是整个软件的数据底座后续不管做 WinForm 桌面软件还是 Web 开发业务逻辑都离不开数据库存取数据。现在已经掌握基础 T‑SQL能够独立建库建表完成单表、多表增删改查掌握事务和变量同时掌握 C# 程序访问 SQL Server 的完整流程。但是复杂子查询、存储过程、索引优化方面还没有深入学习后续继续练习手写 SQL多写多调试把 SQL 功底练扎实同时结合 WinForm 窗体完成完整窗体增删改查小项目把数据库知识和程序开发结合起来。八、下周学习计划 继续巩固 T‑SQL多练习复杂多表查询、子查询、分组统计SQL脚本。 熟悉ADO.NET封装把数据库操作封装公共工具类避免重复写连接、关闭数据库代码。 结合 WinForm 窗体完成完整学生信息管理小案例实现界面新增、修改、删除、查询、分页。 了解数据库索引基础概念理解索引对查询性能的影响

相关新闻

Redis高频面试题解析与实战技巧(2026版)

Redis高频面试题解析与实战技巧(2026版)

2026/8/25 18:55:32

1. Redis高频面试题全解析(2026最新版)作为缓存领域的王者,Redis在2026年依然是后端工程师面试的必考知识点。我整理了最近3年一线大厂面试中最常出现的Redis问题,涵盖数据结构、持久化、集群、分布式锁等核心模块,帮你…

丙午年处暑思怀

丙午年处暑思怀

2026/8/25 18:55:32

丙午年处暑思怀 处暑观明暗,秋风看早晚。 日尽见高山,路远阅真颜。 自辨知长短,众识懂易难。 一人御风帆,三生修彼岸。 起学验实践,止思试经验。 己峰只笑谈,他川皆尘漫? 以往莫轻叹&#xff0c…

【 Linux 神奇的桌面】

【 Linux 神奇的桌面】

2026/8/25 18:55:32

1. 引言 在 Linux 桌面发行版数量已经多到“选择困难”的今天,大多数系统都在往“什么都要、高度可定制”的方向卷。Omarchy 走了另一条路:它是一款面向开发者工作站、开箱即用的**“有主见”(opinionated)**发行版,从…

SQLite/MariaDB / H2

SQLite/MariaDB / H2

2026/8/25 19:45:34

三者都是关系型数据库,H2、SQLite 嵌入式;MariaDB 服务端数据库特性SQLiteH2 DatabaseMariaDB (MySQL 分支)部署模式嵌入式,单文件数据库,无独立进程嵌入式 / 服务端两种模式独立服务进程,C/S 架构,需要安装…

浙大高飞团队两篇新作:死胡同规避与追逃自博弈,两种无人机技术演进方向

浙大高飞团队两篇新作:死胡同规避与追逃自博弈,两种无人机技术演进方向

2026/8/25 19:45:34

「拓展无人机自主飞行的能力边界」 目录 01 DPNet:预判看不见的死胡同,实现主动规避而非事后补救 行业固有路线的短板 02 AgilePE:自博弈强化学习,端到端无人机追逃对抗 03 两套系统定位、边界与行业位置 04 写在…

专业临沂GEO优化公司 10项指标真实对比

专业临沂GEO优化公司 10项指标真实对比

2026/8/25 19:45:34

专业临沂GEO优化公司 10项指标真实对比全文摘要本文介绍了在AI大模型重塑搜索习惯的背景下,临沂地区企业如何选择合适的生成式引擎优化(GEO)服务商。通过评估官方平台认证、行业协会资质、优化师持证率、技术团队规模、语义覆盖能力、效果交付…

DSPE-PEG-NH2,保留了DSPE磷脂自发插入脂质体磷脂双分子层的特性

DSPE-PEG-NH2,保留了DSPE磷脂自发插入脂质体磷脂双分子层的特性

2026/8/25 19:45:34

基础参数‌【中文名称】磷脂-聚乙二醇-氨基,磷脂-PEG-氨基,二硬脂酰磷脂酰乙醇胺-聚乙二醇-氨基,DSPE聚乙二醇氨基【英文名称】DSPE-PEG-NH2,DSPE-PEG-Amine,Amino-PEG-DSPE【产品纯度】≥95%【典型PEG分子量】1K、2K、…

阿里云AMS音频审核套餐包到期全攻略:续费、退费与欠费处理

阿里云AMS音频审核套餐包到期全攻略:续费、退费与欠费处理

2026/8/25 19:45:34

1. 项目概述:当“套餐包”遇上“到期日”做内容平台、社交应用或者在线教育的朋友,对“音频审核”这个环节肯定不陌生。无论是用户上传的语音消息、直播回放,还是课程音频,都需要经过一道安全合规的“安检”。很多云服务商&#x…

当 AI 会写代码之后,软件还剩什么?

当 AI 会写代码之后,软件还剩什么?

2026/8/25 19:35:34

导语:从一句"AI 编程直接生成 C/汇编你怎么看"出发,我推演了一个完整闭环,又亲手把它推翻了一半。这篇是复盘,也是一份诚实的研究记录。前几天刷到一篇内容是说:AI 编程直接生成 C 语言或者汇编语言&#xf…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/24 19:53:32

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/24 19:56:07

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/24 21:16:09

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南

2026/8/25 0:04:34

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory Meta Description:GetQzonehistory 是一个QQ空间历史说…

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

2026/8/25 0:04:35

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

2026/8/25 0:04:35

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 项目地址: https:/…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/22 4:13:47

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/22 1:32:34

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…