MySQL表的基本查询详细图文教程!

MySQL表的基本查询详细图文教程!

这篇文章主要给大家介绍了关于MySQL表的基本查询的相关资料,需要的朋友可以参考下。

1,创建表

前面基础的文章已经讲了很多啦,直接上操作:

2024103110313067

非常简单!下一个!

2,插入数据

1,全列插入

前面也说很多了,直接上操作:

20241212048

以上插入和全列插入类似,全列插入也可以这样写:

20241212047

注意,后面插入的数据数量必须和定义表的列的数量及顺序一致

2,多行数据 + 指定列插入

插入两条记录,value_list 数量必须和指定列数量及顺序一致

操作:

20241212046

如果需要用一条语句插入多行数据,可以在values后面用逗号隔开然后加入数据:

20241212045

3,插入否,则更新

由于 主键 或者 唯一键 对应的值已经存在而导致插入失败

可以选择性的进行同步更新操作语法:

on duplicate key update = 。。。。。

20241212044

可以看到,因为主键冲突所以无法插入数据,那么我又不想要id为1的数据,这个时候就可以用上面的语法:

20241212043

可以看到,表中的第一行数据被更新了。

3,替换

用法:

-- 主键 或者 唯一键 没有冲突,则直接插入;

20241212042

-- 主键 或者 唯一键 如果冲突,则删除后再插入

20241212041

我们可以用创建成功后的提示来看有没有数据冲突:

-- 1 row affected: 表中没有冲突数据,数据被插入

-- 2 row affected: 表中有冲突数据,删除后重新插入

20241212040

创建表和插入数据讲完之后,就可以开始我们的主题了:表的查询!

4,表的查询

首先我们来快速创建一个表,让我们可以方便查询:

20241212039

具体指令:

创建表指令:

1
CREATE TABLE exam_result ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) NOT NULL COMMENT '同学姓名', chinese float DEFAULT 0.0 COMMENT '语文成绩', math float DEFAULT 0.0 COMMENT '数学成绩', english float DEFAULT 0.0 COMMENT '英语成绩' );

插入表指令:

1
INSERT INTO exam_result (name, chinese, math, english) VALUES ('唐三藏', 67, 98, 56), ('孙悟空', 87, 78, 77), ('猪悟能', 88, 98, 90), ('曹孟德', 82, 84, 67), ('刘玄德', 55, 85, 45), ('孙权', 70, 73, 78), ('宋公明', 75, 65, 30);

1,select列

1,全列查询

通常情况下不建议使用 * 进行全列查询

1. 查询的列越多,意味着需要传输的数据量越大;

2. 可能会影响到索引的使用。(索引待后面讲解)

操作:

20241212038

2,指定列查询

操作:

20241212037

3,查询字段为表达式

20241212036

可以看到,可以进行运算并显示在表中。

4,为查询结果指定别名

操作:在加算表达式后面加as加要命名的名字

20241212035

其中,as可以省略:

20241212034

5,结果去重

我们想去差个成绩,看全班分数的整体趋势,为此要求分数不重复,而我们看到math里分数有重复的部分,那么我们怎么解决这个分数重复的问题?

20241212033

去重!语法:在列名前加distinct:

20241212032

可以看到,表中的数据被去重

2,where语句

我们可以用where语句来做判断来查询表,具体判断的表达式:

20241212030

20241212031

我们用例子来描述上面操作符的使用:

1 英语不及格的同学及英语成绩 ( < 60 )

20241212029

可以用比较来筛选出想要的数据。

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

这个时候,可以引入一个指令:and,它代表的是且命令,就和C++中的&&差不多

20241212028

也可以用between来查询,操作如下:

20241212027

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

这里面可以用or指令来完成,or相当于C++里的||:

20241212026

当然,这样写比较麻烦,那么可以使用in条件来写:

20241212025

这些写会比第一种方法好看。

4,姓孙的同学 及 孙某同学

这时候得引入模糊查找和%:

20241212024

可以看到,孙后面的名字都查到了,但是如果只想要后面只有一个字的怎么操作?

20241212023

可以看到,用_可以指定后面跟多少字

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

可以打印列表与列表的比较:

20241212022

6,总分在 200 分以下的同学

20241212021

可以用表相加减得出,但是不能用给表启的名字做比较,因为语句执行的顺序不一样:

20241212020

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

20241212019

这里用到了like和not连用

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

20241212018

9,NULL 的查询

先创建表

20241212017

查询 qq 号已知的id:

20241212016

NULL 和 NULL 的比较,= 和 的区别

20241212015

20241212014

3,结果排序
语法:

-- ASC 为升序(从小到大)

-- DESC 为降序(从大到小)

-- 默认为 ASC

注意:没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序

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

20241212013

2,同学及数学成绩,按数学成绩降序显示

20241212012

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

20241212011

4,查询同学及总分,由高到低

20241212010

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

20241212009

4,筛选分页结果

关键字:limit

只显示前几行

操作:

20241212008

20241212007

20241212006

可以看到,limit前加的数字代表从第几行开始,第二个数字代表往下显示几行

可以用关键字offset来表示第几行开始:

20241212005

总结

到此这篇关于MySQL表的基本查询的文章就介绍到这了。

 

 

学习资料见知识星球。

以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。

快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利​​​​!

更多技巧, www.excelbook.cn

欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;

电商数据分析360°实战攻略!

你将获得:

1、价值上万元的专业的PPT报告模板。

2、专业案例分析和解读笔记。

3、实用的Excel、Word、PPT技巧。

4、VIP讨论群,共享资源。

5、优惠的会员商品。

6、一次付费只需99元,即可下载本站文章涉及的文件和软件。

阅读剩余
THE END