当前位置: 首页 > news >正文

【MySQL】表的增删改查——MySQL基本查询、数据库表的创建、表的读取、表的更新、表的删除

文章目录

  • MySQL
  • 表的增删查改
    • 1. Create(创建)
      • 1.1 单行插入
      • 1.2 多行插入
      • 1.3 替换
    • 2. Retrieve(读取)
      • 2.1 select查看
      • 2.2 where条件
      • 2.3 结果排序
      • 2.4 筛选分页结果
    • 3. Update(更新)
      • 3.1 更新单个数据
      • 3.2 更新多个数据
    • 4. Delete(删除)

MySQL

在这里插入图片描述

  

表的增删查改

  CURD是一个数据库技术中的缩写词,它代表Create(创建),Retrieve(读取),Update(更新),Delete(删除)操作。这四个基本操作是数据库管理的基础,用于处理数据的基本原子操作。
  

1. Create(创建)

  在MySQL中,Create操作是十分重要的,它帮助用于创建数据库对象,如数据库、表、索引等并且允许用户定义新的数据结构和存储方式。我们常使用create databases [库名]; 创建数据库,create table [表名]; 创建数据表,insert into [表名] values(数据); 创建单条数据。
  

1.1 单行插入

  insert 语句在 MySQL 中用于向数据库表中插入新的记录。

insert into 表名 (1,2,3, ...)  
values(1,2,3, ...);

  如果你想要为表中的每一列都插入值(即列的顺序与表中的定义一致),我们直接省略列名:

insert into 表名  
values(1,2,3, ...);

  

创建一张学生数据表,包括学号,姓名,电话等基本信息:

mysql> create table test1(-> id int unsigned primary key auto_increment,-> num int not null,-> name varchar(20) not null,-> tele varchar(20)-> );

  对于上面的表中,id代表学号,每一个学生有且只有唯一的一个,所以我们设计为主键,同时设置为自增长,下面的num和name设置为不为空类型。

  

查看表的结构:

desc test1;

在这里插入图片描述
  

连续插入三个单条数据并且打印查看:

mysql> insert into test1 values(1,101,'张三',15811);
mysql> insert into test1 values(2,102,'李四',NULL);
mysql> insert into test1(num,name,tele) values(103,'王五',18888);
select * from test1;

在这里插入图片描述

  

1.2 多行插入

  insert语句可以一次性插入多行数据通常我们只需要在values子句中列出多组值来实现的,每组值之间用逗号分隔。

insert多行插入并且打印:

mysql> insert into test1 (num,name,tele) values-> (104,'赵六',12345),-> (105,'小七',54321);
select *from test1;

在这里插入图片描述
  

  确保我们插入的数据和列的数据匹配,如果列中not null,我们需要提供值,除非有默认值,我们要注意由于插入的数据是否会因为主键或者唯一键对应的值已经存在而导致插入失败。

对应主键已经有唯一值导致插入失败:

mysql> insert into test1 values(1,106,'老八',null);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

在这里插入图片描述

  

1.3 替换

  replace 语句在 SQL 中是一个特殊的语句,它结合了 insert 和 update 的功能。既可以插入数据也可以替换数据。

  插入数据:如果 replace 语句中指定的数据在表中不存在,它会执行一个插入操作,将数据添加到表中。

  替换数据:如果数据已经存在于表中(通常是因为主键或唯一键冲突),replace 语句会先删除原有的数据行,然后插入新的数据行。

replace into 表名 (1,2,3, ...)  
values(1,2,3, ...);

  总而言之:主键或者唯一键没有冲突,则直接插入;主键或者唯一键如果冲突,则删除后再插入。

  

替换原有的主键数据并插入新的数据:

mysql> replace into test1 values(1,106,'老八',null);

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  

2. Retrieve(读取)

  Retrieve操作在数据库应用中主要用于从数据窗口或数据存储(Datastore)中检索数据。常用的有select进行数据的显示,或者其他如where等进行数据的筛选。
  

2.1 select查看

  SELECT是SQL语言中的一个核心命令,用于从数据库表中检索数据。

[distinct]{* | {column[,column]...}
[from table_name]
[where...]
[order BY column[ASC|DESC],...]
limit...

  distinct:这个关键字用于去重。

  * 或 {column[,column]…}:这部分指定了要检索的列。* 表示选择所有列,而 {column[,column]…} 则允许您指定一个或多个列名。

  from table_name:这部分指定了要从哪个表中检索数据。

  where…:这是一个可选的子句,用于过滤结果集,只返回满足指定条件的行。

  order BY column[ASC|DESC],…:这部分用于对结果集进行排序。 您可以指定一个或多个列,以及排序的方向(升序 ASC 或降序 DESC)。

  limit…:这个子句用于限制返回的记录数。 它通常与分页查询一起使用。

创建学生成绩表:

mysql> create table test2(-> id int unsigned primary key auto_increment,-> name varchar(20) not null,-> chinese float default 0.0 comment '语文成绩',-> math float default 0.0 comment '数学成绩',-> english float default 0.0 comment '英语成绩'-> );

查看表结构:

desc test2;

在这里插入图片描述
  

向表中插入数据并且打印:

mysql> insert into test2(name,chinese,math,english) values-> ('张三',70,80,59),-> ('李四',72,90,65),-> ('王五',60,65,90),-> ('赵六',64,77,80),-> ('刘七',77,82,78),-> ('小红',90,43,90),-> ('李华',79,75,52);

  通常情况下不建议使用 * 进行全列查询,查询的列越多,意味着需要传输的数据量越大;可能会影响到索引的使用。

select * from test2;

在这里插入图片描述
  

指定列打印信息(id,name,chinese):

select id,name,chinese from test2;

在这里插入图片描述
  

打印的字段可以是一个表达式:

select id,name,chinese+math+english from test2;

在这里插入图片描述
  

给打印字段的表达式重新命名:

select id,name,chinese+math+english 总分 from test2;

在这里插入图片描述
  

将打印出来的英文成绩去重:

select distinct english from test2;

在这里插入图片描述
  

2.2 where条件

  在MySQL的select语句中,where子句用于指定查询条件,只有满足这些条件的记录才会出现在结果集中。where子句的主要目的是从数据表或查询结果中过滤出符合条件的行。

  where子句后面可以跟随一个或多个条件,这些条件可以是算术表达式、逻辑表达式或比较运算符的组合。

  

  比较运算符:

运算符说明
<,<=, >, >=大于,大于等于,小于,小于等于
=等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=, <>不等于
between a0 and a1范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)
in (option, …)如果是 option 中的任意一个,返回 TRUE(1)
is null是 NULL
is not null不是 NULL
like模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符

  

  逻辑运算符:

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

  

输出所有英语成绩小于60分的信息:

select name,english from test2 where english<60;

在这里插入图片描述
  

输出所有英语成绩大于等于60小于等于89的成绩:

select name,english from test2 where english>=60 and english<=89;
select name,english from test2 where english between 60 and 89;

在这里插入图片描述

在这里插入图片描述
  

输出数学成绩为80或90分的信息:

select name,math from test2 where math=80 or math=90;
select name,math from test2 where math in(80,90);

在这里插入图片描述
  

找到所有的姓张的信息:

  % 匹配任意多个(包括 0 个)任意字符,_ 匹配严格的一个任意字符。

select name,math from test2 where name like '张%';

在这里插入图片描述
  

找叫 张、张X、张XX 的人员信息,

select name,math from test2 where name like '张';
select name,math from test2 where name like '张_';
select name,math from test2 where name like '张__';

在这里插入图片描述
  

找到所有总分小于210分的人员信息:

 select name,math+chinese+english 总分 from test2 where chinese+math+english<210;

在这里插入图片描述

  

2.3 结果排序

  结果排序通常使用SQL中的order by子句来实现,它允许用户指定一个或多个列作为排序依据,并可以选择升序(ASC)或降序(DESC)排序。

asc 为升序(从小到大)
desc 为降序(从大到小)
//默认为 ASC
select ... from table_name [where ...]
order by column [asc|desc], [...];

  

按照数学成绩的升序进行排序:

select name,math from test2 order by math;

在这里插入图片描述

  

按照英语成绩的降序进行排序:

select name,math,english from test2 order by english desc

在这里插入图片描述
  

按照英语成绩的降序、数学成绩的升序进行排序:

select name,math,english from test2 order by english desc,math;

在这里插入图片描述
  

按照总分进行降序排序:

select name,chinese+english+math 
from test2 
order by chinese+english+math desc;

在这里插入图片描述

  

order by 子句中可以使用列别名:

select name,chinese+english+math 总分 from test2 order by 总分 desc;

在这里插入图片描述

  

2.4 筛选分页结果

  MySQL对未知表进行查询时,最好加一条 LIMIT 1,避免因为表中数据过大,查询全表数据导致数据库卡死。

//起始下标为 0
//从 s 开始,筛选 n 条结果
select ... from table_name [where ...] [order by ...] limit s, n//从 0 开始,筛选 n 条结果
select ... from table_name [where ...] [order by ...] limit n;//从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
select ... from table_name [where ...] [order by ...] limit n offset s;

  

查看表中的信息从第0条数据开始,筛选3条数据:

select id,name,chinese,math,english 
from test2 
order by id 
limit 3 offset 0;

在这里插入图片描述
  

3. Update(更新)

  update是一个数据库SQL语法用语,主要用来更新表中原有的数据。

  其基本的语法结构是:update 表名称 set 列名称 = 新值 where 列名称 = 某值。这意味着,当我们想要修改某个表中的特定数据时,可以使用update语句,并通过where子句来指定需要更新的行。

update table_name set column = expr [, column = expr ...]
[where ...] [order Bby ...] [limit ...]

  

3.1 更新单个数据

将李华的英语成绩更改为70:

select name,english from test2 where id=7;

在这里插入图片描述

update test2 set english=70 where id=7;
select name,english from test2 where id=7;

在这里插入图片描述

  

3.2 更新多个数据

将张三的语文成绩更改为75,英语成绩更改为65:

select name,chinese,english from test2 where id=1;

在这里插入图片描述

update test2 set chinese=75,english=65 where id=1;
select name,chinese,english from test2 where id=1;

在这里插入图片描述

  

4. Delete(删除)

  DELETE操作是数据库中的一种重要操作,用于删除表中的记录。

delete from table_name [where ...] [order by ...] [limit ...]

  

删除李华的成绩信息:

在这里插入图片描述

delete from test2 where id=7 ;

在这里插入图片描述

  

相关文章:

【MySQL】表的增删改查——MySQL基本查询、数据库表的创建、表的读取、表的更新、表的删除

文章目录 MySQL表的增删查改1. Create&#xff08;创建&#xff09;1.1 单行插入1.2 多行插入1.3 替换 2. Retrieve&#xff08;读取&#xff09;2.1 select查看2.2 where条件2.3 结果排序2.4 筛选分页结果 3. Update&#xff08;更新&#xff09;3.1 更新单个数据3.2 更新多个…...

C/C++蓝桥杯之日期问题

问题描述&#xff1a;小明正在整理一批文献&#xff0c;这些文献中出现了很多日期&#xff0c;小明知道这些日期都在1960年1月1日至2059年12月31日之间&#xff0c;令小明头疼的是&#xff0c;这些日期采用的格式非常不统一&#xff0c;有采用年/月/日的&#xff0c;有采用月/日…...

【理解指针(二)】

文章目录 一、指针的运算&#xff08;1&#xff09;指针加整数&#xff08;2&#xff09;指针减指针&#xff08;指针关系运算&#xff09; 二、野指针&#xff08;1&#xff09;野指针的成因&#xff08;1.1&#xff09;指针未初始化&#xff08;1.2&#xff09;指针的越界访问…...

使用AI纠正文章

我写了一段关于哲学自学的读书笔记&#xff0c;处于好奇的目的&#xff0c;让AI帮我纠正语法和逻辑。我的原文如下&#xff1a; 泰勒斯第一次提出了水是万物本源的说法&#xff0c;对于泰勒斯为什么提出这样的观点&#xff0c;或者是这样的观点是怎么来的&#xff0c;我们无从所…...

拼多多API批量获取商品详情信息

随着电子商务的蓬勃发展&#xff0c;淘宝作为中国最大的在线购物平台之一&#xff0c;每天需要处理海量的商品上架和交易。为了提高工作效率&#xff0c;自动化上架商品和批量获取商品详情信息成为了许多商家和开发者的迫切需求。本文将详细介绍淘宝的API接口及其相关技术&…...

杨辉三角(C语言)

杨辉三角 一.什么是杨辉三角 一.什么是杨辉三角 每个数等于它上方两数之和。 每行数字左右对称&#xff0c;由1开始逐渐变大。 第n行的数字有n项。 前n行共[(1n)n]/2 个数。 … 当前行的数上一行的数上一行的前一列的数 void yanghuisanjian(int arr[][20], int n) {for (int i…...

宏任务与微任务:JavaScript异步编程的秘密

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

vant van-field 密码输入框小程序里隐藏、显示密码bug总结

老规矩先上效果图: vant 输入框组件 密码的隐藏与显示功能&#xff1a; 注: 用password属性控制密码的显示与隐藏 不要用type属性&#xff0c;type属性在真机上有时会没有效果 1、当然如果只用typepassword 不需要切换显示、隐藏也可以使用。 2、如果用到了密码的显示与…...

代理ip应用场景

代理IP是一种网络技术&#xff0c;它允许用户通过中间来访问互联网资源&#xff0c;隐藏真实的IP地址代理IP的应用场景非常泛&#xff0c;以下是一些常见的应用场景&#xff1a; 1 隐私保护&#xff1a;使用代理IP可以隐藏用户的真实IP地址&#xff0c;保护个人隐私。在浏览网…...

C/C++指针详解

接下来我们来介绍一下什么是指针&#xff1f; 指针其实就是元素存放地址&#xff0c;更加形象的比喻&#xff1a;在酒店中如果你想要去注必须去付费不然不能住&#xff0c;在计算机也同样如此&#xff08;但是不需要付费哦&#xff09;每当我们使用一个变量或其他需要申请空间…...

实验一:华为VRP系统的基本操作

1.1实验介绍 1.1.1关于本实验 本实验通过配置华为设备&#xff0c;了解并熟悉华为VRP系统的基本操作 1.1.2实验目的 理解命令行视图的含义以及进入离开命令行视图的方法 掌握一些常见的命令 掌握命令行在线帮助的方法 掌握如何撤销命令 掌握如何使用命令快捷键 1.1.3实验组网 …...

ChatGPT发不出消息?GPT发不出消息怎么办?

前言 今天发现&#xff0c;很多人的ChatGPT无法发送信息&#xff0c;我就登陆看一下自己的GPT的情况&#xff0c;结果还真的无法发送消息&#xff0c;ChatGPT 无法发送消息&#xff0c;但是能查看历史的对话&#xff0c;不过通过下面的方法解决了。 第一时间先打开官方的网站&a…...

【论文笔记】Language Models are Few-Shot Learners

Language Models are Few-Shot Learners 回顾一下第一代 GPT-1 &#xff1a; 设计思路是 “海量无标记文本进行无监督预训练少量有标签文本有监督微调” 范式&#xff1b;模型架构是基于 Transformer 的叠加解码器&#xff08;掩码自注意力机制、残差、Layernorm&#xff09;&a…...

解决:Glide 在回调中再次加载图片报错

一、问题说明 Glide 加载图片时监听了回调&#xff0c;并在失败时再次加载其它图片后报错。 代码&#xff1a; Glide.with(mContext).load(imgTeacher).listener(new RequestListener<Drawable>() {Overridepublic boolean onLoadFailed(Nullable GlideException e, O…...

Java学习笔记之IDEA的安装与下载以及相关配置

1 IDEA概述 ​IDEA全称IntelliJ IDEA&#xff0c;是用于Java语言开发的集成环境&#xff0c;它是业界公认的目前用于Java程序开发最好的工具。 集成环境&#xff1a; ​把代码编写&#xff0c;编译&#xff0c;执行&#xff0c;调试等多种功能综合到一起的开发工具。 2 IDEA…...

【共享内存】System V共享内存{通信原理/相关接口/代码测试}

文章目录 1.初识共享内存1.0浅谈System V1.1什么是共享内存&#xff1f;1.2Linux-System V共享内存1.3图解共享内存1.4对共享内存的理解 2.创建共享内存2.1共享内存如何创建&#xff1f;2.2代码运行与测试2.3shm与pipe的区别2.4shm缺乏访问控制 3.代码理解shm3.1Log.hpp3.2comm…...

Web渗透测试流程

什么是渗透测试 渗透测试 (penetration test),是通过模拟恶意黑客的攻击方法&#xff0c;来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析&#xff0c;这个分析是从一个攻击者可能存在的位置来进行的&#xff0c;并且从这个…...

探索机器学习的无限可能性:从初学者到专家的旅程

探索机器学习的无限可能性&#xff1a;从初学者到专家的旅程 在当今数字时代&#xff0c;机器学习无疑是最引人注目的技术之一。它已经深入到我们生活的方方面面&#xff0c;从个性化推荐到自动驾驶汽车&#xff0c;再到医疗诊断和金融预测。但是&#xff0c;即使我们已经见证…...

【python】六个常见爬虫案例【附源码】

大家好&#xff0c;我是博主英杰&#xff0c;整理了几个常见的爬虫案例&#xff0c;分享给大家&#xff0c;适合小白学习 一、爬取豆瓣电影排行榜Top250存储到Excel文件 近年来&#xff0c;Python在数据爬取和处理方面的应用越来越广泛。本文将介绍一个基于Python的爬虫程序&a…...

Java零基础-多维数组

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一个人虽可以走的更快&#xff0c;但一群人可以走的更远。 我是一名后…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...