MySQL数据表的增删改查(基础)(CRUD)

1.CRUD

注释:在SQL中可以使用“--空格+描述”来表示注释说明.

CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写.

2.新增(Create)

语法: insert into 表名 values (值,值...);

into --可以省略;

values -- 关键字.

下面以一张学生表为例;

2.1 单行数据 + 全列插入

-- 插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致

INSERT INTO student VALUES (100, 10000, '唐三藏');

INSERT INTO student VALUES (101, 10001, '孙悟空');

2.2 多行数据 + 指定列插入

-- 插入两条记录,value_list 数量必须和指定列数量及顺序一致

INSERT INTO student (id, sn, name) VALUES

(102, 20001, '曹孟德'),

(103, 20002, '孙仲谋');

插入时间;

 3. 查询

首先创建一张表,并插入一些数据作为案例;

-- 创建考试成绩表

DROP TABLE IF EXISTS exam_result;    //如果之前创建过这个名字的表就删除掉

CREATE TABLE exam_result (

id INT,

name VARCHAR(20),

chinese DECIMAL(3,1),

math DECIMAL(3,1),

english DECIMAL(3,1)

);

-- 插入测试数据

INSERT INTO exam_result (id,name, chinese, math, english) VALUES

(1,'唐三藏', 67, 98, 56),

(2,'孙悟空', 87.5, 78, 77),

(3,'猪悟能', 88, 98.5, 90),

(4,'曹孟德', 82, 84, 67),

(5,'刘玄德', 55.5, 85, 45),

(6,'孙权', 70, 73, 78.5),

(7,'宋公明', 75, 65, 30);

3.1 全列查询

-- 通常情况下不建议使用 * 进行全列查询

-- 1. 查询的列越多,意味着需要传输的数据量越大;

-- 2. 可能会影响到索引的使用。

SELECT * FROM exam_result;

3.2 指定列查询

-- 指定列的顺序不需要按定义表的顺序来

SELECT id, name, english FROM exam_result;

3.3 查询字段为表达式

-- 表达式不包含字段

SELECT id, name, 10 FROM exam_result;

-- 表达式包含一个字段

SELECT id, name, english + 10 FROM exam_result;

-- 表达式包含多个字段

SELECT id, name, chinese + math + english FROM exam_result;

  

3.4 别名

为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称.

-- 结果集中,表头的列名=别名

SELECT id, name, chinese + math + english 总分 FROM exam_result;

 3.5 去重: DISTINCT

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

  

98分重复了 

3.6 排序:ORDER BY 

-- ASC 为升序(从小到大)

-- DESC 为降序(从大到小)

-- 默认为 ASC

1. 没有 ORDER BY 子句的查询,返回的顺序是未定义的.

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

3. 使用表达式及别名排序.

-- 查询同学及总分,由高到低

SELECT name, chinese + english + math total FROM exam_result ORDER BY total DESC;

 

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

-- 查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示

SELECT name, math, english, chinese FROM exam_result

ORDER BY math DESC, english, chinese;

 

唐三藏与孙悟空的数学成绩相等的情况下,又按照英语成绩排. 

3.7 条件查询 :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)

注: 1. WHERE条件可以使用表达式,但不能使用别名。 2. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分.

基本查询:

-- 查询英语不及格的同学及英语成绩

( < 60 ) SELECT name, english FROM exam_result WHERE english < 60;

-- 查询语文成绩好于英语成绩的同学

SELECT name, chinese, english FROM exam_result WHERE chinese > english;

-- 查询总分在 200 分以下的同学

SELECT name, chinese + math + english 总分 FROM exam_result

WHERE chinese + math + english < 200; 

 

AND与OR:

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

SELECT * FROM exam_result WHERE chinese > 80 and english > 80;

-- 查询语文成绩大于80分,或英语成绩大于80分的同学

SELECT * FROM exam_result WHERE chinese > 80 or english > 80;

范围查询:

1. BETWEEN ... AND ...

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

SELECT name, chinese FROM exam_result WHERE chinese BETWEEN 80 AND 90;

-- 使用 AND 也可以实现

SELECT name, chinese FROM exam_result WHERE chinese >= 80 AND chinese <=90;

 

2. IN

-- 查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩

SELECT name, math FROM exam_result WHERE math IN (58, 59, 98, 99);

-- 使用 OR 也可以实现

SELECT name, math FROM exam_result WHERE math = 58 OR math = 59 OR math = 98 OR math = 99;

 

模糊查询: LIKE

-- % 匹配任意多个(包括 0 个)字符

SELECT name FROM exam_result WHERE name LIKE '孙%';-- 匹配到孙悟空、孙权

-- _ 匹配严格的一个任意字符

SELECT name FROM exam_result WHERE name LIKE '孙_';-- 匹配到孙权

 

NULL 的查询:IS [NOT] NULL

-- 查询 qq_mail 已知的同学姓名

SELECT name, qq_mail FROM student WHERE qq_mail IS NOT NULL;

-- 查询 qq_mail 未知的同学姓名

SELECT name, qq_mail FROM student WHERE qq_mail IS NULL;

3.8 分页查询 : LIMIT

-- 起始下标为 0

-- 从 0 开始,筛选 n 条结果

SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;

-- 从 s 开始,筛选 n 条结果

SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;

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

SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;

按 id 进行分页,每页 3 条记录,分别显示 第 1、2、3 页

-- 第 1 页

SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3 OFFSET 0;

-- 第 2 页

SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3 OFFSET 3;

-- 第 3 页,如果结果不足 3 个,不会有影响

SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3 OFFSET 6;

4.修改(Update)

-- 将孙悟空同学的数学成绩变更为 80 分

UPDATE exam_result SET math = 80 WHERE name = '孙悟空';

-- 将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分

UPDATE exam_result SET math = 60, chinese = 70 WHERE name = '曹孟德';

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

UPDATE exam_result SET math = math + 30 ORDER BY chinese + math + english LIMIT 3;

-- 将所有同学的语文成绩更新为原来的 2 倍

UPDATE exam_result SET chinese = chinese * 2;

 

下面这个出错是因为在前面chinese DECIMAL(3,1)

我们在创建表的时候decimal 中的3表示数据的长度,1表示小数点后面的位数.而我们的某些数据在操作候长度达到了4.

5.删除(Delete)

-- 删除孙悟空同学的考试成绩

DELETE FROM exam_result WHERE name = '孙悟空';

-- 删除整张表数据

DROP TABLE IF EXISTS test;

-- 删除整表数据

DELETE FROM for_delete;

 

 注意:在这里使用drop关键字,删除的是整张表,而用delete关键字,删除的是表的内容,表的结构还在.

 

 

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

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

相关文章

IDEA编写各种WordCount运行

目录 一、编写WordCount(Spark_scala)提交到spark高可用集群 1.项目结构 2.导入依赖 3.编写scala版的WordCount 4.maven打包 5.运行jar包 ​6.查询hdfs的输出结果 二、本地编写WordCount(Spark_scala)读取本地文件 1.项目结构 2.编写scala版的WordCount 3.编辑Edit …

HDFS的架构优势与基本操作

目录 写在前面一、 HDFS概述1.1 HDFS简介1.2 HDFS优缺点1.2.1 优点1.2.2 缺点 1.3 HDFS组成架构1.4 HDFS文件块大小 二、HDFS的Shell操作&#xff08;开发重点&#xff09;2.1 基本语法2.2 命令大全2.3 常用命令实操2.3.1 上传2.3.2 下载2.3.3 HDFS直接操作 三、HDFS的API操作3…

influxdb2使用

&#xff08;作者&#xff1a;陈玓玏&#xff09; influxdb2首次使用时&#xff0c;通过k8s部署的&#xff0c;所以进入pod内部执行命令。 先在k8sdashboard找到influx的pod&#xff0c;点击执行&#xff0c;即可进入命令行界面。 首次连接时&#xff0c;通过influx setup启动…

Tomcat部署web项目与idea中配置web项目方法【通俗易懂】

✨前言✨   本文章主要介绍tomcat环境的配置&#xff0c;idea配置web项目&#xff0c;idea一般项目中配置tomcat&#xff0c;内容有点长&#xff0c;建议点击目录跳转阅读&#xff0c;文中所含均为官方文件&#xff0c;请放心使用。 &#x1f352;欢迎点赞 &#x1f44d; 收藏…

Visual Studio 2022 配置“Debug|x64”的 Designtime 生成失败。IntelliSense 可能不可用。

今天写代码&#xff0c;无缘无故就给我整个这个错误出来&#xff0c;我一头雾水。 经过我几个小时的奋战&#xff0c;终于解决问题 原因就是这个Q_INTERFACES(&#xff09;宏&#xff0c;我本想使用Q_DECLARE_INTERFACE Q_INTERFACES这两个Qt宏实现不继承QObject也能使用qobjec…

【AI+CAD】(二)LLM和VLM生成结构化数据结构(PPT/CAD/DXF)

当前LLM和VLM在PPT生成任务上已经小有成效,如ChatPPT。 @TOC 1. PPT-LLM LLM根据用户的instruction生成规范的绘制ppt的API语句:即使是最强的GPT-4 + CoT也只能达到20-30%的内容准确度。 LLM输入:User_instruction(当前+过去)、PPT_content、PPT_reader_API。其中 PPT_rea…

STM32F103 CubeMX 定时器输出PWM控制呼吸灯

STM32F103 CubeMX 定时器输出PWM控制呼吸灯 1. 生成代码1. 1 配置外部时钟&#xff0c;SWD口1.2 配置定时器31.3 配置定时器2 2. 代码编写的部分 使用的cubmx 软件的版本&#xff1a;6.2.0 最新版本 6.10&#xff08;2024年3月11日&#xff09; 1. 生成代码 1. 1 配置外部时钟…

Opencascade基础教程(9):切换视图

1、切换视图 1、1 增加视图切换按钮&#xff0c;并添加消息响应函数。 void COCCDemoView::OnButtonFrontview() {//前视图m_View->SetProj(V3d_Yneg);m_View->FitAll(); }void COCCDemoView::OnButtonRearview() {//后视图m_View->SetProj(V3d_Ypos);m_View->Fit…

Spring Web MVC入门(1)

什么是Spring Web MVC? 定义:Spring Web MVC是基于Servlet构建的原始Web框架,从一开始就包含在Spring框架中.它的正式名称"Spring Web MVC"来自其源模块的名称(Spring-webmvc),但是它通常被称为"Spring MVC". 什么是Servlet? Servlet是一种实现动态页面…

【linux线程(二)】线程互斥与线程同步

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; Linux线程 1. 前言2. 多线程互…

比Let‘s Encrypt更简单更齐全的免费证书申请教程

步骤一 打开JoySSL官网&#xff0c;注册属于你的专属账号&#xff1b; 永久免费SSL证书申请地址真正完全且永久免费&#xff01;不用您花一分钱&#xff0c;SSL证书免费使用90天&#xff0c;并且还支持连续签发。JoySSL携手全球权威可信顶级根&#xff0c;自研新一代SSL证书&…

Elasticsearch:使用标记修剪提高文本扩展性能

作者&#xff1a;来自 Elastic Kathleen DeRusso 本博客讨论了 ELSER 性能的令人兴奋的新增强功能&#xff0c;该增强功能即将在 Elasticsearch 的下一版本中推出&#xff01; 标记&#xff08;token&#xff09;修剪背后的策略 我们已经详细讨论了 Elasticsearch 中的词汇和…

【Java 并发】AbstractQueuedSynchronizer 中的 Condition

1 简介 任何一个 Java 对象都天然继承于 Object 类, 在线程间实现通信的往往会应用到 Object 的几个方法, 比如 wait(), wait(long timeout), wait(long timeout, int nanos) 与 notify(), notifyAll() 几个方法实现等待 / 通知机制。同样的, 在 Java Lock 体系下也有同样的方…

【Python】进阶学习:计算一个人BMI(身体质量指数)指数

【Python】进阶学习&#xff1a;计算一个人BMI&#xff08;身体质量指数&#xff09;指数 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教…

考研失败, 学点Java打小工——Day3

1 编码规范——卫语句 表达异常分支时&#xff0c;少用if-else方式。   比如成绩判断中对于非法输入的处理&#xff1a; /*>90 <100 优秀>80 <90 良好>70 <80 一般>60 <70 及格<60 不及格*/Testpu…

蓝桥杯深度优先搜索|剪枝|N皇后问题|路径之谜(C++)

搜索&#xff1a;暴力法算法思想的具体实现 搜索&#xff1a;通用的方法&#xff0c;一个问题如果比较难&#xff0c;那么先尝试一下搜索&#xff0c;或许能启发出更好的算法 技巧&#xff1a;竞赛时遇到不会的难题&#xff0c;用搜索提交一下&#xff0c;说不定部分判题数据很…

李三清研究引领力学定律新篇章,光子模型图揭秘

一周期内&#xff0c;垂直&#xff0c;曲率不变&#xff0c;方向转向互变&#xff0c;正向反向互变&#xff0c;左旋右旋互变。变无限粗或变无限厚才发生质变&#xff0c;且属于由内向外变换&#xff0c;所以对应变换就是由内点向外点变换。 由于方向转向不能分割&#xff0c;…

画图实战-Python实现某产品全年销量数据多种样式可视化

画图实战-Python实现某产品全年销量数据多种样式可视化 学习心得Matplotlib说明什么是Matplotlib&#xff1f;Matplotlib特性Matplotlib安装 产品订单量-折线图某产品全年订单量数据数据提取和分析绘制折线图 产品订单&销售额-条形图某产品全年订单&销售额数据绘制条形…

Ollama管理本地开源大模型,用Open WebUI访问Ollama接口

现在开源大模型一个接一个的&#xff0c;而且各个都说自己的性能非常厉害&#xff0c;但是对于我们这些使用者&#xff0c;用起来就比较尴尬了。因为一个模型一个调用的方式&#xff0c;先得下载模型&#xff0c;下完模型&#xff0c;写加载代码&#xff0c;麻烦得很。 对于程…

windows中如何将已安装的node.js版本进行更换

第一步&#xff1a;先清除已经安装好的node.js版本 1.按健winR弹出窗口&#xff0c;键盘输入cmd,然后敲回车&#xff08;或者鼠标直接点击电脑桌面最左下角的win窗口图标弹出&#xff0c;输入cmd再点击回车键&#xff09; 然后进入命令控制行窗口&#xff0c;并输入where node…