【MySQL】数据库的基本查询

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 这篇就来说一下数据库中表的基本查询,看见是基本查询,就知道肯定有高级查询,这个我们下一篇来讲。我们把数据库的查询分为两部分来讲,它的重要性就不言而喻了,很多数据库都是多查询,少修改的,查询也是使用数据库的一项基本技能。

前言


上篇已经讲过数据库与表相关的一些相关的操作了,如果你对这部分依旧不太熟悉建议先去看看


这篇就来说一下数据库中表的基本查询,看见是基本查询,就知道肯定有高级查询,这个我们下一篇来讲。我们把数据库的查询分为两部分来讲,它的重要性就不言而喻了,很多数据库都是多查询,少修改的,查询也是使用数据库的一项基本技能,所以大家要多多练习,接下来正文开始。


建表

大家也许会觉得很奇怪,你标题不是写的数据库查询吗?为什么第一部分是建表呢?


因为我们查询就是对于数据库中的表进行查询的,没有表我们怎么进行查询呢?所以我们第一部分是建表方便后面示例,这样大家理解起来就方便了,正好我们也可以复习一下上一篇学到的知识


建表过程:

create  table t_student(
  id  INT PRIMARY KEY NOT NULL,
  name  VARCHAR(4) NOT NULL,
  age   INT NOT NULL,
  sex   CHAR(1) NOT NULL,
  class VARCHAR(10) ,
  birthplace  varchar(10)
);INSERT INTO t_student VALUES('88201','张三',18,'男','软件211','浙江杭州');
INSERT INTO t_student VALUES('88202','李四',19,'男','软件212','河南郑州');
INSERT INTO t_student VALUES('88203','小红',18,'女','计算机211','北京');
INSERT INTO t_student VALUES('88204','王五',16,'男','软件214','浙江杭州');
INSERT INTO t_student VALUES('88205','小蓝',17,'女','计算机212','江苏常州');
INSERT INTO t_student VALUES('88206','小王',20,'男','软件211','北京');
INSERT INTO t_student VALUES('88207','张四',18,'男','计算机211','江苏常州');


建表结果:



基本查询

表已经建好了,接下来我们正式开始学习数据库的基本查询


普通查询

普通查询就是查询出表中有哪些信息,格式为:

SELECT *FROM 表名;



示例:

SELECT * FROM t_student;



输出:

image.png

同时我们还可以查询某些字段的信息,如下:

示例:

SELECT name,class,birthplace FROM t_student;


输出:

image.png

如果我们要查询每个人年龄加10岁的年龄我们可以这样

SELECT name,age+10 FROM t_student;


输出:

image.png

但是这样查询出来的信息,看起来可能不太舒服,那么我们可以重新弄命名,如下:

SELECT name,age+10 AS new_age FROM t_student;



输出:

image.png

如果我们查询出来的信息里面有重复的数据,那我们可以在SELECT后面加上DISTINCT这个关键字,可以达到去重效果,大家可以自己试试效果。


但是请记住这是信息查询并不会改变原始表里面的信息


分页查询

如果你需要查询特定的几条连续数据,我们可以对数据进行分页,这里用到关键字LIMIT,具体格式为


SELECT 字段名1,字段名2,… FROM 表名 LIMIT  分页起始页,每页显示条数;


这里要注意默认第一条数据的起始页为0


示例:

SELECT * FROM t_student LIMIT 2,2;



输出:

image.png

如果分页起始页被省略了,那么默认为0,即:从第一条数据开始


选择查询

我们在进行数据库查询的时候往往是需要查出符合要求的一些数据,而不是所有数据,在这个时候我们就得用到选择查询里面的WHERE关键字了,格式如下:


SELECT  字段名1,字段名2,… FROM 表名 WHERE 条件表达式


示例:

查询学生表里面年龄大于18岁的人有哪些?
SELECT name,age FROM t_student WHERE age>18;


输出:

image.png

为了满足多种查询场所,往往我们在查询时候的条件表达式不止一个,表达式之间的关系也是多变的。在条件查询时常用到的关键字还有:


IN 关键字:用于判断某个子弹的值是是否在指定集合中。

AND关键字:在多条件查询时满足所有条件的数据

OR关键字:满足任意一个条件的数据

NOT关键字:满足这个条件取反的数据

BETWEEN AND关键字:查询区间值,判断某个字段值是否在指定的范围内。

DISTINCT:查询会过滤表中重复的数据

LIKE 关键字:模糊查询,与%和_联用


百分号(%)通配符:匹配任意长度的字符串,包括空字符,如:“%c”匹配以字符C开头的。“w%g”表示以w开头g结尾的字符串“可,”%C%“表示出现c的字符串。

下划线( _ )通配符:只匹配单个 字符,需要匹配多个需要使用多个下划线通配符。

加入字符串中出现了_或%则用\进行转义。如“_“和”%”。

示例:查询出来自软件211班级且出生地不在北京的成年人

SELECT id,name,age,birthplace 
FROM t_student 
WHERE age>=18 AND class="软件211" AND NOT birthplace="北京";


输出:


image.png

数据排序

我们在查询时候往往需要查出来的数据,是有一定顺序的,这样我们观察起来更加方便,这时候我们就需要使用到关键字 ORDER BY 了,格式如下:


SELECT  字段名1,字段名2,… FROM 表名 ORDER BY 排序依据字段 ASC|DESC;


注:

ASC:顺序,正序;数值 :递增,字母:自然顺序(a-z),可省略

DESC:倒序 ,反序 ;数值:递减, 字母:自然反序,不可省略


示例:

SELECT * FROM t_student ORDER BY age;



输出:

image.png


执行顺序

学习完了基本查询,是不是大家就开始迷茫,他们的书写顺序还有执行顺序了啊,首先这个肯定不是按顺序执行的,正解如下:


首先在SQL语句中空格与换行对语法没有破坏,所以在书写的时候如果过长我们可以把它们分行书写,看起来也比较舒服,可读性高。


书写顺序是:

SELECT id,name,age,birthplace 
FROM t_student 
WHERE age>=18 AND class="软件211" AND NOT birthplace="北京"
ORDER BY age
LIMIT 2;



执行顺序为:

FROM->WHERE->SELECT->ORDER BY->LIMIT



结语

这些仅仅是数据库的基本查询,下一篇我们来总结高级查询,想要熟练掌握这些东西还是得多多动手操作,不要以为自己懂了就不动了。


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
关系型数据库 MySQL 网络安全
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
45 25
|
12天前
|
关系型数据库 MySQL 数据库
Docker Compose V2 安装常用数据库MySQL+Mongo
以上内容涵盖了使用 Docker Compose 安装和管理 MySQL 和 MongoDB 的详细步骤,希望对您有所帮助。
91 42
|
25天前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
|
30天前
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
99 6
|
30天前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
257 0
|
2月前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
73 3
|
2月前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
117 2
|
2月前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
125 3
|
2月前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
2月前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
384 15

热门文章

最新文章