SQL Server常用查询与操作语句大全
本教程整理了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基础语法优化的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













