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.rhkb.cn/news/470424.html

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

相关文章

DeBiFormer实战:使用DeBiFormer实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度&#xff0c;DP多卡&#xff0c;EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

小面馆叫号取餐流程 佳易王面馆米线店点餐叫号管理系统操作教程

一、概述 【软件资源文件下载在文章最后】 小面馆叫号取餐流程 佳易王面馆米线店点餐叫号管理系统操作教程 点餐软件以其实用的功能和简便的操作&#xff0c;为小型餐饮店提供了高效的点餐管理解决方案&#xff0c;提高了工作效率和服务质量 ‌点餐管理‌&#xff1a;支持电…

5G时代的关键元件:射频微波MLCCs市场前景广阔

根据QYResearch调研团队最新发布的《全球射频微波多层陶瓷电容器市场报告2023-2029》显示&#xff0c;预计到2029年&#xff0c;全球射频微波多层陶瓷电容器市场规模将攀升至12.4亿美元&#xff0c;其未来几年内的年复合增长率&#xff08;CAGR&#xff09;预计为5.1%。 以下图…

ElasticSearch学习笔记一:简单使用

一、前言 该系列的文章用于记录本人从0学习ES的过程&#xff0c;首先会对基本的使用进行讲解。本文默认已经安装了ES单机版本&#xff08;当然后续也会有对应的笔记&#xff09;&#xff0c;且对ES已经有了相对的了解&#xff0c;闲话少叙&#xff0c;书开正文。 二、ES简介 …

FFmpeg 4.3 音视频-多路H265监控录放C++开发十三:将AVFrame转换成AVPacket。视频编码原理.编码相关api

前提&#xff1a; 从前面的学习我们知道 AVFrame中是最原始的 视频数据&#xff0c;这一节开始我们需要将这个最原始的视频数据 压缩成 AVPacket数据&#xff0c; 我们前面&#xff0c;将YUV数据或者 RGBA 数据装进入了 AVFrame里面&#xff0c;并且在SDL中显示。 也就是说&…

ODOO学习笔记(8):模块化架构的优势

灵活性与可定制性 业务流程适配&#xff1a;企业的业务流程往往因行业、规模和管理方式等因素而各不相同。Odoo的模块化架构允许企业根据自身的具体业务流程&#xff0c;选择和组合不同的模块。例如&#xff0c;一家制造企业可以启用采购、库存、生产和销售模块&#xff0c;并通…

28.医院管理系统(基于springboot和vue)

目录 1.系统的受众说明 2. 相关技术和开发环境 2.1 相关技术 2.1.1 Java语言 2.1.2 HTML、CSS、JavaScript 2.1.3 Redis 2.1.4 MySQL 2.1.5 SSM框架 2.1.6 Vue.js 2.1.7 SpringBoot 2.2 开发环境 3. 系统分析 3.1 可行性分析 3.1.1 经济可行性 3.1.2 技术…

实时渲染技术如何助力3D虚拟展厅?

实时渲染技术以其强大的图形处理能力和即时反馈特性&#xff0c;在虚拟展厅的创建和体验中发挥着举足轻重的作用。视创云展3D虚拟展厅提供全方位的VR漫游体验&#xff0c;实时渲染技术确保场景细腻逼真&#xff0c;让访客仿佛置身其中&#xff0c;享受沉浸式的视听享受。以下是…

金价大跌,特朗普胜选或成导火索

黄金光芒不再&#xff0c;美元强势崛起 上周特朗普赢得美国总统选举后&#xff0c;金价出现了大幅下跌。这标志着市场情绪正在发生转变&#xff0c;投资者开始从避险资产转向风险资产。 为何金价会下跌&#xff1f; 美元走强&#xff1a; 特朗普的胜选提振了美元&#xff0c;…

springboot项目中,使用ProGuard 对代码进行混淆

springboot项目中&#xff0c;使用ProGuard 对代码进行混淆 使用maven作为构建工具 &#xff0c; 在build中添加如下内容 <build><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</inclu…

[CKS] 关闭API凭据自动挂载

目前的所有题目为2024年10月后更新的最新题库&#xff0c;考试的k8s版本为1.31.1 BackGround 安全审计发现某个Deployment有不合规的服务账号令牌&#xff0c;这可能导致安全漏洞。 Task 首先&#xff0c;修改monitoring namespace中现有的stats-monitor-sa ServiceAccount&…

zabbix监控端界面时间与服务器时间不对应

1. 修改系统时间 # tzselect Please select a continent, ocean, "coord", or "TZ".1) Africa2) Americas3) Antarctica4) Asia5) Atlantic Ocean6) Australia7) Europe8) Indian Ocean9) Pacific Ocean 10) coord - I want to use geographical coordina…

Gsensor加速度传感器数据异常及概率性卡死

关注 点赞 收藏 不错过精彩内容 大家好&#xff0c;我是硬核王同学 今天给大家分享下&#xff0c;经过三个多月解决的Gsensor加速度传感器数据异常及概率性卡死的问题。 数据异常 故事的开始是来自一位客户的投诉&#xff0c;说机器放在桌面上不去动它&#xff0c;语音就会播…

【CSS】“flex: 1“有什么用?

flex 属性的组成 flex 属性是一个复合属性&#xff0c;包含以下三个子属性&#xff1a; flex-grow&#xff1a;决定元素在容器中剩余空间的分配比例。默认值为 0&#xff0c;表示元素不会扩展。当设置为正数时&#xff0c;元素会按照设定比例扩展。flex-shrink&#xff1a;决…

【STM32】基于SPI协议读写SD,详解!

文章目录 0 前言1 SD卡的种类和简介1.1 SD卡的种类1.2 SD卡的整体结构1.3 SD卡运行机制——指令和响应2 SD卡的通信总线2.1 SDIO2.2 SPI3 硬件连接4 代码实践【重点】4.1 HAL库移植4.2 标准库移植4.3 遇到的问题和解决方案5 扩展阅读0 前言 因为项目需要,使用stm32读写sd卡,这…

软件测试面试题(800道)【附带答案】持续更新...

&#xff08;2024版&#xff09;面经 详细笔记部分展示&#xff1a; 测试基础&#xff08;102页&#xff09; Linux基础&#xff08;38页&#xff09; MySQL&#xff08;63页&#xff09; web测试&#xff08;21页&#xff09; API测试&#xff08;46页&#xff09; APP测试&…

带你掌握springboot集成SpringSecurity安全框架

前言&#xff1a; Spring Security 是 Spring 家族中的一个框架&#xff0c;提供了一套 Web 应用安全性的完整解决方案。一般来说&#xff0c;系统的安全性包括用户认证&#xff08;Authentication&#xff09;和用户授权&#xff08;Authorization&#xff09;两个部分。 认证…

【2024最新】基于springboot+vue的闲一品交易平台lw+ppt

作者&#xff1a;计算机搬砖家 开发技术&#xff1a;SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;Java精选实战项…

修改yolo格式的labels类别、删除yolo格式的labels类别

1、项目中&#xff0c;数据集的类别顺序有时会改变&#xff0c;例如a项目类别1是b项目的类别3&#xff0c;&#xff0c;需要用a项目的数据集&#xff0c;只需要改类别就行&#xff0c;就不需要重新标注了&#xff0c;例如a项目的classes是 b项目的classes是 a项目的数据可以用…

Java项目实战II基于微信小程序的个人行政复议在线预约系统微信小程序(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 基于微信小…