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

news2024/10/7 6:50:38

数据表的操作

新增

普通插入

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: 0

mysql> 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)这的删除/修改都是持久生效的,都会影响到数据库服务器硬盘中的数据

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Sql-02】 求每个省份最新登陆的三条数据

SQL 输出要求数据准备sql查询结果 输出要求 要求输出,userid_1,logtime_1,userid_2,logtime_2,userid_3,logtime_3 数据准备 CREATE TABLE sqltest (province varchar(32) NOT NULL,userid varchar(250) DEFAULT NULL,logtime datetime ) ENGINEInnoDB DEFAULT C…

C#开发的网络速度计 - 开源研究系列文章 - 个人小作品

上次发布了一个获取网络速度的例子( https://www.cnblogs.com/lzhdim/p/18167854 ),就是为了这次这个例子。用于在托盘里显示网络速度的图标,并且能够显示网络速度。下面就介绍一下这个小应用的源码。 1、 项目目录; 2、 源码介绍&#xff1b…

【SpringBoot整合系列】SpringBoot整合RabbitMQ-基本使用

目录 SpringtBoot整合RabbitMQ1.依赖2.配置RabbitMQ的7种模式1.简单模式(Hello World)应用场景代码示例 2.工作队列模式(Work queues)应用场景代码示例手动 ack代码示例 3.订阅模式(Publish/Subscribe)应用…

ICode国际青少年编程竞赛- Python-2级训练场-识别循环规律2

ICode国际青少年编程竞赛- Python-2级训练场-识别循环规律2 1、 for i in range(3):Dev.step(3)Dev.turnRight()Dev.step(4)Dev.turnLeft()2、 for i in range(3):Spaceship.step(3)Spaceship.turnRight()Spaceship.step(1)3、 Dev.turnLeft() Dev.step(Dev.x - Item[1].…

国家软考办:2024年上半年软考考试安排

按照《2024年计算机技术与软件专业技术资格(水平)考试工作安排及有关事项的通知》(计考办〔2024〕1号)文件精神,结合各地机位实际,现将2024年上半年计算机软件资格考试有关安排通告如下: 一、考…

小众行业风口:Q1季度擦窗机器人行业线上市场销售数据分析

今天给大家分享一个2024年的小众行业增长风口——擦窗机器人。 作为家居自动化里的重要一员,擦窗机器人可以简称为擦窗神器,是为了解决大户型家庭的外窗清洁痛点而存在。而目前,擦窗机器人行业正在走向成熟,且市场需求量居高不下…

寻找志同道合的小伙伴,让生活更加多彩

在繁忙的生活中,我们时常渴望找到一个可以倾诉心声、分享喜悦和烦恼的角落。有时候,一个简单的聊天就能让心情变得豁然开朗。而今天,我想向大家介绍一个可以让生活更加多彩的小天地——那是一个充满活力和温暖的QQ群。 群号:78004…

二、使用插件一键安装HybridCLR

预告 本专栏将介绍如何使用这个支持热更的AR开发插件,快速地开发AR应用。 专栏: Unity开发AR系列 插件简介 通过热更技术实现动态地加载AR场景,简化了AR开发流程,让用户可更多地关注Unity场景内容的制作。 热更方案 基于Hybri…

探索Python机器学习:最常打交道的 27 款工具包

前言 前言目前,随着人工智能的大热,吸引了诸多行业对于人工智能的关注,同时也迎来了一波又一波的人工智能学习的热潮,虽然人工智能背后的原理并不能通过短短一文给予详细介绍,但是像所有学科一样,我们并不…

IDEA HTTP Client 插件配置空密码的 Request

最近在测试一些 rest api 的时候,发现 IDEA 的 HTTP Client 很好用。对比 postman 更加的轻量,可以满足一些简单的 HTTP 请求测试。这里主要记录下,当用户名没有设置密码时,我们该如何配置这个 HTTP Client 的 Request 文件&#…

谷歌外链怎么发?

既要数量也要质量,要保证你的链接广泛分布,在数量上,确实需要你的链接在各种平台上有所展现,这样能提升你网站的知名度和曝光率,但是,光有数量是不够的,如果这些链接的内容不行,那对…

Go 语言基础之常用包【flag、time、strconv、io】

1、命令行参数包 flag flag 包就是一个用来解析命令行参数的工具。 1.1、os.Args import ("fmt""os" )func main() {if len(os.Args) > 0 {for index, arg : range os.Args {fmt.Printf("args[%d]%v\n", index, arg)}} } 运行结果&#…

开源交互审计系统:功能强大、安全好用【送源码】

在当今信息化时代,网络安全越来越受到重视。传统的远程控制工具,如RDP、SSH、VNC等,虽然方便易用,但存在安全隐患,容易被黑客利用。很多时候我们都需要做一些防护的处理来来保障网络安全。 今天了不起来分享一款开源好…

CSS跳动文字

<div class"loading-mask"><div class"loading-text"><span style"--i:1">加</span><span style"--i:2">载</span><span style"--i:3">中</span><span style"--i:…

JavaScript数组(Array)方法 - toReversed、toSorted、toSpliced

最近发现几个数组方法&#xff0c;是一些常规方法的升级版&#xff0c;比较有意思&#xff0c;分享给大家 文章目录 一、温故二、知新toReversedtoSortedtoSpliced 一、温故 我们先来回顾几个比较常用的方法&#xff1a;reverse&#xff0c;sort&#xff0c;splice众所周知&a…

.NET WebService \ WCF \ WebAPI 部署总结 以及 window 服务 调试

一、webservice 部署只能部署IIS上&#xff0c; 比较简单&#xff0c;就不做说明了 二、 WCF 部署 1 部署到IIS 跟部署 webservice 部署方法一样的 wcf 部署2 部署到控制台 要以管理员运行vs&#xff0c;或者 管理员运行 控制台的exe 在控制器项目中 创建IUserInfoService 接口…

Sqli-labs第五,六关

目录 首先找到他们的闭合方式 操作 总结&#xff1a; 第五关根据页面结果得知是字符型但是和前面四关还是不一样是因为页面虽然有东西。但是只有对于请求对错出现不一样页面其余的就没有了。这个时候我们用联合注入就没有用&#xff0c;因为联合注入是需要页面有回显位。如果…

漫威争锋Marvel Rivals怎么搜索 锁区怎么搜 游戏搜不到怎么办

即将问世的《漫威争锋》&#xff08;Marvel Rivals&#xff09;作为一款万众期待的PvP射击游戏新星&#xff0c;荣耀携手漫威官方网站共同推出。定档5月11日清晨9时&#xff0c;封闭Alpha测试阶段将正式揭开序幕&#xff0c;持续时间长达十天之久。在此首轮测试窗口&#xff0c…

神经网路与深度学习

1 深度学习简述 机器学习&#xff1a;相当于把公式实现出来了而已。 深度学习&#xff1a; &#xff08;1&#xff09;中的特征工程使机器学习更智能。 &#xff08;2&#xff09;真正能学什么样的特征才是最合适的。 &#xff08;3&#xff09;主要应用于计算机视觉和自然语…

QA测试开发工程师面试题满分问答22: (干货)为什么要加锁Lock,举个例子说说

加锁原因 下面代码会有什么问题&#xff1f; import threading import requests from queue import Queuedef make_request(url, params, results_queue):response requests.get(url, paramsparams)result {url: url,params: params,response: response.text}results_queue…