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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 【收藏级】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));


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
存储 关系型数据库 MySQL
初步了解MySQL数据库的基本命令
初步了解MySQL数据库的基本命令
147 0
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
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`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
存储 关系型数据库 MySQL
MySQL基础命令及使用示例
这些基础命令构成了与MySQL数据库交互的核心,理解并掌握它们对于进行有效的数据库操作至关重要。在实际使用中,建议结合实际案例和需求来练习这些命令,以加深理解和提高效率。
232 5
|
存储 关系型数据库 MySQL
MySQL基础命令及使用示例
这些基础命令构成了与MySQL数据库交互的核心,理解并掌握它们对于进行有效的数据库操作至关重要。在实际使用中,建议结合实际案例和需求来练习这些命令,以加深理解和提高效率。
323 3
|
存储 关系型数据库 MySQL
(十五)MySQL命令大全:以后再也不用担心忘记SQL该怎么写啦~
相信大家在编写SQL时一定有一个困扰,就是明明记得数据库中有个命令/函数,可以实现自己需要的功能,但偏偏不记得哪个命令该怎么写了,这时只能靠盲目的去百度,以此来寻找自己需要的命令。
561 28
|
关系型数据库 MySQL 数据库
Mysql 常用命令
Mysql 常用命令
126 0
|
SQL 关系型数据库 MySQL
MySQL删除表数据、清空表命令(truncate、drop、delete 区别)
MySQL删除表数据、清空表命令(truncate、drop、delete区别) 使用原则总结如下: 当你不需要该表时(删除数据和结构),用drop; 当你仍要保留该表、仅删除所有数据表内容时,用truncate; 当你要删除部分记录、且希望能回滚的话,用delete;
|
SQL 关系型数据库 MySQL
mysql性能调优:EXPLAIN命令21
【7月更文挑战第21天】掌握SQL性能调优:深入解析EXPLAIN命令的神奇用法!
251 1
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之 MySQL数据库中,执行delete命令删除数据后,存储空间通常不会立即释放,该如何优化
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
446 2

推荐镜像

更多