MySQL基本查询示例总结

2025-05-27 02:50

本文主要是介绍MySQL基本查询示例总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《MySQL基本查询示例总结》:本文主要介绍MySQL基本查询示例总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧...

Create

插入

语法:

INSERT [INTO] table_name
[(column [, column] ...)]
VALUES (value_list) [, (value_list)] ...

value_list: value, [, value] ...

注意:mysql语法不区分单双引号,不区分大小写。

忽略 [(column [, column] ...)]:全列插入。

()values():像一个扁担,左边和右边对应。其中前一个括号指明要插入的列,后一个括号填写对应的元素。如果前一个括号忽略则默认为全列插入。

可同时插入多条,即()values(),(),()......

into也可省略。

示例:

mysql> create table test8(
    -> idjavascript int primary key auto_increment,
    -> name varchar(20)
    -> );
Query OK, 0 rows affected (0.02 sec)
mysql> insert into test8 (id,name)values(20250031,'张三');
Query OK, 1 row affected (0.01 sec)
mysql> insert test8 (name)values('李四');
Query OK, 1 row affected (0.01 sec)
mysql> insert test8 values(20250045,'王五');
Query OK, 1 row affected (0.00 sec)
mysql> insert test8 (name)values('赵六'),('田七');
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0
mysql> 

替换

语法

INSERT ... ON DUPLICATE KEY UPDATE
column = value [, column = value] ...

通常用来解决由于主键或者唯一键对应的值已经存在而导致插入失败的问题。即对数据进行更新。

如下我们插入已存在主键的值:

mysql> insert into values(20250031,'李华');
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'values(20250031,'李华')' at line 1
mysql> insert into test8 values(20250031,'李华') on duplicate key update name='李华';
Query OK, 2 rows affected (0.00 sec)
mysql> 

MySQL基本查询示例总结

方法二:

mysql> replace into test8 values(20250031,'小明');
Query OK, 2 rows affected (0.00 sec)

MySQL基本查询示例总结

Retrieve(读取)

select(确定列)

语法:

SELECT 
column1, column2, ...
FROM 
table_name
[WHERE condition]
[GROUP BY column_name]
[HAVING condition]
[ORDER BY column_name [ASC|DESC]]
[LIMIT offset, count];

全列查询:select * from 表名(建议不要使用)。

去重:select distinct 列名 form 表名

案例:

MySQL基本查询示例总结

MySQL基本查询示例总结

显示时对列重命名:列名 as 新列名。as可省略。

其次可对列进行运算然后显示,如下:

MySQL基本查询示例总结

where条件(确定行)

语法:

SELECT 列名1, 列名2, ...
FROM 表名
WHERE 条件表达式;

MySQL基本查询示例总结

MySQL基本查询示例总结

注意:NULL和0不一样。

NULL=NULL结果还是NULL,因为NULL不可以用=比较,而是用<=>。通常用is null,is not null。

示例:

英语不及格的同学及英语成绩

mysql> select name,english from exam_result where english<60;

语文成绩在[80,90]分的同学及语文成绩

select name,chinese from exam_result where chinese>=80 and chinesese<=90;

或:

mysql> select name,chinese from exam_result where chinese between 80 and 90;

数学成绩是58或59或98或99分的同学及数学成绩 

mysql> select name,math from exam_result where math=58 or math=59 or math=98 or math=99;

或 

mysql> select name,math from exam_result where math in (58,59,98,99);

姓孙的同学 及 孙某同学

mysql> select name from exam_result where name like '孙%';
mysql> select name from exam_result where name like China编程'孙_';

语文成绩好于英语成绩的同学

mysql> select name,chinese,english from exam_result where chinese > english;

总分在200分以下的同学

mysql> select name,chinese+math+english 总分 from exam_result where chiinese+math+english<200;

注意:语句的执行顺序是从右往左,所以不能使用‘总分’这个词来计算,而where不支持把列重命名。执行顺序:1.fpythonrom 2.where 3.select

语文成绩>80并且不姓孙的同学

mysql> select name,chinese from exam_result where chinese>80 and not(name like '孙%');

孙某同学,否则要求总成绩>200并且语文成绩<数学并且英语成绩>80

mysql> select name,chinese,math,english,chinese+math+english 总分
    -> from exam_result
    -> where (name like '孙_') or (chinese+math+english>200 and chinesee<math and english>80);

null查询

MySQL基本查询示例总结

order by语句

语法:

-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC


SELECT ... FROM table_name [WHERE ...]
ORDER BY column [ASC|DESC], [...];

注意:没有带asc或desc的排序查询,返回的顺序是未定义的。

同学及数学成绩,按数学成绩升序显示:

mysql> select name,math from exam_result order by math asc;

注意:NULL在排序时原则上比任何值都小。

查询同学各门成绩,依次按数学降序,英语升序,语文升序的方式显示:

mysql> select name,math,english,chinese
    -> from exam_result
    -> order by math desc,english desc,chinese asc;

查询同学及总分,从高到低

mysql> select name,math+chinese+english as total 
    -> from exam_result
    -> order by total desc;

这里order by后总分能用别名是因为,order by是后执行的。 

查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示:

mysql> select name,math
    -> from exam_result
    -> where name like '孙%' or name like '曹%'
    -> order by math desc;

limit(分页)

语法:

-- 起始下标为 0
-- 从 s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n
-- 从 0 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
;
-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;

建议:对未知表进行查询时,最好加一条 LIMIT 1,避免因为表中数据过大,查询全表数据导致数据库卡死。
按 id 进行分页,每页 3 条记录,分别显示 第 1、2、3 页

从开头连续读取3行

mysql> select*from exam_result limit 3;

从第2行开始往下读取4行:

mysql> select*from exam_result limit 2,4;

Update(更新)

语法:

UPDATE table_name SET column = expr [, column = expr ...]
[WHERE ...] [ORDER BY ...] [LIMIT ...]

用于对查询到的值进行更新。

将孙悟空同学的数学成绩改为80分

mysql> update exam_result set math=80 where name='孙悟空';

将曹孟德同学的数学成绩改为60分,语文成绩改为70分

mysql> update exam_result set math=60,chinese=70 where name='曹孟德';

将总成绩倒数前三的3位同学的数学成绩加30分

mysql> update exam_result set math=math+30
    -> order by math+chinese+english asc
    -> limit 3;

将所有同学的语文成绩更新为原来的2倍。

Delete(删除)

语法:

DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]

删除孙悟空同学的考试成绩

mysql> delete from exam_result where name='孙悟空';

删除整张表数据:delete from 表名。 

截断表

语法:

TRUNCATE [TABLE] table_name

注意:这个操作慎用

  • 只能对整表操作,不能像 DELETE 一样针对部分数据操作。python
  • 实际上 MySQL 不对数据操作,所以比 DELETE 更快,但是TRUNCATE在删除数据的时候,并不经过真正的事物,所以无法回滚。
  • 会重置 AUTO_INCREMENT 项。
  • delete不会重置AUTO_INCREMENT。

去重表数据

语法:

INSERT INTO table_name [(column [, column ...])] SELECT...

比如China编程我们有一个表:duplicate_table,要对它去重,

首先创建一个相同的表结构

mysql> create table no_duplicate_table like duplicate_table;
mysql> insert into noduplicate_table select distinct * from duplicate_table;

然后把duplicate_table删除,no_duplicate_table重命名为 duplicate_table。

这样的好处在于把一切都准备就绪,然后统一放入、更新、生效等。

聚合统计

聚合函数

函数说明
COUNT([DISTINCT] expr)返回查询到的数据的 数量
SUM([DISTINCT] expr)返回查询到的数据的 总和,不是数字没有意义
AVG([DISTINCT] expr)返回查询到的数据的 平均值,不是数字没有意义
MAX([DISTINCT] expr)返回查询到的数据的 最大值,不是数字没有意义
MIN([DISTINCT] expr)返回查询到的数据的 最小值,不是数字没有意义

测试:

统计班里一共多少学生

或:

mysql> select count(name) from exam_result;

统计数学成绩总分

mysql> select sum(math) from exam_result;

统计平均总分

mysql> select sum(math+chinese+english)/count(name) from exam_result;

或:

mysql> select avg(math+chinese+english) from exam_result;

返回英语最高分

mysql> select max(english) from exam_result;

返回>70分以上的数学最低分

mysql> select min(math) from exam_result where math>70;

group by句子的使用

语法:

select column1, column2, .. from table group by column;

分组:把一组按条件拆分成多个组 。然后在各自组能做统计。在逻辑上相当于拆分成多张"表"。

测试:

MySQL基本查询示例总结

显示每个部门的平均工资和最高工资

select deptno,avg(sal),max(sal) from emp group by deptno;

显示每个部门的每种岗位的平均工资和最低工资

select avg(sal),min(sal),job, deptno from emp group by deptno, job;

显示平均工资低于2000的部门和它的平均工资。having和group by配合使用,对group by结果进行过滤

select avg(sal) as myavg from emp group by deptno having myavg<2000;

having与where的使用方法相同,但它们使用在不同的场景。

  • where:对具体任意列进行统计筛选。
  • having:对分组聚合后的结果进行条件筛选。

到此这篇关于MySQL基本查询示例总结的文章就介绍到这了,更多相关mysql基本查询内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于MySQL基本查询示例总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1154797

相关文章

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

浅谈mysql的not exists走不走索引

《浅谈mysql的notexists走不走索引》在MySQL中,​NOTEXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引,下面就来介绍一下mysql的notexists走不走索... 在mysql中,​NOT EXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引。以下

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字