SQL Server常用查询与操作语句大全

不晚
不晚
发布时间:2026-10-14| 5人浏览过
原创

本教程整理了SQL Server的核心语法,包括如何构建查询条件、使用内连接和外连接处理多表数据,以及执行插入、更新和删除记录的标准操作。文章详细解析了字段选择、排序、分组过滤及子查询逻辑,并提供常用数据类型的说明,帮助开发者快速掌握数据库交互技巧。

一、基础查询操作

简单的Transact-SQL查询主要由选择列表、FROM子句和WHERE子句构成,分别定义查询列、目标表和搜索条件。

第1步:配置选择列表与数据来源

目的:指定需要返回的字段及数据所属表。
动作:在SELECT后列出列名,或在FROM后指定表名。
代码示例:

-- 查询指定列
SELECT nickname, email FROM testtable WHERE name='张三';
-- 查询所有列
SELECT * FROM testtable;

完成状态:结果集仅包含请求的列,行数取决于匹配条件。

第2步:设置过滤与排序条件

目的:排除无关数据并按特定顺序展示。
入口:通过WHERE子句设置条件,ORDER BY子句控制顺序。
重要参数:

  • 比较运算符:>、<=、=、<>等。
  • 逻辑连接:AND、OR、NOT。
  • 模糊匹配:LIKE配合通配符(如%或_)。
  • 去重限制:DISTINCT(去重)、TOP N(限制行数)。

代码示例:

-- 筛选年龄大于20的记录并降序排列
SELECT TOP 5 * FROM usertable 
WHERE age > 20 
ORDER BY age DESC;

-- 使用DISTINCT去除重复行
SELECT DISTINCT city FROM authors;

二、多表关联与联合查询

当数据分散在不同表中时,需要使用连接(JOIN)或联合(UNION)来整合信息。

第3步:执行连接查询

目的:根据关联键合并两个或多个表的数据。
动作:在FROM子句中使用INNER JOIN、LEFT OUTER JOIN或CROSS JOIN。
完成状态:输出结果包含所有关联字段。

-- 内连接:仅返回匹配的行
SELECT a.username, b.cityid 
FROM usertable a 
INNER JOIN citytable b ON a.cityid = b.cityid;

-- 左外连接:保留左表所有记录
SELECT a.*, b.* 
FROM forum_table a 
LEFT JOIN user_table b ON a.username = b.username;

第4步:合并查询结果集

目的:将多个相同结构的查询结果垂直叠加。
动作:使用UNION或UNION ALL连接多个SELECT语句。
注意:UNION会自动去除重复行,UNION ALL则保留全部行;参与联合的语句列数和类型必须一致。

SELECT CompanyName, City FROM Customers WHERE Country='USA'
UNION
SELECT CompanyName, City FROM Suppliers WHERE Country='USA';

三、数据修改与结构管理

除了查询,还需要对数据进行增删改以及对表结构进行维护。

第5步:执行CRUD操作

目的:向表中添加、删除或更新记录。
动作:

  • 插入数据:使用INSERT INTO ... VALUES (...)。
  • 更新数据:使用UPDATE ... SET ... WHERE ...,若省略WHERE将更新全表。
  • 删除数据:使用DELETE FROM ... WHERE ...;批量清空建议用TRUNCATE TABLE(效率更高且不记日志)。

代码示例:

-- 插入新记录
INSERT INTO mytable (name, status) VALUES ('test', 'active');

-- 更新特定条件记录
UPDATE orders SET price = price * 1.1 WHERE region = 'UK';

-- 删除过期订单
DELETE FROM orders WHERE order_date < '2020-01-01';

第6步:创建与管理表结构

目的:建立存储数据的容器。
动作:使用DDL语句定义列和数据类型。
完整代码:

-- 新建表示例
CREATE TABLE employees (
    id INT IDENTITY(1,1) PRIMARY KEY,
    name NVARCHAR(50) NOT NULL,
    hire_date DATETIME DEFAULT GETDATE(),
    salary DECIMAL(10,2)
);

-- 修改表:增加字段
ALTER TABLE employees ADD department NVARCHAR(50);

四、高级查询技巧

第7步:应用聚合函数与分组

目的:计算统计数据并进行分组过滤。
动作:使用GROUP BY分组,结合SUM、AVG、COUNT等函数,并通过HAVING过滤分组结果。

SELECT category, AVG(price) as avg_price
FROM products
GROUP BY category
HAVING AVG(price) > 100;

第8步:构建子查询

目的:在一个查询内部嵌套另一个查询的结果作为条件。
动作:在WHERE子句中使用IN、EXISTS或标量子查询。

-- 查找单价高于平均值的商品
SELECT product_name 
FROM products 
WHERE unit_price > (SELECT AVG(unit_price) FROM products);

五、常用数据类型速查

  • 整型:int(标准整数)、smallint(小范围整数)。
  • 精确数值:decimal(p,s)、numeric(p,s),用于财务等高精度场景。
  • 浮点型:float、real,近似表示大数或小数。
  • 字符串:char(n)(定长)、varchar(n)(变长)、nchar/nvarchar(Unicode支持)。
  • 日期时间:datetime、smalldatetime。
  • 二进制:binary、varbinary、image。

以上就是SQL Server查询语句大全的详细内容,更多关于SQL Server基础语法优化的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。