【收藏级】MySQL 100条命令,基本操作的所有内容(常看常新)(二)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 【收藏级】MySQL 100条命令,基本操作的所有内容(常看常新)(二)

七、数据查询

7.1、单表查询

1、语法:select <[列名1,列名n 或通配符 [as 别名] ]> from 表名;

as:将某个字段取个别名

2、语法:select distinct <[列名1,列名n 或通配符]> from 表名;

去掉重复项,对应的字段前加

符号表达:

7.1.1、where常用关键字

  • AND、OR:连接多个条件
    BETWEEN AND:在…之间
    IS NULL:查询空值
    IN:查询在某个集中中
    LIKE:模糊查询

7.1.2、通配符

”*“通配符:匹配任意列名

“_"通配符:匹配单个字符

“%”通配符:匹配任意字符

7.1.3、order by子句

可以使用order by子句对查询结果安装一个或多个属性列(多个属性逗号隔开)的升序(ASC)或降序(DESC)排列,默认为升序。

--查询结果按照bookPrice列值的降序排列
select * from books order by bookPrice desc;

7.1.4、聚集函数

例:

#查询book表中年龄最大的
select max(age) from book;

7.1.5、group by子句

将查询结果按某一列或多列的值分组,值相等的为一组。

select count(*),pressName from books group by pressName;

如:下列表中,叫 “人民邮电出版社” 名字的有1个,叫 ”清华大学出版社“ 的有6个。

7.2、连接查询

根据两个表或多个表的列之间的关系来查询数据,即连接查询。

7.2.1、简单连接

连接查询实际是通过表与表之间相互关联的列进行数据的查询,对于关系数据库来说,连接是查询最主要的特征。

简单连接使用逗号将两个或多个表进行连接,也是最常用的多表查询形式。

例:

select b.reader_id,br.book_name from books b,borrow_record br where b.ISBN=br.ISBN;

7.2.2、JOIN连接

除了使用逗号连接外,也可使用JOIN连接。

7.2.2.1、内连接(inner join)

1)等值连接

select * from books b inner join borrow_record br where b.ISBN=br.ISBN;

2)不等连接

select * from books b inner join borrow_record br where b.ISBN<>br.ISBN;

7.2.2.2、外连接(left join 、right join)

1)左连接

on后面也可使用 where执行条件判断

select * from books b left join borrow_record br on b.ISBN=br.ISBN;

2)右连接

on后面也可使用 where执行条件判断

select * from books b right join borrow_record br on b.ISBN=br.ISBN;

7.3、嵌套查询

SQL语言中,一个select-from-where语句被称为一个查询块。将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询被称为嵌套查询

语法:select <字段名或通配符> from <表或视图名> where [表达式] (select <字段名或通配符> from <表或视图名> where [表达式] )

7.3.1、带有IN谓语的子查询

select * from books where isbn in (select * isbn from brrowrecord where reader_id='201801');

7.3.2、带有比较运算符的子查询

指父查询与子查询之间用比较运算符连接。可以用 >、<、=、>=、<=、!=、<> 等比较运算符。

select * from books where isbn=(select * isbn from brrowrecord where reader_id='201801');

7.3.3、带有ANY(SOME)或ALL谓语子查询

子查询返回值单值时可以用比较运算符,但返回多值时要用ANY(有的系统用SOME)或ALL谓语,使用ANY或ALL谓语时必须同时使用比较运算符

谓语释义:

例:

#查询读者编号为"201801"的学生未借阅的所有图书的详细信息;
select * from books where isbn <> all(select isbn from brrowwrecord where reader_id="201801");

7.3.4、带有EXISTS谓语的子查询

EXISTS谓语的子查询不返回任何数据,是一个布尔值(true或false)逻辑判断。使用存在量词EXISTS后,若内层查询结果为空,则外层的WHERE子句返回ture,否则取反。

例:

#查询读者编号为201801的读者没有借阅过的图书信息
select * from books where not exists (select * from borrowrecord where isbn=books.isbn and reader_id="201801");

7.4、合并查询

#两个表字段合并显示,两个表相同字段合并后显示一次
select * from t_major1 union select * from t_major;

八、索引

索引是为了加速对表中数据行的检索而创建的一种分散的存储结构。

8.1、为已经创建好的表建立索引

1)用CREATE INDEX方法在已经创建好的表 t_student 上为其字段名 stu_id 创建普通降序索引。

语法:create [unique | fulltext] index index_name on table_name(co_name ase|desc , [co_name ase|desc] ) #多字段索引使用逗号(,)隔开

create index index_student on t_student(stu_id desc)

2)用ALTER TABLE…ADD INDEX方法为表t_course的字段列course_name 创建全文索引。

语法:alter table table_name add [unique | fulltext] index index_name(co_name ase|desc , [co_name ase|desc] ) #多字段索引使用逗号(,)隔开

alter table t_course add fulltext index index_course_name(course_name)

8.2、创建新表时创建索引

创建表 t_teacher2,与 t_teacher 结构一致(不能复制表结构),在创建表的过程中创建索引,为 teacher_id 创建一个唯一升序索引。

create table t_teacher2(teacher_id char(10),teacher_name char(50),index index_tea_id(teacher_id asc));


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
存储 关系型数据库 MySQL
初步了解MySQL数据库的基本命令
初步了解MySQL数据库的基本命令
44 0
|
1月前
|
tengine 关系型数据库 MySQL
Tengine、Nginx安装MySQL数据库命令教程
本指南详细介绍了在Linux系统上安装与配置MySQL数据库的步骤。首先通过下载并安装MySQL社区版本,接着启动MySQL服务,使用`systemctl start mysqld.service`命令。若启动失败,可尝试使用`sudo /etc/init.d/mysqld start`。利用`systemctl status mysqld.service`检查MySQL的服务状态,确保其处于运行中。通过日志文件获取初始密码,使用该密码登录数据库,并按要求更改初始密码以增强安全性。随后创建一个名为`tengine`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
2月前
|
存储 关系型数据库 MySQL
MySQL基础命令及使用示例
这些基础命令构成了与MySQL数据库交互的核心,理解并掌握它们对于进行有效的数据库操作至关重要。在实际使用中,建议结合实际案例和需求来练习这些命令,以加深理解和提高效率。
30 3
|
2月前
|
存储 关系型数据库 MySQL
MySQL基础命令及使用示例
这些基础命令构成了与MySQL数据库交互的核心,理解并掌握它们对于进行有效的数据库操作至关重要。在实际使用中,建议结合实际案例和需求来练习这些命令,以加深理解和提高效率。
67 4
|
1月前
|
关系型数据库 MySQL 数据库
Mysql 常用命令
Mysql 常用命令
23 0
|
4月前
|
存储 关系型数据库 MySQL
(十五)MySQL命令大全:以后再也不用担心忘记SQL该怎么写啦~
相信大家在编写SQL时一定有一个困扰,就是明明记得数据库中有个命令/函数,可以实现自己需要的功能,但偏偏不记得哪个命令该怎么写了,这时只能靠盲目的去百度,以此来寻找自己需要的命令。
163 28
|
4月前
|
SQL 关系型数据库 MySQL
MySQL删除表数据、清空表命令(truncate、drop、delete 区别)
MySQL删除表数据、清空表命令(truncate、drop、delete区别) 使用原则总结如下: 当你不需要该表时(删除数据和结构),用drop; 当你仍要保留该表、仅删除所有数据表内容时,用truncate; 当你要删除部分记录、且希望能回滚的话,用delete;
|
4月前
|
SQL 关系型数据库 MySQL
mysql性能调优:EXPLAIN命令21
【7月更文挑战第21天】掌握SQL性能调优:深入解析EXPLAIN命令的神奇用法!
61 1
|
4月前
|
存储 SQL Cloud Native
云原生数据仓库使用问题之运行MySQL命令发现中文内容变成了问号,该如何解决
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
5月前
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之 MySQL数据库中,执行delete命令删除数据后,存储空间通常不会立即释放,该如何优化
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
134 2
下一篇
无影云桌面