SQL Server (SMSS) 表与列增删查改基础 1. 前言SQL Server Management Studio (SMSS) 是管理和操作 SQL Server 数据库的官方图形化工具。对于数据库开发和管理人员而言掌握在 SMSS 中对表和列进行增删查改CRUD的基础操作以及如何在 C# 应用程序特别是低版本 .NET 环境中连接并操作 SQL Server 数据库是一项核心技能。本文将详细介绍这两部分内容旨在为初学者和需要回顾的开发者提供清晰的指引。2. SMSS 中对表的基础操作在 SMSS 中大部分操作可以通过图形界面完成但了解其背后的 SQL 语句同样重要。2.1 创建表 (Create)在“对象资源管理器”中右键点击目标数据库下的“表”文件夹选择“新建表”。在弹出的设计器中可以定义列名、数据类型、是否允许 NULL 值等。完成后点击“保存”按钮或按 CtrlS输入表名即可。对应的 SQL 语句如下CREATE TABLE Employees ( EmployeeID INT PRIMARY KEY IDENTITY(1,1), FirstName NVARCHAR(50) NOT NULL, LastName NVARCHAR(50) NOT NULL, BirthDate DATE, DepartmentID INT, HireDate DATETIME DEFAULT GETDATE() );2.2 查询表结构与数据 (Read)查看表结构右键点击表名选择“设计”即可查看和修改列定义。查看表数据右键点击表名选择“选择前1000行”。对应的 SQL 查询语句-- 查询所有列 SELECT * FROM Employees; -- 查询特定列 SELECT EmployeeID, FirstName, LastName FROM Employees; -- 带条件查询 SELECT * FROM Employees WHERE DepartmentID 3;2.3 修改表结构 (Alter)添加列在设计视图中在最后一行下方直接添加新列定义并保存。ALTER TABLE Employees ADD Email NVARCHAR(100);修改列在设计视图中直接修改列的数据类型或属性注意某些修改可能导致数据丢失。ALTER TABLE Employees ALTER COLUMN FirstName NVARCHAR(100);删除列在设计视图中右键点击要删除的列选择“删除列”。ALTER TABLE Employees DROP COLUMN Email;2.4 删除表 (Delete)右键点击表名选择“删除”。在删除对话框中可以查看依赖关系并确认删除。DROP TABLE Employees;警告此操作将永久删除表及其所有数据请谨慎操作。3. SMSS 中对表中数据的增删查改除了表结构对表中数据的操作更为频繁。3.1 插入数据 (Insert)INSERT INTO Employees (FirstName, LastName, DepartmentID) VALUES (张, 三, 1), (李, 四, 2);3.2 更新数据 (Update)UPDATE Employees SET DepartmentID 5, HireDate GETDATE() WHERE EmployeeID 10;注意务必使用 WHERE 子句限定要更新的行否则将更新整个表。3.3 删除数据 (Delete)DELETE FROM Employees WHERE EmployeeID 15;注意同样要谨慎使用 WHERE 子句。如果想清空整个表但保留结构可以使用TRUNCATE TABLE Employees;速度更快且不记录日志。4. 在低版本 C# 中操作 SQL Server 数据库对于 .NET Framework 2.0/3.5 等低版本环境我们使用 ADO.NET 的核心类库进行数据库操作。主要步骤为连接、执行命令、处理结果、关闭连接。4.1 环境准备与引用确保项目中已引用System.Data和System.Data.SqlClient命名空间。using System.Data; using System.Data.SqlClient;4.2 连接数据库使用SqlConnection对象连接字符串通常包含服务器地址、数据库名、认证方式等信息。string connectionString Serverlocalhost;DatabaseMyDB;User Idsa;Passwordyourpassword;; // 或者使用Windows身份验证Serverlocalhost;DatabaseMyDB;Integrated SecurityTrue; using (SqlConnection connection new SqlConnection(connectionString)) { try { connection.Open(); Console.WriteLine(连接成功); // ... 后续操作 } catch (SqlException ex) { Console.WriteLine(连接失败: ex.Message); } } // using 语句确保连接被关闭和释放4.3 执行查询 (Read) 并读取数据使用SqlCommand和SqlDataReader。string sql SELECT EmployeeID, FirstName, LastName FROM Employees WHERE DepartmentID DeptID; using (SqlCommand command new SqlCommand(sql, connection)) { command.Parameters.AddWithValue(DeptID, 3); // 参数化查询防止SQL注入 using (SqlDataReader reader command.ExecuteReader()) { while (reader.Read()) { int id reader.GetInt32(0); // 按列索引 string firstName reader.GetString(1); // 或者按列名string lastName reader[LastName].ToString(); Console.WriteLine($ID: {id}, Name: {firstName} {reader[LastName]}); } } }4.4 执行非查询操作 (Insert, Update, Delete)使用ExecuteNonQuery方法它返回受影响的行数。// 插入数据 string insertSql INSERT INTO Employees (FirstName, LastName, DepartmentID) VALUES (FirstName, LastName, DeptID); using (SqlCommand cmd new SqlCommand(insertSql, connection)) { cmd.Parameters.AddWithValue(FirstName, 王); cmd.Parameters.AddWithValue(LastName, 五); cmd.Parameters.AddWithValue(DeptID, 4); int rowsAffected cmd.ExecuteNonQuery(); Console.WriteLine($插入了 {rowsAffected} 行。); } // 更新和删除操作类似只需更改SQL语句和参数4.5 使用 DataSet 和 SqlDataAdapter (离线操作)低版本中常用DataSet在内存中缓存数据便于离线操作后批量更新回数据库。string adapterSql SELECT * FROM Employees;; SqlDataAdapter adapter new SqlDataAdapter(adapterSql, connection); SqlCommandBuilder builder new SqlCommandBuilder(adapter); // 自动生成增删改命令 DataSet ds new DataSet(); adapter.Fill(ds, Employees); // 将数据填充到DataSet的“Employees”表中 // 在内存中对 ds.Tables[Employees] 进行修改增删改行 // 将修改更新回数据库 adapter.Update(ds, Employees);5. 注意事项与最佳实践使用参数化查询如上例所示永远不要拼接SQL字符串以防止SQL注入攻击。管理连接资源使用using语句确保SqlConnection,SqlCommand,SqlDataReader被及时关闭和释放。异常处理使用try-catch块捕获SqlException并给出友好的错误提示。连接字符串配置应将连接字符串存储在配置文件如App.config或Web.config中而不是硬编码在程序里。SMSS 操作备份在生产环境执行删除表或列、更新大量数据等危险操作前务必先备份数据或在一个安全的环境测试。6. 总结本文介绍了在 SMSS 中对数据库表和列进行增删查改的图形化与SQL语句操作并详细说明了如何在C# (.NET Framework) 中使用 ADO.NET 的核心类来连接 SQL Server 并执行数据操作。掌握这些基础是进行更高级数据库编程和管理的基石。建议读者在理解的基础上多动手实践以加深印象。下面给出思维导图自行阅读