MySQL数据库,表的增删改查(二)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 本文讲解:表的增删改查。

你可以了解世间万物,但追根溯源的唯一途径便是亲身尝试。——《心灵捕手》


前言:

大家好,上期我们讲到了表的GRUD操作中的新增数据、查询数据以及表中数据的排序、去重等操作,本期讲解条件查询、修改数据、删除数据的简单操作,很容易理解。一起来看看吧。表的增删改查(一)


目录

1、条件查询

1.1比较运算符

1.1.1基本查询

1.1.2范围查询

1.1.3IN查询

1.1.4LIKE查询

1.1.5IS NULL和IS NOT NULL

1.2逻辑运算符

1.2.1AND查询

1.2.2OR用法

1.2.3NOT用法

2、修改数据

3、删除数据

总结:

1、查询

2、修改

3、删除

4、插入


1、条件查询

    • WHERE条件可以使用表达式,但不能使用别名。
    • AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分

    1.1比较运算符

    运算符 说明
    >,>=,<,<= 大于,大于等于,小于,小于等于
    = 等于,NULL不稳定,例如NULL=NULL的结果是NULL
    <=> 等于,NULL稳定,例如NULL<=>NULL的结果是TRUE(1)
    !=,<> 不等于
    BETWEEN a AND b 匹配范围,[a,b],如果a<+value<=b,返回TRUE(1)

    IN(option,...)

    如果是()中的任意一个,就返回TRUE(1)
    IS NULL 是空
    IS NOT NULL 不是空
    LIKE 模糊查询。%表示任意多个(包括0个)任意字符;_表示任意一个字符

    首先我们来创建一个名为student_grade的成绩表:

    mysql> create table student_grade(
        -> id int,
        -> name varchar(20),
        -> english decimal(3,1),
        -> math decimal(3,1),
        -> chinese decimal(3,1)
        -> );
    Query OK, 0 rows affected (0.02 sec)
    mysql> insert into student_grade (id,name,english,math,chinese) values
        -> (1,'Turr',55,66,76),
        -> (2,'Rorric',65,77,65),
        -> (3,'Coline',43,56,76),
        -> (4,'Bob',77,66,64),
        -> (5,'Tom',53,74,66);
    Query OK, 5 rows affected (0.00 sec)
    Records: 5  Duplicates: 0  Warnings: 0

    image.gif

     窗口显示为:

    image.gif编辑


    1.1.1基本查询

    当我们要查询某一条件下的数据,我们直接在where后面写出判断条件,格式为:where 字段(<、>、<=>、!=、<>)数字

    比如我要查询英语不及格的同学即英语成绩 <60的学生。

    mysql> select name,english from student_grade where english <60;
    +--------+---------+
    | name   | english |
    +--------+---------+
    | Turr   |    55.0 |
    | Coline |    43.0 |
    | Tom    |    53.0 |
    +--------+---------+
    3 rows in set (0.00 sec)

    image.gif

     窗口显示:

    image.gif编辑


    当然你也可以进行字段与字段之间的比较,格式为:where 字段1 判断符 字段2;

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

    mysql> select name,chinese ,english from student_grade where chinese>english;
    +--------+---------+---------+
    | name   | chinese | english |
    +--------+---------+---------+
    | Turr   |    76.0 |    55.0 |
    | Coline |    76.0 |    43.0 |
    | Tom    |    66.0 |    53.0 |
    +--------+---------+---------+
    3 rows in set (0.00 sec)

    image.gif

    窗口显示:

    image.gif编辑


    我们也可以给表达式起别名的时候同时进行条件判断,起别名在上一期表的增删改查中详细讲解到了,我们直接用就好了。表达式判断格式为:字段1 算术运算符(+、-、*等) 字段2 算术运算符(+、-、*等) 字段n 条件判断符 数字;

    查询总分在200分以下的同学并且给表达式起名为sum:

    mysql> select name,chinese + math + english sum from student_grade
        -> where chinese + math + english < 200;
    +--------+-------+
    | name   | sum   |
    +--------+-------+
    | Turr   | 197.0 |
    | Coline | 175.0 |
    | Tom    | 193.0 |
    +--------+-------+
    3 rows in set (0.00 sec)

    image.gif

     窗口显示:

    image.gif编辑


    1.1.2范围查询

    当你想查找一个范围里面的数据时,你可以使用between  and 来查询,格式为:select 字段 from 表名 where 字段 between 数字 and 数字;

    比如我要查找语文成绩在70-80之间的同学:

    mysql> select name,chinese from student_grade where chinese between 70 and 80;
    +--------+---------+
    | name   | chinese |
    +--------+---------+
    | Turr   |    76.0 |
    | Coline |    76.0 |
    +--------+---------+
    2 rows in set (0.00 sec)

    image.gif

    窗口显示:

    image.gif编辑

    1.1.3IN查询

    in查询就是查找某一列值满足一堆数字里面的值,格式为:select 字段 from 表名 where 字段 in(数据1,数据n);

    查询数学成绩是56或者66或者77分的同学及数学成绩:

    mysql> select name,math from student_grade where math in(56,66,77);
    +--------+------+
    | name   | math |
    +--------+------+
    | Turr   | 66.0 |
    | Rorric | 77.0 |
    | Coline | 56.0 |
    | Bob    | 66.0 |
    +--------+------+
    4 rows in set (0.00 sec)

    image.gif

    窗口显示:

    image.gif编辑


    1.1.4LIKE查询

    like为模糊查询,分为%和_两中查询。%为 匹配任意多个(包括 0 个)字符。通常查询姓为什么的数据,格式为select 字段 from 表名 where 字段 like '字段%';

    比如我要查询开头为T的所有同学:

    mysql> select name from student_grade where name like 'T%';
    +------+
    | name |
    +------+
    | Turr |
    | Tom  |
    +------+
    2 rows in set (0.00 sec)

    image.gif

    窗口显示:

    image.gif编辑

    _ 匹配严格的一个任意字符,格式为:select 字段 from 表名 where 字段 like'字段_';其中_可以为多个。

    比如我要查询开头为T且姓名长度为三的同学:

    mysql> select name from student_grade where name like 'T__';
    +------+
    | name |
    +------+
    | Tom  |
    +------+
    1 row in set (0.00 sec)

    image.gif

    窗口显示:

    image.gif编辑

    查询名字为T开头且总长度三个字符的同学只需要将姓写在开头加上两个_即可,比如Tom写为'T__'


    1.1.5IS NULL和IS NOT NULL

    由于student_grade表中没有一个值为空,我们来增加几个空值。我们使用多行插入,插入两行信息。怎样插入数据在表的增删改查(一)中有详细介绍。

    mysql> insert into student_grade (name,chinese,math,english) values
        -> (6,'sarah',68,89,NULL),
        -> (7,'Tommy',NULL,60,80);
    Query OK, 2 rows affected (0.00 sec)
    Records: 2  Duplicates: 0  Warnings: 0
    mysql> select * from student_grade;
    +------+--------+---------+------+---------+
    | id   | name   | english | math | chinese |
    +------+--------+---------+------+---------+
    |    1 | Turr   |    55.0 | 66.0 |    76.0 |
    |    2 | Rorric |    65.0 | 77.0 |    65.0 |
    |    3 | Coline |    43.0 | 56.0 |    76.0 |
    |    4 | Bob    |    77.0 | 66.0 |    64.0 |
    |    5 | Tom    |    53.0 | 74.0 |    66.0 |
    |    6 | sarah  |    NULL | 89.0 |    68.0 |
    |    7 | Tommy  |    80.0 | 60.0 |    NULL |
    +------+--------+---------+------+---------+
    7 rows in set (0.00 sec)

    image.gif

    窗口显示:

    image.gif编辑

    is null的用法,is null就是满足空。语法比较简单,我们直接来看实例查询英语成绩为空的学生:

    mysql> select name,english from student_grade where english is null;
    +-------+---------+
    | name  | english |
    +-------+---------+
    | sarah |    NULL |
    +-------+---------+
    1 row in set (0.00 sec)

    image.gif

    窗口显示:

    image.gif编辑

    is not null的用法,is not null就是满足不是空。语法比较简单,我们直接来看实例查找英语成绩非空的学生:

    mysql> select id,name,english,math,chinese from student_grade where english is not null;
    +------+--------+---------+------+---------+
    | id   | name   | english | math | chinese |
    +------+--------+---------+------+---------+
    |    1 | Turr   |    55.0 | 66.0 |    76.0 |
    |    2 | Rorric |    65.0 | 77.0 |    65.0 |
    |    3 | Coline |    43.0 | 56.0 |    76.0 |
    |    4 | Bob    |    77.0 | 66.0 |    64.0 |
    |    5 | Tom    |    53.0 | 74.0 |    66.0 |
    |    7 | Tommy  |    80.0 | 60.0 |    NULL |
    +------+--------+---------+------+---------+
    6 rows in set (0.00 sec)

    image.gif

    窗口显示:

    image.gif编辑


    1.2逻辑运算符

    运算符 说明
    AND 多个条件必须都为TRUE(1),结果才是TRUE(1)
    OR 任意一个条件为TRUE(1),结果为TRUE(1)
    NOT 条件为TRUE(1),结果为FALSE(0)

    1.2.1AND查询

    我们单独用and来查询一个范围内的数据,跟between and相似。只不过and需要两个表达式。格式为:表达式1 and 表达式2

    mysql> select name,chinese from student_grade where chinese >70 and chinese <80;
    +--------+---------+
    | name   | chinese |
    +--------+---------+
    | Turr   |    76.0 |
    | Coline |    76.0 |
    +--------+---------+
    2 rows in set (0.00 sec)

    image.gif

     窗口显示:

    image.gif编辑


    1.2.2OR用法

    or用法是多个表达式组成的,相对于in的用法更为复杂,格式为:select 字段1,字段n from 表名 where 表达式1 or 表达n;

    比如我要查询数学成绩为66、77、74的学生:

    mysql> select name,math from student_grade where math=66 or math=77 or math=74;
    +--------+------+
    | name   | math |
    +--------+------+
    | Turr   | 66.0 |
    | Rorric | 77.0 |
    | Bob    | 66.0 |
    | Tom    | 74.0 |
    +--------+------+
    4 rows in set (0.00 sec)

    image.gif

    窗口显示:

    image.gif编辑


    1.2.3NOT用法

    not是mysql中的一个逻辑运算符,逻辑运算符用来判断表达式的真假。如果表达式是真,结果返回 1。如果表达式是假,结果返回 0。通常用于检测数据库对象是否存在

    mysql> select not 1;
    +-------+
    | not 1 |
    +-------+
    |     0 |
    +-------+
    1 row in set (0.00 sec)
    mysql> select !0;
    +----+
    | !0 |
    +----+
    |  1 |
    +----+
    1 row in set (0.00 sec)

    image.gif

    窗口显示:

    image.gif编辑


    2、修改数据

    修改数据语法:UPDATE table_name SET column = expr [, column = expr ...][WHERE ...] [ORDER BY ...] [LIMIT ...]。其中大写的为关键字。

    比如我是数学老师有一天我看Tom不爽我把他的数学成绩置为0:

    mysql> update student_grade set math=0 where name='Tom';
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    mysql> select name,math from student_grade where name='Tom';
    +------+------+
    | name | math |
    +------+------+
    | Tom  |  0.0 |
    +------+------+
    1 row in set (0.00 sec)

    image.gif

    窗口显示:

    image.gif编辑

    有一天班主任看Tom被数学老师恶意修改了数学成绩,班主任为Tom报不平把Tom的数学成绩置为了满分并且把不及格的英语成绩置为及格:

    mysql> update student_grade set english=60,math=90 where name='Tom';
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    mysql> select name,english,math from student_grade where name='Tom';
    +------+---------+------+
    | name | english | math |
    +------+---------+------+
    | Tom  |    60.0 | 90.0 |
    +------+---------+------+
    1 row in set (0.00 sec)

    image.gif

    窗口显示:

    image.gif编辑

    数学老师看见班主任把Tom的成绩修改回来了,一气之下把数学倒数前三名学生的数学成绩全部置为了0:

    mysql> update student_grade set math=0 order by math limit 3;
    Query OK, 3 rows affected (0.00 sec)
    Rows matched: 3  Changed: 3  Warnings: 0
    mysql> select name,math from student_grade;
    +--------+------+
    | name   | math |
    +--------+------+
    | Turr   |  0.0 |
    | Rorric | 77.0 |
    | Coline |  0.0 |
    | Bob    | 66.0 |
    | Tom    | 90.0 |
    | sarah  | 89.0 |
    | Tommy  |  0.0 |
    +--------+------+
    7 rows in set (0.00 sec)

    image.gif

    窗口显示:

    image.gif编辑

    最后班主任只好妥协了。

    以上就是修改数据的用法。举了个例子,希望你能理解。


    3、删除数据

    删除数据的语法为:DELETE FROM  table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]

    删除关于Tom的所有信息:

    mysql> delete from student_grade where name='Tom';
    Query OK, 1 row affected (0.00 sec)
    mysql> select * from student_grade;
    +------+--------+---------+------+---------+
    | id   | name   | english | math | chinese |
    +------+--------+---------+------+---------+
    |    1 | Turr   |    55.0 |  0.0 |    76.0 |
    |    2 | Rorric |    65.0 | 77.0 |    65.0 |
    |    3 | Coline |    43.0 |  0.0 |    76.0 |
    |    4 | Bob    |    77.0 | 66.0 |    64.0 |
    |    6 | sarah  |    NULL | 89.0 |    68.0 |
    |    7 | Tommy  |    80.0 |  0.0 |    NULL |
    +------+--------+---------+------+---------+
    6 rows in set (0.00 sec)

    image.gif

    窗口显示:

    image.gif编辑

    删除student_grade整张表:

    窗口显示:

    image.gif编辑


    总结:

    1、查询

    全列查询
    select * from 表
    指定列查询

    select 字段1,字段2... from 表
    查询表达式字段
    select 字段1+100,字段2+字段3 from 表
    别名
    select 字段1 别名1, 字段2 别名2 from 表
    去重DISTINCT
    select distinct 字段 from 表
    排序ORDER BY
    select * from 表 order by 排序字段
    条件查询WHERE
    (1)比较运算符 (2)BETWEEN ... AND ... (3)IN (4)IS NULL (5)LIKE (6)AND (7)OR
    (8)NOT
    select * from 表 where 条件

    2、修改

    update 表 set 字段1=value1, 字段2=value2... where 条件

    3、删除

    delete from 表 where 条件

    4、插入

    多行插入
    insert into 表(字段1, ..., 字段N) values
    (value1, ...),
    (value2, ...),
    (value3, ...);


    本期博客到这里就结束了,如有收获,还请三连博主,感谢了!

    image.gif编辑

    Never Give Up

    相关实践学习
    如何在云端创建MySQL数据库
    开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
    全面了解阿里云能为你做什么
    阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
    相关文章
    |
    6天前
    |
    SQL 关系型数据库 MySQL
    学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
    课程分类查询、课程新增、统一异常处理、统一封装结果类、JSR303校验、修改课程、查询课程计划、新增/修改课程计划
    学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
    |
    25天前
    |
    JavaScript 关系型数据库 MySQL
    node连接mysql,并实现增删改查功能
    【8月更文挑战第26天】node连接mysql,并实现增删改查功能
    42 3
    |
    1月前
    |
    SQL 数据库连接 API
    ThinkPHP6实现增删改查接口
    ThinkPHP6实现增删改查接口
    29 1
    |
    1月前
    |
    XML 数据库 数据格式
    Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】
    这篇文章是Spring5框架的实战教程的终结篇,介绍了如何使用注解而非XML配置文件来实现JdbcTemplate的数据库操作,包括增删改查和批量操作,通过创建配置类来注入数据库连接池和JdbcTemplate对象,并展示了完全注解开发形式的项目结构和代码实现。
    Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】
    |
    1月前
    |
    SQL XML Java
    Spring5入门到实战------12、使用JdbcTemplate操作数据库(增删改查)。具体代码+讲解 【上篇】
    这篇文章是Spring5框架的实战教程,详细讲解了如何使用JdbcTemplate进行数据库的增删改查操作,包括在项目中引入依赖、配置数据库连接池、创建实体类、定义DAO接口及其实现,并提供了具体的代码示例和测试结果,最后还提供了完整的XML配置文件和测试代码。
    Spring5入门到实战------12、使用JdbcTemplate操作数据库(增删改查)。具体代码+讲解 【上篇】
    |
    1月前
    |
    关系型数据库 MySQL 大数据
    C#使用SqlSugar操作MySQL数据库实现简单的增删改查
    C#使用SqlSugar操作MySQL数据库实现简单的增删改查
    148 2
    |
    23天前
    |
    开发工具 数据安全/隐私保护 索引
    LDAP学习笔记之二:389-DS(RHDS) 增删改查基本操作
    LDAP学习笔记之二:389-DS(RHDS) 增删改查基本操作
    |
    23天前
    |
    关系型数据库 MySQL 数据库
    MySQL数据库的增删改查
    MySQL数据库的增删改查
    12 0
    |
    30天前
    |
    SQL 关系型数据库 MySQL
    "Python与MySQL的浪漫邂逅:一键掌握增删改查,开启你的数据库编程之旅!"
    【8月更文挑战第21天】Python因其简洁的语法和强大的库支持,成为连接数据库的首选工具。本文介绍如何使用Python连接MySQL数据库并执行基本操作。首先需安装`mysql-connector-python`库。通过配置连接信息建立数据库连接后,可利用`cursor.execute()`执行SQL语句进行数据的增删改查,并通过`commit()`提交更改。查询时使用`fetchall()`或`fetchone()`获取结果。记得处理异常及关闭连接以释放资源。掌握这些基础,有助于高效进行数据库编程。
    27 0
    |
    1月前
    |
    druid Java 数据库连接
    SpringBoot项目整合MybatisPlus持久层框架+Druid数据库连接池,以及实现增删改查功能
    SpringBoot项目整合MybatisPlus和Druid数据库连接池,实现基本的增删改查功能。
    158 0

    热门文章

    最新文章