Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SQL Sever学习记录:增删改查之查

SQL Sever学习记录:增删改查之查

作者头像
云峥百宝箱
发布于 2025-04-16 11:23:30
发布于 2025-04-16 11:23:30
10800
代码可运行
举报
运行总次数:0
代码可运行

SQL Server查询精进:深入理解SELECT语句

SQL 基础知识

SQL(Structured Query Language)是用于关系型数据库的操作语言,可以应用于MySQL、Oracle、SQL Server等多种数据库系统 。SQL分为几个类别:

DDL(Data Definition Language):数据定义语言,用于定义和管理数据库结构,如创建、修改或删除数据库和表。 DML(Data Manipulation Language):数据操作语言,用于对数据库中的数据进行插入、更新和删除操作。 DCL(Data Control Language):数据控制语言,用于定义数据库的安全策略,如创建用户、授权和撤销权限。 DQL(Data Query Language):数据查询语言,用于查询数据库中的数据,包括基础查询、条件查询、模糊查询等

基本查询

要查询数据库表的数据,可以使用以下SQL语句:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM <表名>

例如,查询名为students的表的所有行,可以使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM students

SELECT是查询关键字,*表示所有列,FROM后面跟表名。查询结果是一个二维表,包含列名和每一行的数据 。

指定字段查询

如果不需要查询所有字段,可以在SELECT关键字后指定字段名称,例如查询fruits表中的f_name字段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT f_name FROM fruits;

这样只返回指定字段的数据,可以提高查询效率和响应速度。

条件查询

可以使用WHERE子句进行条件查询,例如查询fruits表中价格大于5的记录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM fruits WHERE f_price > 5;

排序和限制结果

可以使用ORDER BY进行排序,LIMIT限制结果数量,例如查询fruits表中按价格降序排列的前5条记录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM fruits ORDER BY f_price DESC LIMIT 5;

聚合函数和分组查询

可以使用聚合函数如COUNT()、SUM()、AVG()等,结合GROUP BY进行分组查询,例如查询每个供应商的平均水果价格:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT s_id, AVG(f_price) FROM fruits GROUP BY s_id;

多表连接查询

可以使用JOIN进行多表连接查询,例如查询订单表和客户表的关联信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM orders JOIN customers ON orders.cust_id = customers.cust_id;

模糊查询

使用LIKE关键字可以进行模糊查询,例如查询students表中名字以"John"开头的学生:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM students WHERE name LIKE 'John%';

%代表任意数量的字符。

正则表达式

一些数据库系统支持正则表达式查询,例如MySQL中的REGEXP:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM students WHERE name REGEXP '^John';

子查询

子查询是嵌套在另一个查询中的查询,可以用于复杂的条件筛选,例如查询分数高于平均分的学生:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM students WHERE score > (SELECT AVG(score) FROM students);

联合查询

使用UNION或UNION ALL可以合并两个或多个SELECT语句的结果集:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM students WHERE score > 90
UNION
SELECT * FROM students WHERE name = 'John';

事务处理

在需要保证数据一致性的场景下,可以使用事务来管理一系列操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
COMMIT;

或者在出错时回滚:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ROLLBACK;

索引优化

为了提高查询效率,可以为表中经常用于查询的列创建索引:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE INDEX idx_name ON students(name);

视图

视图是基于SQL查询的虚拟表,可以简化复杂的查询操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE VIEW high_score_students AS
SELECT * FROM students WHERE score > 90;

存储过程和函数

存储过程和函数是数据库中存储的一段代码,可以用于封装复杂的业务逻辑:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DELIMITER //
CREATE PROCEDURE GetHighScoreStudents()
BEGIN
  SELECT * FROM students WHERE score > 90;
END //
DELIMITER ;

安全性和权限

确保数据库的安全性,合理分配用户权限,避免SQL注入等安全问题。

性能监控和优化

使用数据库提供的监控工具来分析查询性能,优化慢查询。

数据库设计

合理的数据库设计可以提高查询效率和数据完整性,包括范式设计、反范式设计等。

这些补充内容涵盖了数据库查询的更多方面,有助于更深入地理解和使用数据库。如果您有特定的数据库系统或特定的查询需求,可以进一步探讨。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024年11月03日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
编辑精选文章
换一批
第六章《MySQL查询》
1.单表查询: 查询的语法: select {*|字段} FROM 表名 [WHERE 条件判断] [GROUP BY 字段] [HAVING expr] [ORDER BY 字段 ASC(升序)/DESC(降序)] [limit 偏移量,行数]
全栈程序员站长
2021/06/08
4500
《MySQL核心知识》第6章:查询语句
今天是《MySQL核心知识》专栏的第6章,今天为大家系统的讲讲MySQL中的查询语句,希望通过本章节的学习,小伙伴们能够举一反三,彻底掌握MySQL中的各种查询语句。好了,开始今天的正题吧。
冰河
2022/08/05
8530
《MySQL核心知识》第6章:查询语句
Mysql——查询
查询指定范围内的条件记录,将所有的查询条件用括号括起来。每个条件之间用逗号隔开,只需要满足其中一个条件的值就算做匹配项
羊羽shine
2019/05/29
27.7K0
基本 SQL 之增删改查(二)
上一篇文章中,我们介绍了 SQL 中最基本的 DML 语法,包括 insert 的插入数据、update 的更新数据、delete 的删除数据以及基本的查询语法,但大多比较简单不能解决我们日常项目中复杂的需求。
Single
2019/05/25
9620
SQL Sever学习记录:增删改查之改
以下是一些详细的SQL语句示例,用于更新数据库表中的数据。假设我们有一个名为students的表,它包含id、name、age和class四个字段。
云峥百宝箱
2025/04/16
970
数据库之基本查询示例(一)
5、查询fruits表中f_name和f_price的列,并且f_price的数值等于5.2
小手冰凉
2020/05/06
4660
Mysql增删改查sql语句练习
Mysql增删改查sql语句练习 关于数据库的一些操作: 进入mysql 命令行: mysql -uroot –p 查看所有数据库: show databases; 创建数据库: create database wg charset utf8; 删除数据库: drop database wg; 选择数据库: use databases; 查看所有表: show tables; 查看创建数据库的语句:show create database databasename; 查看创建表的语句:show create table tablename; 查看表结构:desc tablename; 增: mysql> use wg; mysql> create table students( id int auto_increment primary key,name varchar(10) not null,sex varchar(12),address varchar(50),phone int not null unique); #自增长 auto_increment #非空 not null #默认值 default ‘xx’ #唯一 unique #指定字符集 charset #主键 primary key mysql> create table scores(id int auto_increment primary key,s_id int not null,grade float not null); 数据: mysql> insert into student (id,name,sex,phone) values(122,’wg’,’男’,’110’); mysql> insert into students values(111,’wg’,’121’,’dd’) ; 删: mysql> drop table tablename; mysql> truncate tablename; 快速删除表数据,自增长id从头在来,快速,从磁盘直接删除,不可恢复 mysql> delete from student; 删除整个表的数据,自增长继续 改: mysql> alter table oldtable rename newtable; 改表名 mysql> alter table scores modify s_id varchar(20);
全栈程序员站长
2022/07/25
2.3K0
Mysql增删改查sql语句练习
sql基本增删改查
例:insert into Strdents (姓名,性别,出生日期) values (‘开心朋朋’,’男’,’1980/6/15′)
全栈程序员站长
2022/07/21
5480
SQL自动化审核工具测试
最近在做一些SQL审核的事情,这里讲SQL审核的前期工作简单总结一下,做的一些测试的结果,希望对大家认识这两个自动化审核工具有所帮助。
AsiaYe
2019/11/06
3K0
SQL自动化审核工具测试
SQL Sever学习记录:增删改查之删
以下是一些详细的SQL语句示例,用于从数据库表中删除数据。假设我们有一个名为students的表,它包含id、name、age和class四个字段。
云峥百宝箱
2025/04/16
1270
MySQL数据库的查询
聚合函数又叫组函数,通常是对表中的数据进行统计和计算,一般结合分组(group by)来使用,用于统计和计算分组数据
用户9399690
2022/01/20
20.1K0
MySQL数据库的查询
基本 SQL 之增删改查(一)
上篇文章,我们介绍了数据的基本 DDL 语句,你应当具备基本的创建数据库、数据表的 SQL 语句,以及表字段的基本数据类型的熟知。
Single
2019/05/25
1.3K0
MySQL入门,问题不大【增删改查极速上手】
当你登录你的QQ账号和别人吹水的时候,当你期末交作业去度娘复制的时候,当你在工作中登录一些网站的时候,再比如当你查看自己几乎没有什么余额的银行卡的时候(捂脸),或许自己也没注意,(非需要,大部分人也不想注意哈哈哈)我们一直都在以某种方式与数据库打交道,或许你是一个开发人员,也或许你也只是一个普通的用户,数据库与我们的生活息息相关,作为一名程序员,现在学习 MySQL 和 Oracle 的会多一些,像微软的 SQL Server 以前配合 asp 的时候用的还是挺多的,不过现在就没那么流行了,
BWH_Steven
2020/06/03
7960
SQL Sever学习记录:增删改查之增
下面是一个详细的SQL语句示例,用于向数据库表中插入数据。假设我们有一个名为students的表,它包含id、name、age和class四个字段。
云峥百宝箱
2024/11/04
3710
SQL Sever学习记录:增删改查之增
MySQL基本查询示例(二)
注:本博文基于数据库之基本查询示例(一) 1、查询fruits表中每个s_id对应的所有f_name值
小手冰凉
2020/05/01
8330
面试速记之数据库增删改查|附思维导图
数据库学习,增删改查一直是测试工程师面试笔试的必考知识点,对于常用sql语法我们一定要牢记于心,尤其是各种查询的用法,在面试的时候,一个小小的知识点,面试官都可以推断出求职者的基础是否扎实。
吾非同
2020/10/23
6730
Oracle数据库增删改查
由于之前安装的oracle数据库中选择了生成示例方案,oracle默认提供了三张数据表,分别是(emp,dept,salgrade)
全栈程序员站长
2022/06/25
1.7K0
Oracle数据库增删改查
【MySQL】MySQL表的增删改查(进阶篇)——之查询操作(超级详解)
Hello!!!家人们,小编上期期讲解了关于增删查改的进阶之约束条件,关于数据库表的增删查改有了一定的认知,小编这期就将深入讲解另一部分内容,即关于数据库增删查改的进阶操作之查询进阶,大家准备好了吗~~~🥳🥳🥳;
用户11288949
2024/09/24
4710
【MySQL】MySQL表的增删改查(进阶篇)——之查询操作(超级详解)
MariaDB 连接查询
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一,该笔记用于生产环境快速查阅.
王 瑞
2022/12/28
4.5K0
MariaDB 连接查询
SQLserver数据库之基本增删改查操作(2)
1.新增操作 --插入单行数据 insert into 表名(列名) values (列值) insert into Department(DepName) values(''); --直接拿现有表数据创建一个新表并填充 select 新建表列名 into 新建表名 from 原表名 select EmpId,EmpName into student from Employee; --将现有表数据添加到一个已有表 insert into 已有的新表(列名) select 原表列名 from 原
闻语博客
2021/01/21
1.1K0
相关推荐
第六章《MySQL查询》
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验