MySQL表的增删改查(初阶)

        CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写。且增删改查(CRUD,create,retrieve,update,delete)数据库的核心模块。

1. 新增(Create)

        实际上sql中使用insert来往表里插入数据(确保已经选中数据库并创建好相应的表);

Insert into 表名 values(列,列…..);

//这里给出的列的数目和类型与之前创建的表里面的相关信息要匹配。

1.1 单行数据 + 全列插入

        代码如下:

-- 插入两条记录,table表数量必须和定义表的列的数量及顺序一致
insert into chengyuan values (1,'沈梦瑶');
insert into chengyuan values (1,'袁一琦');

        结果如下:

         

2、查询(Retrieve)

2.1 单次插入多行数据 + 指定列插入

        1、一次插入多行

        在values后面写多组()就可以,代码如下:

//-- 插入两条记录,value_list 数量必须和指定列数量及顺序一致
insert into chengyuan values 
(2,'袁一琦'),
(3,'王奕');

        结果如下:

       

        2、指定列进行插入,可以进行操作成功。代码如下:

//将成员表的id指定为4的信息插入
 insert into chengyuan (id ) values (4);

        结果如下:

         

        注意:在控制台中我们可以通过向上和向下的方向键来显示我们上一行命令。

2.2 全列查询

        操作指令及注意事项如下:

// 通常情况下不建议使用 * 进行全列查询
// 1. 查询的列越多,意味着需要传输的数据量越大;
// 2. 可能会影响到索引的使用。(索引待后面课程讲解)
SELECT * FROM 表名;

        结果展示: 

       

2.3 指定列查询

        调整表固定列的参数顺序

        语法如下:

//指定列的顺序不需要按定义表的顺序来
SELECT  name, id FROM chengyuan;

        结果展示:

        

2.4 查询字段为表达式

        语法如下:

//指定列的顺序不需要按定义表的顺序来
SELECT id, id+10,name FROM chengyuan;

        结果如下:

        

2.5  设置为别名查询

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

SELECT id,name ,id+100 AS 总分 FROM chengyuan;

         结果如下:

        

  1. 当前表达式查询,并没有修改服务器上硬盘中存储的数据本体,只是在查寻结果的基础上进行运算的,得到的是一个临时表。(当这个操作结束,这里的数据就会消散,这里的数据库本体不会发生改变)->select操作不会改硬盘上的原始数据带来改变。
  2. 此处查询出来的临时表,每个列的类型不在受限于原始表。

2.6 去重:DISTINCT

        使用DISTINCT关键字对某列数据进行去重:

        1、对一个列使用去重,使用语法如下:

SELECT DISTINCT id FROM chengyuan;

        结果展示:

        2、 对多个列使用去重,当两个列都有着相同的数据才会进行合并,否则只有一个列相同,数据不会发生合并,使用语法如下:

SELECT  DISTINCT  name,id FROM chengyuan;

         结果展示:

          

2.7 排序:ORDER BY

2.7.1 简单的升降序排序

        语法格式:

// ASC 为升序(从小到大)
// DESC 为降序(从大到小)
// 一般默认为 ASC
	select 列名 from 表名 order by 列名;

        (注意:order是一个关键字)

        最后一个列名就是排序的依据(不一定出现在select的列名中,order by也是针对临时表进行排序)

        如果一个查询语句没有order by,此时查询到的临时表,数据之间的顺序是不可以期望的。(mysql没有承诺一定要保持一种顺序)一定是要使用order by才能够明确制定一个顺序。

        NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面;

        操作代码:

1、升序(默认,asc)

        通过id对于数据信息进行升序排序

select * from chengyuan order by id;

2、降序(desc)

        通过id对于数据信息进行升序排序

select * from chengyuan order by id desc;

2.7.2 使用表达式及别名排序

        使用表达式语法:

select id + 100,name,id  from chengyuan order by id desc;

 

        使用别名:

select id ,name,id +10 newId  from chengyuan order by id desc;

2.7.3  可以对多个字段进行排序,排序优先级随书写顺序 

语法展示:

select *  from chengyuan order by name,id desc;

        1、使用字符串name进行排序,但是排序的内容不是按照中文字典进行排的序。

        2、Order by可以指定多个列来进行排序,在指定多个列的时候,也是有优先级的,前面的列,优先级高,后面的列优先级低。当优先级列的数值相同的时候,才会比较优先级低的列。

2.8 条件查询:WHERE

2.8.1 运算符的介绍

        比较运算符如下图所示:

           

        逻辑运算符:

             

注意事项:

  1. WHERE条件可以使用表达式,但不能使用别名。

  2. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分案例

2.8.2  基本查询

//查询id小于3的成员的名字( id< 60 )
SELECT name FROM chengyuan WHERE id < 3;

        结果如下图所示:

       

2.8.3 AND与OR 

        语法如下:

//查询id大于1分,且id小于4的成员,
//也可以使用between。。。and的语句使用,详见于后面
SELECT * FROM chengyuan WHERE id > 1 and id < 4;

//查询id小于1分,或id大于3的成员
SELECT * FROM chengyuan WHERE id < 1 or id > 3;


        结果如下图所示:

2.8.4 范围查询

        BETWEEN … AND …

         语法如下:

//查询id大于1分,且id小于4的成员,
//也可以使用between。。。and的语句使用
SELECT * FROM chengyuan WHERE id between 1 and  3;

        结果展示:

        IN

        语法代码:

// 查询id是 1 或者 2 或者 3 的成员
SELECT * FROM chengyuan WHERE id IN (1, 2, 3);


        结果展示:

2.8.5 模糊查询:LIKE

 代码如下:

 // % 匹配任意多个(包括 0 个)字符
SELECT name FROM chengyuan WHERE name LIKE '王%';-- 匹配到孙悟空、孙权

// _ 匹配严格的一个任意字符
SELECT name FROM chengyuan WHERE name LIKE '王_';-- 匹配到孙权

结果展示:

 2.8.6 NULL 的查询

        IS [NOT] NULL

        语法如下:

// 查询  name已知的同学姓名
SELECT * FROM chengyuan WHERE name IS NOT NULL;

// 查询 name未知的同学姓名
SELECT * FROM chengyuan WHERE name IS  NULL;


        结果展示:

2.9 分页查询

     LIMIT 关键字的用法:

     关键字limit,来限制这次请求返回多少个记录(一页里面有几条)

     分页查询则是最合适的能解决上述问题的方案,分页查询可以限制这一次查询最大查多少个记录。

-- 起始下标为 0

-- 从 0 开始,筛选 2 条结果
SELECT * FROM chengyuan  LIMIT 2;

-- 从 2 开始,筛选 2 条结果
SELECT * FROM chengyuan  LIMIT 2, 2;

-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT * FROM chengyuan  LIMIT 2,  OFFSET 2;

        结果如下:

3. 修改(Update) 

        update的操作都不是临时表,都是改为硬盘数据了,且Update也是一个危险的操作,sql没有相关的撤回操作。(无论是备份,还是恢复,都是有成本的,因为数据库里面数据很多,同时再恢复数据库的时候,数据库无法给外界提供服务,相当于数据库宕机)。

        语法格式:

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

        语法代码:

// 将zhoushiyu的id变更为 0 
UPDATE chengyuan SET id = 0 WHERE name = 'zhoushiyu';

-- 将id变为 0的成员改为曾艳芬
UPDATE chengyuan SET name = '曾艳芬' WHERE id = 0;

         操作结果:

where 条件:指的是修改哪一行?

        我们进行修改,要定位到行和列在进行修改。如果不写条件,就是针对所有的行和列。

4. 删除(Delete)

        Delete from 表名 where 条件、order by 、limit;(把条件匹配符合要求的记录给删除掉)

//删除id = 2 的袁一琦这一行的chengyuanbiao
delete from chengyuan where id = 2;

        结果展示:

        Drop table是吧表本身和表里的数据都给删除了;

        Delete只是把表里的数据删除了。

ps:本次的内容就到这里了,如果大家感兴趣的话,就请一键三连!!!

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

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

相关文章

120. 三角形最小路径和

三角形最小路径和 描述 : 给定一个三角形 triangle &#xff0c;找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 1 的两个结点。也就是说&#xff0c;如果正位于当前行的…

C语言—每日选择题—Day51

指针相关博客 打响指针的第一枪&#xff1a;指针家族-CSDN博客 深入理解&#xff1a;指针变量的解引用 与 加法运算-CSDN博客 第一题 1. 对于函数void f(int x);&#xff0c;下面调用正确的是&#xff08;&#xff09; A&#xff1a;int y f(9); B&#xff1a;f(9); C&#xf…

Leetcode—96.不同的二叉搜索树【中等】

2023每日刷题&#xff08;六十四&#xff09; Leetcode—96.不同的二叉搜索树 算法思想 实现代码 class Solution { public:int numTrees(int n) {vector<int> G(n 1, 0);G[0] 1;G[1] 1;for(int i 2; i < n; i) {for(int j 1; j < i; j) {G[i] G[j - 1] * …

Ubuntu18.04 上通过 jihu 镜像完成 ESP-IDF 编译环境搭建流程

为了解决国内开发者从 github 克隆 esp 相关仓库慢的问题&#xff0c;已将 esp-idf 和部分重要仓库及其关联的子模块镜像到了 jihu&#xff0c;这些仓库将自动从原始仓库进行同步。此篇博客用来阐述 Ubuntu18.04 上通过 jihu 镜像完成 ESP-IDF 编译环境搭建流程。 注&#xff1…

AOP与日志(下)

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 日志分类 有时候我们所…

ffmpeg windows开发之一(编译安装及入门指南)

一. 源码包下载 下载地址&#xff1a; Download FFmpegDownload FFmpeg 点击more lease&#xff0c;然后下载 二&#xff1a; MSYS2安装 &#xff1a; 下载地址&#xff1a;MSYS2 执行命令&#xff1a;pacman -Syu pacman -S mingw-w64-x86_64-gcc pacman -S mingw-w64-x86_64…

【Spring】14 ApplicationEventPublisherAware 接口

文章目录 1. 简介2. 作用3. 使用3.1 创建并实现接口3.2 配置 Bean 信息3.3 创建启动类3.4 启动3.5 工作流程图 4. 应用场景总结 Spring 框架为开发者提供了丰富的扩展点&#xff0c;其中之一是 Bean 生命周期中的回调接口。本文将专注介绍一个与事件发布相关的接口 Applicatio…

Windows 系统下本地单机搭建 Redis(一主二从三哨兵)

目录 一、Redis环境准备&#xff1a; 1、下载redis 2、Windows下的.msi安装和.zip格式区别&#xff1a; 二、哨兵介绍&#xff1a; 1、一主二从三哨兵理论图&#xff1a; 2.哨兵的主要功能&#xff1a; 3.哨兵用于实现 redis 集群的高可用&#xff0c;本身也是分布式的&…

LeetCode 1901. 寻找峰值 II

一、题目 1、题目描述 一个 2D 网格中的 峰值 是指那些 严格大于 其相邻格子(上、下、左、右)的元素。 给你一个 从 0 开始编号 的 m x n 矩阵 mat &#xff0c;其中任意两个相邻格子的值都 不相同 。找出 任意一个 峰值 mat[i][j] 并 返回其位置 [i,j] 。 你可以假设整个矩阵…

服务端主动给客户端发消息?实战教学:使用Nestjs实现服务端推送SSE

前言 服务端消息推送SSE是常用的服务器消息通信手段&#xff0c;适用于服务器主动给客户端发送消息的场景&#xff0c;例如私信通知&#xff0c;扫描登录等都可以使用SSE实现。SSE的底层原理是客户端与服务端建立 HTTP 长链接。 Nestjs 框架内置了对SSE的支持&#xff0c;本文…

前端性能监控和错误监控

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

FreeRTOS信号量学习

目录 一、信号量的特性 1. 信号量的常规操作 2. 信号量跟队列的对比 3. 两种信号量的对比 4. 信号量函数 4.1 创建 4.2 删除 4.3 give/take 5. 使用二进制信号量来同步 队列(queue)可以用于传输数据&#xff1a;在任务之间、任务和中断之间。 有时候我们只需要传递状态&…

外媒发稿最好的宣传方法是什么?大舍传媒

外媒发稿最好的宣传方法是什么&#xff1f; 引言 在如今信息爆炸的时代&#xff0c;外媒发稿的宣传方法至关重要。大舍传媒作为一家业内知名的传媒公司&#xff0c;积累了丰富的经验和成功案例。本文将探讨外媒发稿最好的宣传方法&#xff0c;旨在帮助读者更好地推广自己的信…

Java基础知识回顾

Java基础 一、Java概述 1、Java技术体系平台 类型简介JavaSE 标准版支持面向桌面级的应用JavaEE 企业版支持为企业开发的应用JavaME 小型版运行在移动终端的平台 2、Java重要的特点 面向对象的语言&#xff08;OOP&#xff09; 健壮的语言&#xff0c;具有强类型转换、异常…

MCU为什么上电不启动?

都遇到过这样的问题吧&#xff0c;自信满满的把程序下载到板子上&#xff0c;结果发现MCU居然没启动。 出现这个问题有很多原因&#xff0c;总结为以下五点&#xff1a; 第一&#xff0c;boot引脚电平不对&#xff0c;例如在GD32的MCU上&#xff0c;boot引脚决定了MCU的启动方式…

【pycharm】Pycharm常用快捷键

批量替换是指一次性替换多个文件中的指定内容。在开发过程中&#xff0c;可能会遇到需要替换多个文件中的某个字符串或者某段代码的情况。如果一个一个文件进行替换&#xff0c;那么将会非常耗时和繁琐。 而使用批量替换功能&#xff0c;则可以一次性完成所有文件的替换操作&am…

MyBatis——自定义MyBatis(了解)

1.自定义MyBatis-了解 创建工程&#xff0c;拷贝上一个工程代码&#xff0c;去掉mybatis的依赖&#xff1a; 1.1.MyBatis的核心对象 我们已经通过案例体验到了mybatis的魅力。现在来梳理一下MyBatis运行时的几个对象&#xff0c;我们需要搞清楚他们的作用&#xff0c;进而需要…

java参数校验

引入依赖 <!--参数效验--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency><!--Length参数效验--><dependency><groupId>org.hib…

pycharm手动安装ini插件

pycharm中新增pytest.ini文件时发现&#xff0c;文件的图标不是配置文件的图标 原因是没有安装ini插件 安装插件的方式有很多种&#xff0c;今天通过去官网下载插件&#xff0c;再安装的方式 第一步&#xff1a;去官网搜索&#xff0c;地址是&#xff1a;https://plugins.jet…
最新文章