【MySQL】增删改查操作(基础)

文章目录

  • 1、新增操作(Create)
    • 1.1单行数据+全列插入
    • 1.2多行数据+指定列插入
  • 2、查询操作(Retrieve)
    • 2.1全列查询
    • 2.2指定列查询
    • 2.3指定列查询
    • 2.4别名(as)
    • 2.5去重(distinct)
    • 2.6排序(order by)
    • 2.7条件查询(where)
    • 2.8分页查询(limit)
  • 3、修改操作(Update)
  • 4、删除操作(Delete)


1、新增操作(Create)

在我们的数据库中,用insert into来进行新增操作,首先我们需要一张表
注意:在进行下列操作时,要选中数据库进行操作

mysql> create table student(id int, name varchar(20));
Query OK, 0 rows affected (0.02 sec)

1.1单行数据+全列插入

一次只插入一行,每一行都会插入数据

insert into 表名 values (,...);

举例如下:

mysql> insert into student values(1,'张三');
Query OK, 1 row affected (0.01 sec)

1.2多行数据+指定列插入

insert into student (表名,表名...) values (,...);

举例如下:

mysql> insert into student (id, name) values (2, '李四'),(3, '王五');
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

这里通过 mysql 客户端给出的信息,也能看到我们成功插入了 2 行数据
注意:values()括号中的内容,个数和类型一定要和表的结构匹配

2、查询操作(Retrieve)

创建考试成绩表

create table exam_result(id int, 
    name varchar(20), 
    chinese decimal(3,1), 
    math decimal(3,1), 
    english decimal(3,1)
);

插入测试数据

insert into exam_result (id, name, chinese, math, english) values
    (1, '唐三藏', 67, 98, 56), 
    (2, '孙悟空', 87.5, 78, 77), 
    (3, '猪悟能', 88, 98, 90), 
    (4, '曹孟德', 82, 84, 67), 
    (5, '刘玄德', 55.5, 85, 45), 
    (6, '孙权', 70, 73, 78.5), 
    (7, '宋公明', 75, 65, 30);

2.1全列查询

查询表里的所有列,*表示通配符

     --select * from 表名
mysql> select * from exam_result;
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    1 | 唐三藏    |    67.0 | 98.0 |    56.0 |
|    2 | 孙悟空    |    87.5 | 78.0 |    77.0 |
|    3 | 猪悟能    |    88.0 | 98.0 |    90.0 |
|    4 | 曹孟德    |    82.0 | 84.0 |    67.0 |
|    5 | 刘玄德    |    55.5 | 85.0 |    45.0 |
|    6 | 孙权      |    70.0 | 73.0 |    78.5 |
|    7 | 宋公明    |    75.0 | 65.0 |    30.0 |
+------+-----------+---------+------+---------+
7 rows in set (0.00 sec)

2.2指定列查询

这个查询不用按照表中列的顺序来查询,只要表中包含该列即可:

     --select 列名, 列名... from 表名;
mysql> select id, name from exam_result;
+------+-----------+
| id   | name      |
+------+-----------+
|    1 | 唐三藏    |
|    2 | 孙悟空    |
|    3 | 猪悟能    |
|    4 | 曹孟德    |
|    5 | 刘玄德    |
|    6 | 孙权      |
|    7 | 宋公明    |
+------+-----------+
7 rows in set (0.00 sec)

2.3指定列查询

查询每位同学语文成绩+10分的结果

mysql> select name, chinese+10 from exam_result;
+-----------+------------+
| name      | chinese+10 |
+-----------+------------+
| 唐三藏    |       77.0 |
| 孙悟空    |       97.5 |
| 猪悟能    |       98.0 |
| 曹孟德    |       92.0 |
| 刘玄德    |       65.5 |
| 孙权      |       80.0 |
| 宋公明    |       85.0 |
+-----------+------------+
7 rows in set (0.00 sec)

查询每个同学的总成绩

mysql> select name, chinese + math + english from exam_result;
+-----------+--------------------------+
| name      | chinese + math + english |
+-----------+--------------------------+
| 唐三藏    |                    221.0 |
| 孙悟空    |                    242.5 |
| 猪悟能    |                    276.0 |
| 曹孟德    |                    233.0 |
| 刘玄德    |                    185.5 |
| 孙权      |                    221.5 |
| 宋公明    |                    170.0 |
+-----------+--------------------------+
7 rows in set (0.00 sec)

注意:select 只是查询,并不会修改原来表中的数据,而查询的结果是一个 “临时表”,这个查询出来的表是不会写到硬盘里面去的

2.4别名(as)

为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称

mysql> select name, chinese + math + english as total from exam_result;
+-----------+-------+
| name      | total |
+-----------+-------+
| 唐三藏    | 221.0 |
| 孙悟空    | 242.5 |
| 猪悟能    | 276.0 |
| 曹孟德    | 233.0 |
| 刘玄德    | 185.5 |
| 孙权      | 221.5 |
| 宋公明    | 170.0 |
+-----------+-------+
7 rows in set (0.00 sec)

2.5去重(distinct)

     --98重复了
mysql> select math from exam_result;
+------+
| math |
+------+
| 98.0 |
| 78.0 |
| 98.0 |
| 84.0 |
| 85.0 |
| 73.0 |
| 65.0 |
+------+
7 rows in set (0.00 sec)
     --去重结果:
mysql> select distinct math from exam_result;
+------+
| math |
+------+
| 98.0 |
| 78.0 |
| 84.0 |
| 85.0 |
| 73.0 |
| 65.0 |
+------+
6 rows in set (0.01 sec)

2.6排序(order by)

要想让查询的结果“有序”就必须手动使用order by语句,让MySQL主动排序

     --select * from 表名 order by 列名/表达式;
mysql> select * from exam_result order by chinese;
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    5 | 刘玄德    |    55.5 | 85.0 |    45.0 |
|    1 | 唐三藏    |    67.0 | 98.0 |    56.0 |
|    6 | 孙权      |    70.0 | 73.0 |    78.5 |
|    7 | 宋公明    |    75.0 | 65.0 |    30.0 |
|    4 | 曹孟德    |    82.0 | 84.0 |    67.0 |
|    2 | 孙悟空    |    87.5 | 78.0 |    77.0 |
|    3 | 猪悟能    |    88.0 | 98.0 |    90.0 |
+------+-----------+---------+------+---------+
7 rows in set (0.00 sec)

此处默认是按照升序排序,如果要使用降序排序,需要加上desc关键字

mysql> select * from exam_result order by chinese desc;
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    3 | 猪悟能    |    88.0 | 98.0 |    90.0 |
|    2 | 孙悟空    |    87.5 | 78.0 |    77.0 |
|    4 | 曹孟德    |    82.0 | 84.0 |    67.0 |
|    7 | 宋公明    |    75.0 | 65.0 |    30.0 |
|    6 | 孙权      |    70.0 | 73.0 |    78.5 |
|    1 | 唐三藏    |    67.0 | 98.0 |    56.0 |
|    5 | 刘玄德    |    55.5 | 85.0 |    45.0 |
+------+-----------+---------+------+---------+
7 rows in set (0.00 sec)

也可以按照别名的方式进行order by直接表达式是一样的

mysql> select name, chinese + math + english as total from exam_result order by total;
+-----------+-------+
| name      | total |
+-----------+-------+
| 宋公明    | 170.0 |
| 刘玄德    | 185.5 |
| 唐三藏    | 221.0 |
| 孙权      | 221.5 |
| 曹孟德    | 233.0 |
| 孙悟空    | 242.5 |
| 猪悟能    | 276.0 |
+-----------+-------+
7 rows in set (0.00 sec)

order by 也可以指定多个列排序,通过多个列排序约定更复杂的比较规则

     --select * from 表名 order by 列名[desc], 列名[desc];
     --先按照第一列排序,第一列相同了,再按照第二列排序
mysql> select * from exam_result order by math desc,chinese desc;
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    3 | 猪悟能    |    88.0 | 98.0 |    90.0 |
|    1 | 唐三藏    |    67.0 | 98.0 |    56.0 |
|    5 | 刘玄德    |    55.5 | 85.0 |    45.0 |
|    4 | 曹孟德    |    82.0 | 84.0 |    67.0 |
|    2 | 孙悟空    |    87.5 | 78.0 |    77.0 |
|    6 | 孙权      |    70.0 | 73.0 |    78.5 |
|    7 | 宋公明    |    75.0 | 65.0 |    30.0 |
+------+-----------+---------+------+---------+
7 rows in set (0.00 sec)

2.7条件查询(where)

比较运算符:
在这里插入图片描述
逻辑运算符:
在这里插入图片描述
注意:
1.WHERE条件可以使用表达式,但不能使用别名。
2.AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分

查询语文成绩大于60分的同学:

mysql> select name, chinese from exam_result where chinese > 60;
+-----------+---------+
| name      | chinese |
+-----------+---------+
| 唐三藏    |    67.0 |
| 孙悟空    |    87.5 |
| 猪悟能    |    88.0 |
| 曹孟德    |    82.0 |
| 孙权      |    70.0 |
| 宋公明    |    75.0 |
+-----------+---------+
6 rows in set (0.01 sec)

数据库服务器收到SQL之后就会遍历表中的每一个数据(行)取出当前行,带入到条件之中,如果条件成立,当前这一行数据就会进入到结果集合中,如果不成立,跳过进入下一行
上述条件查询的过程,可以理解成按照条件进行“筛选”

可以在条件选择的时候使用order by来排序
(如果没有显示使用order by,顺序是不可预期的)

mysql> select name, chinese from exam_result where chinese > 60 order by chinese;
+-----------+---------+
| name      | chinese |
+-----------+---------+
| 唐三藏    |    67.0 |
| 孙权      |    70.0 |
| 宋公明    |    75.0 |
| 曹孟德    |    82.0 |
| 孙悟空    |    87.5 |
| 猪悟能    |    88.0 |
+-----------+---------+
6 rows in set (0.00 sec)

查询语文成绩大于80或者英语大于60的同学:

mysql> select name, chinese, english from exam_result where chinese > 80 or english > 60;
+-----------+---------+---------+
| name      | chinese | english |
+-----------+---------+---------+
| 孙悟空    |    87.5 |    77.0 |
| 猪悟能    |    88.0 |    90.0 |
| 曹孟德    |    82.0 |    67.0 |
| 孙权      |    70.0 |    78.5 |
+-----------+---------+---------+
4 rows in set (0.01 sec)

查询数学成绩在[80 90]的同学:

mysql> select name, math from exam_result where math >= 80 and math <= 90;
+-----------+------+
| name      | math |
+-----------+------+
| 曹孟德    | 84.0 |
| 刘玄德    | 85.0 |
+-----------+------+
2 rows in set (0.00 sec)
mysql> select name, math from exam_result where math between 80 and 90;
+-----------+------+
| name      | math |
+-----------+------+
| 曹孟德    | 84.0 |
| 刘玄德    | 85.0 |
+-----------+------+
2 rows in set (0.00 sec)

上述两种写法都是可以的

查询英语成绩是56分,67分,77分的同学:

mysql> select name, english from exam_result where english in(56,67,77);
+-----------+---------+
| name      | english |
+-----------+---------+
| 唐三藏    |    56.0 |
| 孙悟空    |    77.0 |
| 曹孟德    |    67.0 |
+-----------+---------+
3 rows in set (0.00 sec)
mysql> select name, english from exam_result where english = 56 or english = 67 or english = 77;
+-----------+---------+
| name      | english |
+-----------+---------+
| 唐三藏    |    56.0 |
| 孙悟空    |    77.0 |
| 曹孟德    |    67.0 |
+-----------+---------+
3 rows in set (0.00 sec)

上述这两种也是可以的

查询姓‘孙’的同学:
%匹配任意多个(包括0个)字符

mysql> select name from exam_result where name like '孙%';
+-----------+
| name      |
+-----------+
| 孙悟空    |
| 孙权      |
+-----------+
2 rows in set (0.00 sec)

_匹配严格的一个任意字符

mysql> select name from exam_result where name like '孙_';
+--------+
| name   |
+--------+
| 孙权   |
+--------+
1 row in set (0.00 sec)

查询没有数学成绩的同学:

mysql> select name, math from exam_result where math is null;
Empty set (0.00 sec)

查询有数学成绩的同学:

mysql> select name, math from exam_result where math is not null;
+-----------+------+
| name      | math |
+-----------+------+
| 唐三藏    | 98.0 |
| 孙悟空    | 78.0 |
| 猪悟能    | 98.0 |
| 曹孟德    | 84.0 |
| 刘玄德    | 85.0 |
| 孙权      | 73.0 |
| 宋公明    | 65.0 |
+-----------+------+
7 rows in set (0.00 sec)

2.8分页查询(limit)

分页查询,限制了每次查询显示的最多为多少条数据,比如我们现在只查询俩条数据:

mysql> select * from exam_result limit 2;
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    1 | 唐三藏    |    67.0 | 98.0 |    56.0 |
|    2 | 孙悟空    |    87.5 | 78.0 |    77.0 |
+------+-----------+---------+------+---------+
2 rows in set (0.00 sec)

搭配offset关键字,offset称为偏移量(相当于下标),offset默认是从0开始的

mysql> select * from exam_result limit 2 offset 2;
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    3 | 猪悟能    |    88.0 | 98.0 |    90.0 |
|    4 | 曹孟德    |    82.0 | 84.0 |    67.0 |
+------+-----------+---------+------+---------+
2 rows in set (0.00 sec)

3、修改操作(Update)

     --update 表名 set 列名 = 值 where 条件
mysql> update exam_result set english = 56 where name = '曹孟德';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
     --修改结果:
mysql> select name, english from exam_result;
+-----------+---------+
| name      | english |
+-----------+---------+
| 唐三藏    |    56.0 |
| 孙悟空    |    77.0 |
| 猪悟能    |    90.0 |
| 曹孟德    |    56.0 |
| 刘玄德    |    45.0 |
| 孙权      |    78.5 |
| 宋公明    |    30.0 |
+-----------+---------+
7 rows in set (0.00 sec)

修改多个列,set后面写多组列,分别进行= 赋值即可
修改操作也可以借助一些表达式,还可以搭配order by 和 limit
如果update不指定任何条件,所有的数据都会被修改

4、删除操作(Delete)

     --delete from 表名 where 条件;
mysql> delete from exam_result where name = '宋公明';
Query OK, 1 row affected (0.01 sec)
     --删除结果
mysql> select * from exam_result;
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    1 | 唐三藏    |    67.0 | 98.0 |    56.0 |
|    2 | 孙悟空    |    87.5 | 78.0 |    77.0 |
|    3 | 猪悟能    |    88.0 | 98.0 |    90.0 |
|    4 | 曹孟德    |    82.0 | 84.0 |    56.0 |
|    5 | 刘玄德    |    55.5 | 85.0 |    45.0 |
|    6 | 孙权      |    70.0 | 73.0 |    78.5 |
+------+-----------+---------+------+---------+
6 rows in set (0.00 sec)

注意:删除操作也是在操作数据库服务器的硬盘,需要小心
delete 的操作,后面的条件是可以跟 update 一样的,支持 where,order by,limit 等操作
如果没有写任何条件,那就是把整个表中的数据都删除了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/520184.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构—图

图的基本概念 图就是由顶点的有穷非空集合和顶点之间的边组成的集合。通常表示为&#xff1a;G(V,E)&#xff0c;其中&#xff0c;G 表示一个图&#xff0c;V 表示顶点的集合&#xff0c;E 表示边的集合。 顶点 图中的数据元素&#xff0c;我们称之为顶点&#xff0c;图至少有…

常见现代卷积神经网络(Pytorch 09)

本章将介绍现代的 卷积神经网络架构&#xff0c;许多现代卷积神经网络的研究都是建立在这一章的基础上的。在本章中的每一个模型都曾一度占据主导地位&#xff0c;其中许多模型都是 ImageNet竞赛 的优胜者。ImageNet竞赛自2010年以来&#xff0c;一直是计算机视觉中监督学习进展…

面试题——JVM老年代空间担保机制(我的想法)

这里借用一下人家的图&#xff0c;来说一下我的想法&#xff0c;嘻嘻。。。。 原文链接&#xff1a;一道面试题&#xff1a;JVM老年代空间担保机制-CSDN博客? 嗯&#xff0c;我觉得老年代担保机制的主要作用就是避免频繁触发FULL GC&#xff0c;这其实也是因为年轻代Minor GC…

Java项目:基于Springboot+vue社区医院管理系统设计与实现(源码+数据库+毕业论文)

一、项目简介 本项目是一套基于Springbootvue社区医院管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、功能…

数据结构之顺序表的相关知识点及应用

个人主页&#xff08;找往期文章包括但不限于本期文章中不懂的知识点&#xff09;&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 目录 顺序表的概念及结构 顺序表的分类 顺序表的实现 在顺序表中增加数据 在顺序表中删除数据 在顺序表中查找数据 顺序表源码 顺序表的概念…

浮动辊位移测量功能块(CODESYS ST代码)

1、张力测量+标定(ST代码) 张力测量+标定(ST代码)_动态舞轮控制张力-CSDN博客文章浏览阅读804次。跳舞轮对应张力调节范围,我们可以通过改变气缸的气压方式间接改变,张力跳舞轮在收放卷闭环控制上的详细应用,可以参看下面的文章链接,这里我们主要讨论精密可调气阀的模拟量…

Java | Leetcode Java题解之第6题Z字形变换

题目&#xff1a; 题解&#xff1a; class Solution {public String convert(String s, int numRows) {int n s.length(), r numRows;if (r 1 || r > n) {return s;}int t r * 2 - 2;int c (n t - 1) / t * (r - 1);char[][] mat new char[r][c];for (int i 0, x …

[Spring Cloud] gateway全局异常捕捉统一返回值

文章目录 处理转发失败的情况全局参数同一返回格式操作消息对象AjaxResult返回值状态描述对象AjaxStatus返回值枚举接口层StatusCode 全局异常处理器自定义通用异常定一个自定义异常覆盖默认的异常处理自定义异常处理工具 在上一篇章时我们有了一个简单的gateway网关 [Spring C…

比selenium体验更好的ui自动化测试工具: cypress介绍

话说 Cypress is a next generation front end testing tool built for the modern web. And Cypress can test anything that runs in a browser.Cypress consists of a free, open source, locally installed Test Runner and a Dashboard Service for recording your tests.…

leetcode077——排序链表

题目&#xff1a; 给定链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4] 思路&#xff1a; 1.找链表中点【使用快慢指针 慢指针每次移动一步&#xff0c;快指针每…

基于单片机12864的出租车计价器设计

**单片机设计介绍&#xff0c;基于单片机12864的出租车计价器设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机和12864液晶显示屏的出租车计价器设计&#xff0c;主要是利用单片机的强大控制能力和液晶显示屏的直观显示特性&…

牛客网BC-125 序列中整数去重复(难题讲解)

题目如下 --------------------------------------------------------------------------------------------------------------------------------- 题目讲解&#xff08;思路&#xff09; -------------------------------------------------------------------------------…

单一职责原则

1.1 阅读干吗不直接用手机&#xff1f; 电子阅读器比较专注&#xff0c;而手机功能比较多&#xff0c;影响专注。 1.2 手机不纯粹 手机确实很方便。但是现在的手机就是一台小型智能电脑。它不仅能打电话&#xff0c;还能听音乐、看电影电视、与个人交流、与一群人群聊&#…

基于java+SpringBoot+Vue的大学生入学审核系统设计与实现

基于javaSpringBootVue的大学生入学审核系统设计与实现 开发语言: Java 数据库: MySQL技术: SpringBoot VUE工具: IDEA/Eclipse、Navicat、Maven 系统展示 前台展示 入学办理模块&#xff1a;学生可以提交入学申请并跟踪入学办理进度。 后台展示 学生管理模块&#xff1…

【Docker系列】在 Linux 上安装 Docker Compose 的简明步骤

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

前端学习之DOM编程案例:抽奖案例

代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>抽奖案例</title><style>*{margin: 0;padding: 0;}</style> </head> <body><div id"container"&g…

【放假第3天】幻兽帕鲁 雾锁王国 我的世界 游戏云服务器选购指南 附最新价格对比表 新手、小白秒懂

更新日期&#xff1a;4月6日&#xff08;半年档 价格回调&#xff0c;京东云采购季持续进行&#xff09; 本文纯原创&#xff0c;侵权必究 【云服务器推荐】价格对比&#xff01;阿里云 京东云 腾讯云 选购指南视频截图 《最新对比表》已更新在文章头部—腾讯云文档&#xf…

LeetCode 1483.树节点的第 K 个祖先:树上倍增

【LetMeFly】1483.树节点的第 K 个祖先&#xff1a;树上倍增 力扣题目链接&#xff1a;https://leetcode.cn/problems/kth-ancestor-of-a-tree-node/ 给你一棵树&#xff0c;树上有 n 个节点&#xff0c;按从 0 到 n-1 编号。树以父节点数组的形式给出&#xff0c;其中 paren…

redis主从复制与哨兵模式

redis主从复制 Redis主从复制&#xff08;Redis replication&#xff09;是Redis提供的一种数据备份和故障转移机制。通过主从复制&#xff0c;可以将一个Redis服务器&#xff08;主节点&#xff09;的数据复制到一个或多个Redis服务器&#xff08;从节点&#xff09;。这样做…

【面经】interrupt()、interrupted()和isInterrupted()的区别与使用

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;面经 ⛺️稳中求进&#xff0c;晒太阳 interrupt方法 如果打断线程正在sleep&#xff0c;wait&#xff0c;join会导致被打断的线程抛出InterruptedException&#xff0c;并清除打断标记。如…