MySQL表的增删查改【基础部分】

2024-05-10 21:28

本文主要是介绍MySQL表的增删查改【基础部分】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据表的操作

新增

普通插入

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

注意: 此处的值要和表中的列相匹配

使用’‘单引号或者”“双引号来表示字符串

mysql> insert into student values(123,'zhangsan');
Query OK, 1 row affected (0.02 sec)

指定列插入

insert into 表名(列名,列名..)values(值,值..);
后面的值要与前面的列相对应
mysql> insert into student(name) values('lisi');
Query OK, 1 row affected (0.00 sec)

在这里插入图片描述
注意: 当我们指定列插入的时候,没有被指定的那一行(即没有插入数据的那一行则被填充为默认值;此处默认值为null

一次插入多行

insert into 表名 values(值,值...),(值,值...);
mysql> insert into student values(3,'天天'),(4,'多多');
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

注意: 一次插入多行记录,相比于一次插入一行,分多次插入要快很多

DATETIME类型插入

(1)
可以是用一个固定格式的字符串,来表示时间日期

insert into student values(1,'zhangsan','2002-01-01 12:00:00');

(2)直接获取当前的时间

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

直接使用now()

查询

null参与任何运算以后,结果还是null

全列查询

select*from 表名;

把表中的所有行和所有列都查询出来

mysql> select*from student;
+------+----------+---------------------+
| id   | name     | birthday            |
+------+----------+---------------------+
|    1 | zhangsan | 2024-05-08 13:20:22 |
+------+----------+---------------------+
1 row in set (0.01 sec)

指定列查询

 select 列名,列名..from 表名;

比全列查询更加高效

查询字段为表达式

一边查询一边计算,在查询的时候,写作由列名构成的表达式,把这一列中的所有行都带入表达式中参与运算
(1)
在这里插入图片描述
(2)计算每个同学的总成绩
在这里插入图片描述
==(3)注意:==表达式查询是列和列之间的运算,把每一行都带入到这样的运算中,不是行与行之间的运算

查询的时候给列/表达式/表指定别名

select 表达式/列名 as 别名 from 表名;

as也可以省略,但是我们一般不建议省略
在这里插入图片描述

去重

distinct 修饰某个列/多个列值相同的行,只会保留一个

select distinct 列名 from 表名;

在这里插入图片描述
==注意:==如果distinct有多个列时,只有当它这两列对应的行信息完全相同时才会去重

查询的时候排序

把行进行排序
明确排序规则
(1)针对哪个列作为比较规则
(2)排序的时候是升序还是降序

select 列名 from 表名 order by 列名 asc/desc;

PS:(1)order by 列名,这块的列名是指定某个列进行排序;
asc表示升序排序,desc表示降序排序,如果没有写这两个,那么默认为升序排序

(2)mysql是一个客户端服务器结构的程序,把请求发给服务器之后,服务器进行查询数据,并且把查询到的结果进行排序之后,再组织成响应数据返回客户端**(排序仍然是针对临时数据来展开的,此处的排序不影响原有数据在mysql服务器上存储的顺序)**
在这里插入图片描述
(3)在这里插入图片描述(4)根据表达式进行排序
在这里插入图片描述
PS:在使用表达式的时候可以使用别名
在这里插入图片描述
(5)指定多个列来排序(重要),即order by后面有多个列,多个列之间使用,来分割开
在这里插入图片描述
多个列之间排序是有优先级的,写在前面的先排序,后面的依次

条件查询(重要)

会指定具体的条件,按照条件针对数据进行筛选

select 列名 from 表名 where 条件;

遍历这个表的每一行记录,把每一行的数据分别带入到条件中,如果条件成立,这个记录会被放入结果集合中;如果条件不成立,这个记录会被pass
(1)比较运算符
在这里插入图片描述
(2)逻辑运算符
在这里插入图片描述
PS:不能使用别名来汇总表达式将其使用在比较查询中(不能在where语句中使用别名)
(3)like详细说明
like模糊匹配:使用通配符,就是一些特殊的字符来表示一些特定的含义;
%:代指任意个任意字符;_:代指一个任意字符
在这里插入图片描述
PS:【1】0个字符也可以被%匹配出来,如下图所示
在这里插入图片描述
【2】%的使用:孙%:查询以 孙 开头的内容;%孙: 查询以 孙 结尾的内容;%孙%: 查询包含孙的.

总结: 此处模糊查询的功能是有限的,就像没有办法查询名字中带两个孙的这样的列及内容;
但在计算机中,进行模糊匹配字符串还有‘正则表达式’,通过这样的方式实现,但是正则表达式匹配速度很慢

正则表达式: javaSE中String的一个方法split,参数其实就是一个正则表达式;比如按照 . 来切分,就需要写作 “\.”;如果是有原始字符串,就可以写简单了

分页查询(LIMIT)

select*这样的查询方式太危险了,一次性查询出来的东西太多了,所以我们使用分页查询(limit)去限制这次最多查询出多少个结果
(1)此时就是只查询3条数据,这块也可以写成limit 3 offest 0;在这里插入图片描述(2)我们使用offest来达到查询3条下面的3条(4、5、6)和3条再下面的3条(7、8、9);offest是一个偏移量,一个下标此时就是只查询3条数据

修改

普通修改

update 表名 set列名=值 where 条件;

==注意:==update后面不加任何条件,就是针对所有行进行修改(即不添加where条件)

mysql> select*from user;
+------+--------+--------+
| ID   | accout | amount |
+------+--------+--------+
|   45 |    123 |   2000 |
|  355 |    246 |    900 |
|  199 |    145 |   4000 |
|  123 |   NULL |   2000 |
+------+--------+--------+
4 rows in set (0.00 sec)
mysql> update user set ID=66 where accout=123 and amount=2000;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0mysql> select*from user;
+------+--------+--------+
| ID   | accout | amount |
+------+--------+--------+
|   66 |    123 |   2000 |
|  355 |    246 |    900 |
|  199 |    145 |   4000 |
|  123 |   NULL |   2000 |
+------+--------+--------+
4 rows in set (0.00 sec)

where条件来限制我们修改哪些行数据,它的用法和select里面的where用法是相同的,我们直接可以看上面的笔记

一次修改多个列

update 表名 set列名=值,列名=... where条件;

这里的=就不是比较相等了,是赋值的作用

mysql> update user set ID=67,accout=124 where amount=2000;
Query OK, 2 rows affected (0.01 sec)
Rows matched: 2  Changed: 2  Warnings: 0
mysql> select*from user;
+------+--------+--------+
| ID   | accout | amount |
+------+--------+--------+
|   67 |    124 |   2000 |
|  355 |    246 |    900 |
|  199 |    145 |   4000 |
|   67 |    124 |   2000 |
+------+--------+--------+
4 rows in set (0.00 sec)

PS:mysql> select * from exam result order by chinese + math + english limit 3;
这样的写法表示的是倒数后三行的信息,我们可以使用order by和limit来达到这样的效果

删除

普通删除

delete from 表名 where条件/order by/limit;

删除整张表

不指定任何条件,就是删除整张表

delete from 表名;

PS:(1)drop table 表名是删除了表和表中的所有数据,这个表彻底不存在了
(2)delete from 表名只是删除了表里面的数据,但是表依然是存在的,只是我们得到的就是一张空表了

总结

(1)delete和update都是很危险的操作,delete一旦删除的条件没有设置好,就可能把不该删的数据删掉
(2)这的删除/修改都是持久生效的,都会影响到数据库服务器硬盘中的数据

这篇关于MySQL表的增删查改【基础部分】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

mysql8.0.43使用InnoDB Cluster配置主从复制

《mysql8.0.43使用InnoDBCluster配置主从复制》本文主要介绍了mysql8.0.43使用InnoDBCluster配置主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录1、配置Hosts解析(所有服务器都要执行)2、安装mysql shell(所有服务器都要执行)3、

k8s中实现mysql主备过程详解

《k8s中实现mysql主备过程详解》文章讲解了在K8s中使用StatefulSet部署MySQL主备架构,包含NFS安装、storageClass配置、MySQL部署及同步检查步骤,确保主备数据一致... 目录一、k8s中实现mysql主备1.1 环境信息1.2 部署nfs-provisioner1.2.

MySQL中VARCHAR和TEXT的区别小结

《MySQL中VARCHAR和TEXT的区别小结》MySQL中VARCHAR和TEXT用于存储字符串,VARCHAR可变长度存储在行内,适合短文本;TEXT存储在溢出页,适合大文本,下面就来具体的了解... 目录一、VARCHAR 和 TEXT 基本介绍1. VARCHAR2. TEXT二、VARCHAR

MySQL中C接口的实现

《MySQL中C接口的实现》本节内容介绍使用C/C++访问数据库,包括对数据库的增删查改操作,主要是学习一些接口的调用,具有一定的参考价值,感兴趣的可以了解一下... 目录准备mysql库使用mysql库编译文件官方API文档对象的创建和关闭链接数据库下达sql指令select语句前言:本节内容介绍使用C/

mybatis直接执行完整sql及踩坑解决

《mybatis直接执行完整sql及踩坑解决》MyBatis可通过select标签执行动态SQL,DQL用ListLinkedHashMap接收结果,DML用int处理,注意防御SQL注入,优先使用#... 目录myBATiFBNZQs直接执行完整sql及踩坑select语句采用count、insert、u

MySQL之搜索引擎使用解读

《MySQL之搜索引擎使用解读》MySQL存储引擎是数据存储和管理的核心组件,不同引擎(如InnoDB、MyISAM)采用不同机制,InnoDB支持事务与行锁,适合高并发场景;MyISAM不支持事务,... 目录mysql的存储引擎是什么MySQL存储引擎的功能MySQL的存储引擎的分类查看存储引擎1.命令

Spring的基础事务注解@Transactional作用解读

《Spring的基础事务注解@Transactional作用解读》文章介绍了Spring框架中的事务管理,核心注解@Transactional用于声明事务,支持传播机制、隔离级别等配置,结合@Tran... 目录一、事务管理基础1.1 Spring事务的核心注解1.2 注解属性详解1.3 实现原理二、事务事