<MySQL> MySQL中查询(retrieve)数据的基础操作

目录

一、查询(retrieve)

1.1 查询数据的方式概述

二、全列查询

2.1 语法

2.2 操作演示

2.3 全列查询需要慎重使用

三、指定列查询

3.1 语法

3.2 操作演示

四、表达式查询

4.1 语法

4.2 操作演示

4.3 null 参与表达式计算

4.3 表达式查询存的缺陷

4.4 临时表中列的类型

五、查询结果指定别名(as)

5.1 语法

5.2 操作演示

六、去重查询(distinct)

6.1 语法

6.2 操作演示

七、排序查询(order by)

7.1 排序规则

7.2 语法

7.3 操作演示

八、条件查询(where)

8.1 语法

8.2 运算符简介

8.3 运算符   >   >=   <   <=

8.4 运算符   =   <=>

8.5 运算符   !=   <>

8.6 范围匹配 between A and B

8.7 选择匹配 in (option, ......)

8.8 判断空和非空 is null、is not null

8.9 模糊匹配运算符 like

8.10 运算符 与and、或or、非not

8.11 where 后的条件表达式中不能使用别名

8.12 条件查询中的 SQL 语句的执行顺序

九、分页查询(limit)

9.1 语法

9.2 分页查询的优点

9.3 操作演示


一、查询(retrieve)

1.1 查询数据的方式概述

查询方式简单说明
全列查询查询表中所有数据;
指定列查询查询表中指定列的数据;
表达式查询根据表达式查询相关列并运算,打印运算结果;
查询结果指定别名(as)为查询结果中的列指定别名,打印的列名为该别名;
去重查询(distinct)查询结果为去重后的结果;
排序查询(order by)对查询的结果进行排序;
条件查询(where)使用运算符,设置查询规则,根据查询规则查询数据;
分页查询(limit)指定查询的数据的打印行数,类似分页的效果;

        上述查询方式,是 MySQL 中基础的查询方式。

        查询方式并非每次只能使用一种,而是可以根据使用者的需求,将查询方式搭配组合,以查询到所需的数据。

        所有的查询结果都是一张 “临时表” ,执行查询操作不会改变数据库中的原始数据。 


 现有表格 student ,表格所有数据如下:


二、全列查询

2.1 语法

语法:select * from 表名;
解释:根据指定的数据表,查询表中所有数据;(‘ * ’ 号为通配符)

2.2 操作演示

2.3 全列查询需要慎重使用

        数据量过大时,用全列查询的方式查询数据,可能导致硬盘或网络带宽开销过大,在查询操作完成之前,服务器无法正常响应其他的的客户端请求。

        可能影响索引的使用。

        除非数据量小,通常情况下不建议执行全列查询操作


三、指定列查询

3.1 语法

语法:select 列名...... from 表名;
解释:指定数据表中的某一列或多列,查询指定列的所有数据。

        一个数据表中常会有多列,指定列查询的方式减少了查询的数据量。但仍可能出现数据量过大的情况,因此指定列查询也需要慎重使用。

3.2 操作演示


四、表达式查询

4.1 语法

语法:select 表达式...... from 表名;
解释:

指定数据表,根据表达式按列对数据表中的数据进行计算。

每个表达式为一列,将表达式结果打印。

4.2 操作演示

4.3 null 参与表达式计算

        应注意,当 null 参与计算时,结果必然为 null 。 

4.3 表达式查询存的缺陷

        表达式将作为列名进行打印。可以从上图看到,如果表达式非常长,那么这一列的列名也将非常长,可读性差,不利于阅读和理解该列含义。下文使用的“查询结果指定别名”可以解决这个问题。

4.4 临时表中列的类型

        所有的查询结果都是一个临时表。

        临时表中的数据类型不再受限于原始表。

        可以从上图看到,经过表达式计算后,数据格式已经不合法,但该查询操作仍可以执行。


五、查询结果指定别名(as)

5.1 语法

语法:select 表达式 as 别名 from 表名;
解释:

指定数据表,根据表达式按列对数据表中的数据进行计算。

每个表达式为一列,以别名作为表达式的运算结果的列名,将表达式结果打印。

5.2 操作演示


六、去重查询(distinct)

6.1 语法

语法:select distinct 列名...... from 表名;
解释:

指定数据表中的某一列或多列,除数据重复的行之外,打印查询结果。

        如果指定多列进行去重查询,此时需要每一列的数据都重复,才会认为数据行是重复的

6.2 操作演示


七、排序查询(order by)

7.1 排序规则

如果一个查询操作没有使用 order by 关键字,那么这个查询操作得到的结果集数据之间的相互顺序是不可预测的,不能被认为是有序的。
关键字 asc 表示升序,desc 表示降序。如果不指定升降序,则默认升序 asc 。(注意关键字升序 desc 和 关键字描述 desc 重复,使用时注意区分)
null 数据会被认为是最小值。
字符串也可以比较大小,一般按照字典序进行排序。中文也是按照字典序进行排序,不是按照拼音首字母或笔画顺序,一般没有意义。

7.2 语法

语法:select 列名...... from 表名 order by 列名 asc/desc;
解释:

select 后的列名,是指需要打印的列名。

order by 后的列名,是指排序的依据,这里的列名并不一定需要被打印。

order by 后的列名,可以选择升序排列(使用 asc 或 不写),或选择降序(使用 desc )

语法:select 表达式 as 别名...... from 表名 order by 别名 asc/desc;
解释:

与其他查询一样,可以在 select 后指定一列或多列,可以替换为表达式,可以指定别名。

指定别名后,order by 可以根据别名的数据进行排序。

语法:select 表达式 as 别名...... from 表名 order by 别名 asc/desc, 列名 asc/desc......;
解释:优先级排序:order by 后的列名,是指排序的依据,可以指定多列作为排序的依据,列与列之间排序的优先级根据书写的先后顺序决定。

7.3 操作演示


八、条件查询(where)

8.1 语法

        查询时,指定筛选条件,符合条件将被打印,不符合条件的不会打印。

语法:select 列名...... from 表名 where 条件表达式;
解释:

根据指定条件表达式筛选数据,打印指定列中符合条件的数据。

语法:select 表达式 as 别名...... from 表名 where 条件表达式;
解释:

与其他查询一样,可以在 select 后指定一列或多列,可以替换为表达式,可以指定别名

8.2 运算符简介

运算符列表
>   >=   <   <= 大于、大于等于、小于、小于等于
=   <=>等于
!=   <>不等于
between A and B范围匹配
in (option, ......)选择匹配
is null、is not null判断空
like模糊匹配
and、or、not与、或、非

阅读指针 -> 《SQL中的比较运算符和逻辑运算符简介》

<MySQL> SQL中的比较运算符和逻辑运算符简介-CSDN博客文章浏览阅读6次。简述 SQL 语言中的运算符https://blog.csdn.net/zzy734437202/article/details/134282495

8.3 运算符   >   >=   <   <=

8.4 运算符   =   <=>

8.5 运算符   !=   <>

8.6 范围匹配 between A and B

8.7 选择匹配 in (option, ......)

8.8 判断空和非空 is null、is not null

8.9 模糊匹配运算符 like

8.10 运算符 与and、或or、非not

8.11 where 后的条件表达式中不能使用别名

select 表达式 as 别名 from 表名 where 别名 + 10;

where 后的条件表达式中,不能使用别名。

上述语句指定了 “别名 + 10” 作为 where 后的条件表达式,执行该语句将报错,因为在 where 后的条件表达式中使用了别名。

where后不使用别名则可以正常打印:

8.12 条件查询中的 SQL 语句的执行顺序

根据指定的表,取出一行记录。
将该行记录代入条件表达式,判断是否满足条件。

如果条件满足,则将 select 后指定的列取出并打印;如果 select 后是表达式,则根据表达式计算后再进行打印。


九、分页查询(limit)

9.1 语法

语法:select * from 表名 limit 数量;
解释:

指定数据表,limit 指定需要打印多少行。

语法:select * from 表名 limit 数量 offset 行数;
解释:指定数据表,limit 指定需要打印多少行,offset 指定从哪一行开始打印。

9.2 分页查询的优点

        分页查询可以限制查询数据每次的打印数量和从哪个位置开始打印。       

        查询数据时,可能由于查询数据量过大,而导致服务器阻塞,一直在执行数据查询操作,而没有办法响应其他客户端请求。使用分页查询,就能很好的解决这个问题。

9.3 操作演示


 

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"Could not retrieve transaction read-only status from server" 错误通常是由于在事务尝试修改只读的数据所导致的。在 MySQL ,可以使用 `SET TRANSACTION READ ONLY` 命令将事务设置为只读模式,此时事务只能读取数据,不能修改数据。如果在只读事务尝试修改数据,就会出现这个错误。 解决这个问题的方法是使用可写事务来修改数据。在事务开始时,可以使用 `SET TRANSACTION READ WRITE` 命令将事务设置为可写模式,这样就可以修改数据了。例如: ```java Connection conn = null; try { conn = DriverManager.getConnection(url, user, password); conn.setAutoCommit(false); Statement stmt = conn.createStatement(); stmt.executeUpdate("SET TRANSACTION READ WRITE"); // 将事务设置为可写模式 stmt.executeUpdate("UPDATE table_name SET column_name = new_value WHERE condition"); // 修改数据 conn.commit(); } catch (SQLException e) { conn.rollback(); } finally { if (conn != null) { try { conn.close(); } catch (SQLException e) { // 处理关闭连接异常 } } } ``` 在这个代码示例,我们在事务开始时使用 `SET TRANSACTION READ WRITE` 命令将事务设置为可写模式,然后执行修改数据操作。如果出现异常则回滚事务。在 finally 块关闭连接,确保连接被正确地释放。 需要注意的是,只有在事务才需要使用 `SET TRANSACTION READ WRITE` 命令将事务设置为可写模式。如果不使用事务,则默认情况下事务为可写模式,可以直接执行修改数据操作

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值