MySQL:CRUD

MySQL表的增删改查(操作的是表中的记录)

CRUD(增删改查)

  • C-Create新增
  • R-Retrieve检查,查询
  • U-Update更新
  • D-Delete删除

新增(Create)

语法:

单行数据+全列插入 

insert into 表名[字段一,字段二] values(值一,值二);

 通过看表的结果,我们可以看出内容已经写好

注:列和值的数据类型一定要匹配,如果不匹配,则无法写入数据表中

简写方式(可以将表后的字段进行省略)

指定列插入

只写一个name的值,那么其他的值则会默认为null

多行插入

 show databases;create database u;use u;create table student(id bigint,name varchar(50),math int,english int,chinese int);insert into  student(id,name,math,english,chinese)  values(1,'zhangsan',88,86,74);insert into  student(id,name,math,english,chinese)  values(2,'lisi',85,76,94);insert into  student(id,name,math,english,chinese)  values(3,'xiaoliu',65,96,84);
insert into  student  values(4,'xiaohe',95,76,89);insert into student(name) values('daliu');insert into student(id,name) values(5,'ni'),(6,'wo'),(7,'hao');

查询(Retrieve)

全列查询

select * from 表名

注:查询表中所有的元素是一个很危险的事情,有些数据库的表很大,如果要一次性全部查询,会导致服务器崩塌,所以在查询的时候要加许多的限制条件。

指定列查询

select 字段 +from 表名

查询的结果是一个表达式

1.在字段名后加一个10后,会在临时创建的表上添加一个全为10的新列。

2.在某一列成绩加10,会使临时创建的表整个列的成绩都加10

3.将三个成绩的相加可以求成绩之和

表达式的别名

1.select 字段名 as +别名+from 表名

2.select 字段名  +'别名'+from 表名

3.select 字段名  别名  from 表名

注:最简单的方法是select 字段名  别名  from 表名,最标准的方法是select 字段名 as  '别名'  from 表名

如果在别名中有空格等符号必须用  ' 别名 '的形式。

否则会报错

注:所以查询出来的表都是一个临时表,返回给我们,执行完就自动删除了。

 show databases;create database u;use u;create table student(id bigint,name varchar(50),math int,english int,chinese int);insert into  student(id,name,math,english,chinese)  values(1,'zhangsan',88,86,74);insert into  student(id,name,math,english,chinese)  values(2,'lisi',85,76,94);insert into  student(id,name,math,english,chinese)  values(3,'xiaoliu',65,96,84);
insert into  student  values(4,'xiaohe',95,76,89);insert into student(name) values('daliu');insert into student(id,name) values(5,'ni'),(6,'wo'),(7,'hao');select * from student;select name from student;select id,name,10 from student;select id,name,math+10 from student;select id,name,math+chinese+english from student;select id,name,math+chinese+english as 总分 from student;select id,name,math+chinese+english as '总分' from student;select id,name,math+chinese+english  '总分' from student;select id,name,math+chinese+english  总分 from student;select id,name,math+chinese+english  '总  分' from student;select id 编号,name 姓名,math 数学 ,chinese 语文,english 英语,math+chinese+english  总分 from student;

去重(distinct)

select 列名 from 表名

单独去重某一个列

去重好几个列

注:去重时所有的列都相同才会被认为是可以去重的

   select * from student;insert into  student  values(8,'xiaohai',88,76,89);select * from student;select distinct * from student;select distinct math from student;select math from student;select distinct math,chinese,english from student;insert into  student  values(9,'zhu',88,76,89);select distinct math,chinese,english from student;

排序

select 列名 from 表名 order by 列名[ASC/DESC ]

ASC(降序)

DESC(升序)

注:如果既不写ASC或者DESC的话,则会默认为ASC

注:NuLL数据排序,视为比任何的数据都小,包括负数,比负数都小,升序出现在最上面,降序出现在最下面。

可以使用表达式及别名进行排序

对多个字段进行排序的时候,排序的顺序与出现的先后顺序有关

先对数学按逆序排序,在数学排序的基础上对语文按顺序排序,再对英语按逆序进行排序。

注:MySQL中的null比较特殊

  • 无论和什么值进行运算,返回的值都是null。
  • null始值被判定为false。
  • null的值不是我们学习的其他语言中的0,在MySQL就是null。
  select chinese from student order by chinese asc;select math from student order by math desc;select math from student order by math ;select id 编号,name 姓名,math+chinese+english total from student order by total desc;select id 编号,name 姓名,math,chinese,english total from student order by math desc,chinese asc,english desc;

条件查询(where) 

可以通过条件查询,过滤掉一些不符合条件的记录,将符合条件的记录返回给用户

比较运算符

运算符

说明

>, >=, <, <=
大于,大于等于,小于,小于等于
=
等于, NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>
等于, NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=, <>
不等于
BETWEEN a0ANDa1
范围匹配, [a0, a1] ,如果 a0 <= value <= a1 ,返回 TRUE(1)
IN (option, ...)
如果是 option 中的任意一个,返回 TRUE(1)
IS NULL
是NULL
IS NOT NULL
不是NULL
LIKE
模糊匹配。 % 表示任意多个(包括 0 个)任意字符; _ 表示任意一个字符 

 注:

模糊查询(LIKE):

字符后加 % 意思为只要是开头为xiao的,无论后面是什么,有多少个都符合条件。

 

字符后加 _ 意思为有几个 _ ,则在xiao后就有多少个字符。

small后有两个字符

small后有三个字符 

IS NULL

 

IS NOT NULL

 

逻辑运算符

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

注:

AND类似于Java中的 && ,OR类似于Java中的 || ,NOT类似于Java中的 !  

使用where的语法:select * from 表名 where 列名/表达式  运算符  条件

练习:

1.查询英语成绩<80分的同学及英语成绩

修改后:

select name,english from student where english<80;

注:自动过滤掉了值为null的列

2.查询语文成绩好于英语成绩的同学
 select name,english,chinese from student where chinese>english;

注 :在一行数据的不同列的同种数据类型是可以进行比较的,如果是不同行的数据,就算是数据类型相同也是无法比较数据的大小

3.查询总分在 260 分以下的同学

 select name,english+chinese+math total from student where (chinese+math+english)<260;

注:where中的语句不能用别名去当过滤的条件,使用了表达式就不能使用别名。

错误的示范:

为什么会出现这种情况呢?

出现这种情况跟MySQL中的SQL语句的执行顺序有关

  1. 如果在数据中查询某些条件,首先要确定表,执行from
  2. 在查询的过程中要根据查询的条件把符合条件的数据取出来,执行where子句
  3. 执行select后面指定的列,要把这些列加入到最终的结果中
  4. 排序操作,根据order by 将指定的列按排序规则进行最后的排序

4.查询语文成绩大于80分,且英语成绩大于80分的同学 

 select name,chinese,english from student where chinese>80 and english>80;

 

5.查询语文成绩大于80分或英语成绩大于80分的同学 

 select name,chinese,english from student where chinese>80 or english>80;

注:

优先级:NOT>AND>OR,我们不需要记,只需要在使用的时候加括号。

6.查询语文成绩在 [80, 90] 分的同学及语文成绩

select name,chinese from student where chinese between 80 and 90;
select name,chinese from student where chinese<=90 and chinese>=80;

也可以使用AND

 

 

7.查询语文成绩是74 或者 84分的同学及数学成绩 

mysql> select name,chinese from student where chinese in(84,74);
select name,chinese from student where chinese=74 or chinese =84;

也可以使用OR 

 

 分页查询(Limit

分页查询可以有效的控制一次性查询出来的条数,可以减小数据库服务器的压力,是一个非常友好的行为。

1.从 0 开始,筛选 n 条结果

select ... from   表名  [where ...]   [order  by ...]  limit n;

 n表示一次性查询出的条数

2.从 s 开始,筛选 n 条结果

select... from   表名   [where...]  [order  by...] limit s, n;
从0开始,限制两条
从2开始,限制两条

3.从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用

select... from   表名  [where...]  [order  by...] limit  n  offset  s;

 从0开始,限制两条

从2开始,限制两条 

练习:

按 id 进行分页,每页条记录,分别显示第 123

按顺序

select * from student where math order by id asc limit 2 offset 0;
select * from student where math order by id asc limit 2 offset 2;
select * from student where math order by id asc limit 2 offset 4;

按逆序

select * from student where math order by id desc limit 2 offset 0;
select * from student where math order by id desc limit 2 offset 2;
select * from student where math order by id desc limit 2 offset 4;

 

注:因为id为5,6,7都是NULL,所以默认不会读入。 

 修改(update)

UPDATE   表名  SET  column = expr [, column = expr ...]   [WHERE ...] [ORDERBY ...] [LIMIT ...]

 

练习

1.将xiaohe同学的数学成绩变更为 80 分

update student set math='80' where name='xiaohe' ;

 注:

2.将xiaoliu同学的数学成绩变更为 60 分,语文成绩变更为 70 分

update  表名  set  列=?,列=? where  限制的条件

update student set math=60 and chinese=70 where name='xiaoliu' ;

 

 

3.将总成绩倒数前三的 3 位同学的数学成绩加上3分 

原本成绩

select * from student;

进行修改

update student set math=math+3 where math order by math+english+chinese desc limit 3;

 修改后成绩

select * from student;

4.将所有同学的数学成绩更新为原来的 二分之一倍

原来的成绩

select * from student;

进行修改

update student set math =math*2 where math;

修改后的成绩

select * from student;

 

删除(delete)

delete   from   表名 [where ...] [order  by ...] [limit ...]

练习

1.将名字叫daliu的人删除
删除前
select * from student;
进行删除
delete from student where name='daliu';

删除后
select * from student;

 

2.将数学成绩倒数三名的人删除

删除前

select * from student order by math asc;

 

进行删除

 delete from student order by math asc limit 3;

删除后

select * from student;

 

注:在删除时如果不加where条件会怎么样?

会导致整张表全部被删除,所以一定要慎重!!!!

希望能对大家有所帮助!!!!!

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

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

相关文章

centos7 node升级到node18

使用jenkins发布vue3项目提示node18安装失败 错误日志&#xff1a; /var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node18/bin/node: /lib64/libm.so.6: version GLIBC_2.27 not found (required by /var/lib/jenkins/tools/jenkins.plugins.node…

万字长文解读深度学习——ViT、ViLT、DiT

文章目录 &#x1f33a;深度学习面试八股汇总&#x1f33a;ViT1. ViT的基本概念2. ViT的结构与工作流程1. 图像分块&#xff08;Image Patch Tokenization&#xff09;2. 位置编码&#xff08;Positional Encoding&#xff09;3. Transformer 编码器&#xff08;Transformer En…

MFC中Excel的导入以及使用步骤

参考地址 在需要对EXCEL表进行操作的类中添加以下头文件&#xff1a;若出现大量错误将其放入stdafx.h中 #include "resource.h" // 主符号 #include "CWorkbook.h" //单个工作簿 #include "CRange.h" //区域类&#xff0c;对Excel大…

前端开发中常用的包管理器(npm、yarn、pnpm、bower、parcel)

文章目录 1. npm (Node Package Manager)2. Yarn (Yarn Package Manager)3. pnpm4. Bower5. Parcel总结 前端开发中常用的包管理器主要有以下几个&#xff1a; 1. npm (Node Package Manager) 简介&#xff1a; npm 是 Node.js 的默认包管理器&#xff0c;也是最广泛使用的包…

Linux(CentOS)安装 Nginx

CentOS版本&#xff1a;CentOS 7 Nginx版本&#xff1a;1.24.0 两种安装方式&#xff1a; 一、通过 yum 安装&#xff0c;最简单&#xff0c;一键安装&#xff0c;全程无忧。 二、通过编译源码包安装&#xff0c;需具备配置相关操作。 最后附&#xff1a;设置 Nginx 服务开…

深度学习项目启动(笔记用)

深度学习项目启动 项目配置虚拟环境 项目配置虚拟环境

万字长文解读深度学习——卷积神经网络CNN

推荐阅读&#xff1a; 卷积神经网络&#xff08;CNN&#xff09;详细介绍及其原理详解 CNN笔记&#xff1a;通俗理解卷积神经网络 文章目录 &#x1f33a;深度学习面试八股汇总&#x1f33a;主要组件输入层卷积层 (Convolutional Layer)批归一化层&#xff08;Batch Normalizat…

交易术语汇总(Technical Trading Dictionary)

Arbitrage (套利) --- 一种利用交易所之间的差价获利的方法。 Accumulation (累积) --- 在一种资产中建立头寸的过程。 Ask/Bid (询价/竞价) --- 卖出订单是询价(Ask)&#xff0c;买入订单是出价(Bid)。 ATH&#xff08;历史最高价) --- All-time high 全时高。 Bearish MS…

搭建高效稳定的ChatGPT网络环境:从网络专线到IP地址管理的全流程解析

随着人工智能技术的迅猛发展&#xff0c;ChatGPT作为自然语言处理领域的前沿应用&#xff0c;已经在各行各业得到广泛使用。无论是企业的客户服务系统&#xff0c;还是个人用户的智能助手&#xff0c;ChatGPT的稳定运行都离不开一个高效的网络环境。在企业级部署或私有化使用的…

VBA10-处理Excel的动态数据区域

一、end获取数据边界 1、基本语法 1-1、示例&#xff1a; 2、配合row和column使用 2-1、示例1 2-2、示例2 此时&#xff0c;不管这个有数值的区域&#xff0c;怎么增加边界&#xff0c;对应的统计数据也会跟着变的&#xff01; 二、end的缺陷 若是数据区域不连贯&#xff0c;则…

【CICD】GitLab Runner 和执行器(Executor

GitLab Runner 和执行器&#xff08;Executor&#xff09;是 GitLab CI/CD 管道中的两个重要组成部分。理解它们之间的关系有助于更好地配置和使用 CI/CD 流水线。runer是gitlab的ci-agent对接gitlab&#xff0c;而执行器是接受runer下发的ci的任务来干活的。也就是说gitrunner…

Spring boot + Vue2小项目基本模板

Spring boot Vue2小项目基本模板 基本介绍基本环境安装项目搭建最终效果展示 基本介绍 项目来源哔哩哔哩的青戈&#xff0c;跟着学习搭建自己的简单vue小项目&#xff1b;看别人的项目总觉得看不懂&#xff0c;需要慢慢打磨 这里目前只简单的搭建了菜单导航和表格页面&#x…

“箱体分析”,箱体支撑压力位,分析市场方向 通达信主图 源码

使用技巧 该指标用于在通达信的K线图上绘制箱体分析图形&#xff0c;主要通过支撑位、波浪顶、箱体上下限等多个技术指标来识别股票的支撑和压力区域。 支撑位分析&#xff1a;可以帮助用户识别股价的支撑区域&#xff0c;并判断是否会反弹。 箱体震荡区间识别&#xff1a;通…

PostgreSQL 锁判断

我们在使用 PostgreSQL 的时候经常会遇到有关锁的信息。那么如何判断是否有死锁或者锁等待呢&#xff1f; WITH lock_pid AS ( SELECT DISTINCT pid FROM pg_locks WHERE pid <> pg_backend_pid() ) SELECT psa.* FROM pg_stat_activity psa INNER JOIN lock_pid lp ON …

hadoop大数据平台

java环境 java-1.8.0-openjdk-devel jvm虚拟机 hadoop软件解压即可用 JAVA_HOME是java的安装路径 hadoop对主机名强依赖&#xff0c;意思是主机名hostname要能ping通 jar命令 是运行一个jar文件 hadoop要运行&#xff0c;主要依赖两个的配置 JAVA_HOME HADOOP_CONF_DIR hadoop里…

深入Zookeeper节点操作:高级功能与最佳实践

Zookeeper之节点基本操作&#xff08;二&#xff09; 在《Zookeeper之节点基本操作&#xff08;一&#xff09;》中&#xff0c;我们介绍了如何创建、读取、更新、删除节点的基本操作。接下来将进一步探讨Zookeeper中节点的进阶操作和更多细节&#xff0c;包括节点的监视&…

PICO+Unity MR视频透视

官方链接&#xff1a;视频透视 | PICO 开发者平台 在 PXR_Manager (Script) 面板上&#xff0c;勾选 Video Seethrough 选框 2.将 Clear Flags 设置为 Solid Color。颜色设置为黑色&#xff0c;Alpha 通道设置为完全透明 3.在代码中开启透视 using System.Collections; usin…

Linux系统中,列出当前目录下所有文件和文件夹的大小,并按大小从大到小排序

du -sh * | sort -nr用于列出当前目录下所有文件和文件夹的大小&#xff0c;并按大小从大到小排序。 du -sh *&#xff1a;du&#xff08;disk usage&#xff09; 是一个用于检查文件和目录在磁盘上占用空间的命令。 -s&#xff08;summarize&#xff09; 选项意味着只显示每个…

单例模式详解:如何优雅地实现线程安全的单例

一、什么是单例模式&#xff1f; 单例模式是一种常用的设计模式&#xff0c;目的就是确保某个类在程序中只有一个实例&#xff0c;并且提供一个全局访问入口。通过这个模式&#xff0c;我们能够保证全局共享同一个对象实例&#xff0c;避免了多次实例化同一个对象&#xff0c;…

如何对PHP的API接口权限认证

对PHP的API接口进行权限认证是确保只有授权的用户或应用程序可以访问特定API资源的重要环节。以下是一些常用的PHP API接口权限认证方法&#xff1a; 一、API密钥&#xff08;API Key&#xff09; API密钥是一种简单的鉴权方式&#xff0c;通常用于限制对API的访问。每个用户…