跳转到主要内容
杨月昌的软件博客
返回

SQL Server 基础操作语句大全:从入门到实战

一、 数据操作语言 (DML - CRUD)

数据操作是开发中最频繁的部分。在执行删除或修改操作时,务必先通过查询确认 WHERE 条件的准确性

1. 新增数据 (INSERT)

-- 标准插入
INSERT INTO [test].[dbo].[users] (id, username, password)
VALUES (1, 'zhangsan', 'pw123'), (2, 'lisi', 'pw456');

-- 将查询结果存入新表 (常用于数据备份)
SELECT * INTO users_backup FROM users;

2. 修改数据 (UPDATE)

安全提醒:严禁省略 WHERE 子句,否则会更新全表数据!

UPDATE users 
SET username = 'wangwu', password = 'newpassword' 
WHERE id = 1;

3. 删除数据 (DELETE)

DELETE FROM users WHERE id = 1;

-- 如果要清空全表并重置自增 ID,推荐使用 TRUNCATE
TRUNCATE TABLE users;

二、 表与架构操作 (DDL)

1. 创建表 (CREATE)

建议在创建表时明确指定主键、不为空以及默认值。

CREATE TABLE teacher (
    id INT PRIMARY KEY IDENTITY(1,1), -- 自增主键
    name NVARCHAR(50) NOT NULL,       -- 支持多语言字符
    age INT CHECK (age > 0),          -- 检查约束
    create_time DATETIME DEFAULT GETDATE() -- 默认当前时间
);

2. 修改表结构 (ALTER)

ALTER TABLE teacher ADD email VARCHAR(100);
ALTER TABLE teacher DROP COLUMN email;
-- 重命名列名
EXEC sp_rename 'teacher.name', 'real_name', 'COLUMN';
-- 重命名表名
EXEC sp_rename 'teacher', 'instructor';

三、 进阶查询技巧 (DQL)

1. 模糊与范围查询

SELECT * FROM users WHERE username LIKE 'li%'; -- 以 li 开头
SELECT * FROM users WHERE id BETWEEN 1 AND 10;

2. 排序与分页

在 SQL Server 中,TOP 用于限制返回行数,而在 2012 版本后支持标准的 OFFSET-FETCH 进行分页。

-- 获取前 5 条
SELECT TOP 5 * FROM users ORDER BY create_time DESC;

-- 分页查询(跳过 10 行,取 5 行)
SELECT * FROM users 
ORDER BY id 
OFFSET 10 ROWS FETCH NEXT 5 ROWS ONLY;

3. 聚合与分组 (GROUP BY)

用于报表统计的必备语句:

SELECT 
    department, 
    COUNT(*) AS total_staff, 
    AVG(salary) AS avg_salary 
FROM employees 
GROUP BY department
HAVING AVG(salary) > 5000; -- 对分组后的结果进行过滤

4. 多表联接 (JOIN)

这是关系型数据库的灵魂:

SELECT a.username, b.order_no 
FROM users a
INNER JOIN orders b ON a.id = b.user_id
WHERE b.status = 'paid';

四、 常用内置函数速查

类别函数说明
字符串LEN(str) / SUBSTRING()获取长度 / 截取字符串
数值ROUND() / ABS()四舍五入 / 绝对值
日期GETDATE() / DATEDIFF()当前时间 / 计算时间差
判空ISNULL(val, default)如果 val 为空则返回默认值

总结

熟练使用 SQL Server 语句不仅仅是背诵语法,更在于理解数据之间的逻辑关系。建议在开发环境中使用 BEGIN TRANSACTIONROLLBACK 来测试你的更新和删除语句,确保安全后再正式提交。



上一篇
C# 实战:动态创建 SQL Server 数据库与表
下一篇
将第三方 Bootstrap 模板应用于 ASP.NET Core:AdminLTE 实战