MySQL数据的增删改查

小练习

1. 在数据库 exercise 中创建课程表 stu_course ,包含字段课程编号 (number) ,类型为整数,长度为 11 ,是主键,自增长,非空、课程名称 (name) ,类型为字符串,长度为 20 ,非空、学分 (score) ,类型 为浮点数,小数点后面保留 2 位有效数字, 长度为 5 ,非空
CREATE DATABASE IF NOT EXISTS exercise DEFAULT CHARACTER SET UTF8 COLLATE
UFT8_GENERAL_CI;
USE exercise;
CREATE TABLE IF NOT EXISTS stu_course (
`number` INT ( 11 ) AUTO_INCREMENT NOT NULL PRIMARY KEY COMMENT ' 课程编号 ' ,
name VARCHAR ( 20 ) NOT NULL COMMENT ' 课程名称 ' ,
score FLOAT ( 5 , 2 ) NOT NULL COMMENT ' 学分 '
) ENGINE = InnoDB CHARSET = UFT8 COMMENT = ' 课程表 ' ;
2. 将课程表重命名为 course
ALTER TABLE stu_score RENAME AS course;
3. 在课程表中添加字段学时 (time) ,类型为整数,长度为 3 ,非空
ALTER TABLE course ADD `time` INT ( 3 ) NOT NULL COMMENT ' 学时 ' ;
4. 修改课程表学分类型为浮点数,小数点后面保留 1 位有效数字,长度为 3 ,非空
ALTER TABLE course MODIFY score FLOAT ( 3 , 1 ) NOT NULL COMMENT ' 学分 ' ;
5. 删除课程表
DROP TABLE IF EXISTS course;
6. 删除数据库 exercise
DROP DATABASE IF EXISTS exercise;

章节内容

        DML--插入语句 重点
        DML--修改语句 重点
        DML--删除语句 重点
        DQL -- 查询语句 重点
        聚合函数 重点
        分组查询 重点
        查询排序 重点
        分页查询 重点

章节目标

        掌握DML-- 插入语句
        掌握DML-- 修改语句
        掌握DML-- 删除语句
        掌握DQL-- 查询语句
        掌握聚合函数的使用
        掌握分组查询
        掌握查询排序
        掌握分页查询

第一节 DML语句

1. 什么是DML

DML 全称为 Data Manipulation Language ,表示数据操作语言。主要体现于对表数据的增删改操作。因此 DML 仅包括 INSERT UPDATE DELEETE 语句。

2. INSERT语句

-- 需要注意, VALUES 后的字段值必须与表名后的字段名一一对应
INSERT INTO 表名 ( 字段名 1, 字段名 2, ..., 字段名 n ) VALUES ( 字段值 1, 字段值 2, ..., 字段值
n ) ;
-- 需要注意, VALUES 后的字段值必须与创建表时的字段顺序保持一一对应
INSERT INTO 表名 VALUES ( 字段值 1, 字段值 2, ..., 字段值 n ) ;
-- 一次性插入多条数据
INSERT INTO 表名 ( 字段名 1, 字段名 2, ..., 字段名 n ) VALUES ( 字段值 1, 字段值 2, ..., 字段值
n ) , ( 字段值 1, 字段值 2, ..., 字段值 n ) , ... , ( 字段值 1, 字段值 2, ..., 字段值 n ) ;
INSERT INTO 表名 VALUES ( 字段值 1, 字段值 2, ..., 字段值 n ) , ( 字段值 1, 字段值 2, ..., 字段值
n ) , ..., ( 字段值 1, 字段值 2, ..., 字段值 n ) ;
示例
向课程表中插入数据
INSERT INTO course ( `number` , name, score, `time` ) VALUES ( 1 , 'Java 基础 ' , 4 , 40 ) ;
INSERT INTO course VALUES ( 2 , ' 数据库 ' , 3 , 20 ) ;
INSERT INTO course ( `number` , score, name, `time` ) VALUES ( 3 , 5 , 'Jsp' , 40 ) ;
INSERT INTO course ( `number` , name, score, `time` ) VALUES ( 4 , 'Spring' , 4 , 5 ) , ( 5 ,
'Spring Mvc' , 2 , 5 ) ;
INSERT INTO course VALUES ( 6 , 'SSM' , 2 , 3 ) , ( 7 , 'Spring Boot' , 2 , 2 ) ;

3. UPDATE语句

UPDATE 表名 SET 字段名 1 = 字段值 1 [ , 字段名 2 = 字段值 2, ..., 字段名 n = 字段值 n ] [ WHERE 修改条件 ]

3.1 WHERE条件子句

Java 中,条件的表示通常都是使用关系运算符来表示,在 SQL 语句中也是一样,使用 >, <, >=, <=, != 来表示。不同的是,除此之外, SQL 中还可以使用 SQL 专用的关键字来表示条件。这些将在后面的 DQL 句中详细讲解。
Java 中,条件之间的衔接通常都是使用逻辑运算符来表示,在 SQL 语句中也是一样,但通常使用 AND来表示逻辑与 (&&) ,使用 OR 来表示逻辑或 (||)
示例
WHERE time > 20 && time < 40 ; <=> WHERE time > 20 and time < 40 ;

3.2 UPDATE语句

示例
将数据库的学分更改为 4 ,学时更改为 15
UPDATE course SET score = 4 , `time` = 15 WHERE name = ' 数据库 ' ;

4. DELETE语句

DELETE FROM 表名 [ WHERE 删除条件 ] ;
示例
删除课程表中课程编号为 1 的数据
DELETE FROM course WHERE `number` = 1 ;

5. TRUNCATE语句

-- 清空表中数据
TRUNCATE [ TABLE ] 表名 ;
示例
清空课程表数据
TRUNCATE course;

6. DELETETRUNCATE区别

        1.DELETE语句根据条件删除表中数据,而 TRUNCATE 语句则是将表中数据全部清空;如果 DELETE 句要删除表中所有数据,那么在效率上要低于 TRUNCATE 语句。
        2.如果表中有自增长列,TRUNCATE 语句会重置自增长的计数器,但 DELETE 语句不会。
        3.TRUNCATE语句执行后,数据无法恢复,而 DELETE 语句执行后,可以使用事务回滚进行恢复。

第二节 DQL语句

1. 什么是DQL

DQL 全称是 Data Query Language ,表示数据查询语言。体现在数据的查询操作上,因此, DQL 仅包括 SELECT 语句。

2. SELECT语句

SELECT ALL /DISTINCT * | 字段名 1 AS 别名 1 [ , 字段名 1 AS 别名 1, ..., 字段名 n AS 别名 n ]
FROM 表名 WHERE 查询条件
解释说明
ALL 表示查询所有满足条件的记录,可以省略; DISTINCT 表示去掉查询结果中重复的记录
AS 可以给数据列、数据表取一个别名
示例: 从课程表中查询课程编号小于 5 的课程名称
SELECT name FROM course WHERE `number` < 5 ;
从课程表中查询课程名称为 "Java 基础 " 的学分和学时
SELECT score, `time` FROM course WHERE name = 'Java 基础 ' ;

3. 比较操作符

示例: 从课程表查询课程名为 NULL 的课程信息
SELECT * FROM course WHERE name IS NULL ;
示例: 从课程表查询课程名不为 NULL 的课程信息
SELECT * FROM course WHERE name IS NOT NULL ;
示例: 从课程表查询学分在 2~4 之间的课程信息
SELECT * FROM course WHERE score BETWEEN 2 AND 4 ;
示例: 从课程表查询课程名包含 "V" 的课程信息
SELECT * FROM course WHERE name LIKE '%v%' ;
示例: 从课程表查询课程名以 "J" 开头的课程信息
SELECT * FROM course WHERE name LIKE 'J%' ;
示例: 从课程表查询课程名以 "p" 结尾的课程信息
SELECT * FROM course WHERE name LIKE '%p' ;
示例: 从课程表查询课程编号为 1,3,5 的课程信息
SELECT * FROM course WHERE `number` IN ( 1 , 3 , 5 ) ;

4. 分组

数据表准备:新建学生表 student ,包含字段学号( no ),类型为长整数,长度为 20 ,是主键,自增长,非空;姓名( name ),类型为字符串,长度为 20 ,非空;性别( sex ),类型为字符串,长度为 2 ,默认值为 " " ;年龄( age ),类型为整数,长度为 3 ,默认值为 0 ;成绩( score ),类型为浮点 数,长度为 5 ,小数点后面保留 2 位有效数字
DROP TABLE IF EXISTS student;
CREATE TABLE student (
no BIGINT ( 20 ) AUTO_INCREMENT NOT NULL PRIMARY KEY COMMENT ' 学号,主键 ' ,
name VARCHAR ( 20 ) NOT NULL COMMENT ' 姓名 ' ,
sex VARCHAR ( 2 ) DEFAULT ' ' COMMENT ' 性别 ' ,
age INT ( 3 ) DEFAULT 0 COMMENT ' 年龄 ' ,
score DOUBLE ( 5 , 2 ) COMMENT ' 成绩 '
) ENGINE = InnoDB CHARSET = UTF8 COMMENT = ' 学生表 ' ;
插入测试数据:
INSERT INTO student ( no , name, sex, age, score ) VALUES ( DEFAULT , ' 张三 ' , ' ' , 20 ,
59 ) ;
INSERT INTO student ( no , name, sex, age, score ) VALUES ( DEFAULT , ' 李四 ' , ' ' , 19 ,
62 ) ;
INSERT INTO student ( no , name, sex, age, score ) VALUES ( DEFAULT , ' 王五 ' , ' 其他 ' ,
21 , 62 ) ;
INSERT INTO student ( no , name, sex, age, score ) VALUES ( DEFAULT , ' 龙华 ' , ' ' , 22 ,
75 ) ;
INSERT INTO student ( no , name, sex, age, score ) VALUES ( DEFAULT , ' 金凤 ' , ' ' , 18 ,
80 ) ;
INSERT INTO student ( no , name, sex, age, score ) VALUES ( DEFAULT , ' 张华 ' , ' 其他 ' ,
27 , 88 ) ;
INSERT INTO student ( no , name, sex, age, score ) VALUES ( DEFAULT , ' 李刚 ' , ' ' , 30 ,
88 ) ;
INSERT INTO student ( no , name, sex, age, score ) VALUES ( DEFAULT , ' 潘玉明 ' , ' ' ,
28 , 81 ) ;
INSERT INTO student ( no , name, sex, age, score ) VALUES ( DEFAULT , ' 凤飞飞 ' , ' 其他 ' ,
32 , 90 ) ;

4.1 分组查询

SELECT ALL /DISTINCT * | 字段名 1 AS 别名 1 [ , 字段名 1 AS 别名 1, ..., 字段名 n AS 别名 n ]
FROM 表名 WHERE 查询条件 GROUP BY 字段名 1 ,字段名 2,..., 字段名 n
分组查询所得的结果只是该组中的第一条数据。
示例: 从学生表查询成绩在 80 分以上的学生信息并按性别分组
SELECT * FROM student WHERE score > 80 GROUP BY sex;
示例: 从学生表查询成绩在 60~80 之间的学生信息并按性别和年龄分组
SELECT * FROM student WHERE score BETWEEN 60 AND 80 GROUP BY sex, age;

4.2 聚合函数

        COUNT() : 统计满足条件的数据总条数
示例: 从学生表查询成绩在 80 分以上的学生人数
SELECT COUNT ( * ) total FROM student WHERE score > 80 ;
        SUM(): 只能用于数值类型的字段或者表达式,计算该满足条件的字段值的总和
示例: 从学生表查询不及格的学生人数和总成绩
SELECT COUNT ( * ) totalCount, SUM ( score ) totalScore FROM student WHERE
score < 60 ;
        AVG(): 只能用于数值类型的字段或者表达式,计算该满足条件的字段值的平均值
示例: 从学生表查询男生、女生、其他类型的学生的平均成绩
SELECT sex, AVG ( score ) avgScore FROM student GROUP BY sex;
        MAX(): 只能用于数值类型的字段或者表达式,计算该满足条件的字段值的最大值
示例: 从学生表查询学生的最大年龄
SELECT MAX ( age ) FROM student;
        MIN(): 只能用于数值类型的字段或者表达式,计算该满足条件的字段值的最小值
示例: 从学生表查询学生的最低分
SELECT MIN ( score ) FROM student;

4.3 分组查询结果筛选

SELECT ALL /DISTINCT * | 字段名 1 AS 别名 1 [ , 字段名 1 AS 别名 1, ..., 字段名 n AS 别名 n ]
FROM 表名 WHERE 查询条件 GROUP BY 字段名 1 ,字段名 2,..., 字段名 n HAVING 筛选条件
分组后如果还需要满足其他条件,则需要使用 HAVING 子句来完成。
示例: 从学生表查询年龄在 20~30 之间的学生信息并按性别分组,找出组内平均分在 74 分以上的组
SELECT * FROM student WHERE age BETWEEN 20 AND 30 GROUP BY sex HAVING
avg ( score ) > 74 ;

5. 排序

SELECT ALL /DISTINCT * | 字段名 1 AS 别名 1 [ , 字段名 1 AS 别名 1, ..., 字段名 n AS 别名 n ]
FROM 表名 WHERE 查询条件 ORDER BY 字段名 1 ASC | DESC ,字段名 2 ASC | DESC ,..., 字段名 n ASC | DESC
ORDER BY 必须位于 WHERE 条件之后。
示例: 从学生表查询年龄在 18~30 岁之间的学生信息并按成绩从高到低排列,如果成绩相同,则按年龄从小到大排列
SELECT * FROM student WHERE age BETWEEN 18 AND 30 ORDER BY score DESC , age ASC ;

6. 分页

SELECT ALL /DISTINCT * | 字段名 1 AS 别名 1 [ , 字段名 1 AS 别名 1, ..., 字段名 n AS 别名 n ]
FROM 表名 WHERE 查询条件 LIMIT 偏移量 , 查询条数
LIMIT 的第一个参数表示偏移量,也就是跳过的行数。
LIMIT 的第二个参数表示查询返回的最大行数,可能没有给定的数量那么多行。
示例: 从学生表分页查询成绩及格的学生信息,每页显示 3 条,查询第 2 页学生信息
SELECT * FROM student WHERE score >= 60 LIMIT 3 , 3 ;
注意:
如果一个查询中包含分组、排序和分页,那么它们之间必须按照 分组 -> 排序 -> 分页 的先后顺序列。

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

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

相关文章

The Rise and Potential of Large Language Model Based Agents: A Survey 导读

这篇论文探讨了基于大型语言模型(LLM)的智能代理的发展和潜力。传统的AI算法或训练策略只能提高特定任务的表现,而LLM作为通用且强大的模型,可以为设计适应不同场景的智能代理提供基础。作者提出了一个包含“大脑”、“感知”和“行动”的通用框架,并将其应用于单个代理、…

macos Android平台签名证书(.keystore)

一、申请appid的使用说明&#xff08;有appid的请忽略申请apid&#xff09; 创建应用 申请的appid在源码视图填写后会自动生成一个对应的包名 ⚠️注意&#xff1a;申请appid的时候应用名称和项目名称保持一致。 二、 Android如何使用自用证书进行打包 1.找到安装jdk的路径 …

【深度学习】【AutoDL】【SSH】通过VSCode和SSH使用AutoDL服务器训练模型

身边没有显卡资源或不足以训练模型时&#xff0c;可以租赁服务器的显卡。 1、注册AutoDL并配置环境 首先打开AutoDL官网&#xff0c;注册账号并租赁自己期望的显卡资源 点击“租赁”之后&#xff0c;我们要继续选择基础环境。此处&#xff0c;我们让其自动配置好基础的pytor…

.NET中的matplotlib平替,ScottPlot简单使用

文章目录 前言解决方案Python调用.NET 原生解决 ScottPlot找到文章ScottPlot Nuget安装简单代码测试代码跑不了5.0新版本测试 总结 前言 我之前在学OpenCV 三语言开发的时候&#xff0c;遇到了一个问题&#xff0c;怎么可视化的显示数据。Python有matplotlib&#xff0c;那么C…

量化交易学习2(因子研究)

因子有效性检验 参考1 参考2 在多因子研究框架中&#xff0c;因子的有效性检验是不可避免的工作&#xff0c;其本质是衡量一个因子的选股能力。 目前学术界和业界普遍使用的两种方法&#xff1a; 相关性检验 因子的相关性检验即检验单因子和收益率之间是否存在相关性 IC值 计…

20240126请问在ubuntu20.04.6下让GTX1080显卡让whisper工作在large模式下?

20240126请问在ubuntu20.04.6下让GTX1080显卡让whisper工作在large模式下&#xff1f; 2024/1/26 21:19 问GTX1080模式使用large该如何配置呢&#xff1f; 这个问题没有完成&#xff0c;可能需要使用使用显存更大的显卡了&#xff01; 比如GTX1080Ti 11GB&#xff0c;更猛的可…

C++(Qt)软件调试---静态分析工具clang-tidy(18)

C(Qt)软件调试—静态分析工具clang-tidy&#xff08;18&#xff09; 文章目录 C(Qt)软件调试---静态分析工具clang-tidy&#xff08;18&#xff09;1、概述2、clang-tidy基本用法3、目前已有检查项4、Qt Creator中安装clang-tidy5、Qt Creator中使用clang-tidy6、Clang-Tidy配置…

websocket 通信协议

websocket是什么 答: 它是一种网络通信协议&#xff0c;是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 意思就是服务器可以主动向客户端推送信息&#xff0c;客户端也可以主动向服务器发送信息 属于服务器推送技术的一种. 为什么需要websocket? 疑问?…

修复WordPress内部服务器错误的步骤及解决方案

WordPress是一款广泛使用的开源内容管理系统&#xff0c;但在使用过程中&#xff0c;可能会遇到各种内部服务器错误。这些错误可能由于多种原因引起&#xff0c;例如插件冲突、文件权限问题、服务器配置不当等。为了帮助您快速解决这些问题&#xff0c;本文将为您提供一套详细的…

数据结构排序算详解(动态图+代码描述)

目录 1、直接插入排序&#xff08;升序&#xff09; 2、希尔排序&#xff08;升序&#xff09; 3、选择排序&#xff08;升序&#xff09; 方式一&#xff08;一个指针&#xff09; 方式二&#xff08;两个指针&#xff09; 4、堆排序&#xff08;升序&#xff09; 5、冒…

equence to Sequence Learning with Neural Networks 导读

本文介绍了一种基于深度神经网络&#xff08;DNN&#xff09;的序列到序列学习方法&#xff0c;该方法使用多层长短时记忆网络&#xff08;LSTM&#xff09;将输入序列映射为固定维度向量&#xff0c;并使用另一个深LSTM解码目标序列。在英语到法语翻译任务上&#xff0c;该方法…

QtRVSim(二)一个 RISC-V 程序的解码流程

继上一篇文章简单代码分析后&#xff0c;本文主要调研如何实现对指令的解析运行。 调试配置 使用 gdb 工具跟踪调试运行。 c_cpp_properties.json 项目配置&#xff1a; {"name": "QtRvSim","includePath": ["${workspaceFolder}/**&quo…

Spring5系列学习文章分享---第五篇(事务概念+特性+案例+注解声明式事务管理+参数详解 )

目录 事务事务概念什么是事务事务四个特性&#xff08;ACID&#xff09; 搭建事务操作环境Spring 事务管理介绍注解声明式事务管理声明式事务管理参数配置XML 声明式事务管理事务操作&#xff08;完全注解声明式事务管理&#xff09;感谢阅读 开篇: 欢迎再次来到 Spring 5 学习…

3. MATLAB中Plot绘制放大特定的区域

在MATLAB中&#xff0c;我们经常需要绘制图形并进行一些自定义的操作。在本示例中&#xff0c;我们将演示如何在MATLAB中绘制一个图形&#xff0c;并通过放大某个特定的区域来突出显示。 ## 原始图形 首先&#xff0c;我们绘制了一个包含正弦和余弦函数的图形。 % MATLAB 代…

RabbitMQ 笔记二

1.Spring 整合RabbitMQ 生产者消费者 创建生产者工程添加依赖配置整合编写代码发送消息 创建消费者工程添加依赖配置整合编写消息监听器 2.创建工程RabbitMQ Producers spring-rabbitmq-producers <?xml version"1.0" encoding"UTF-8"?> <pr…

【计算机图形学】实验五 一个简单的交互式绘图系统(实验报告分析+截图+源码)

可以先看一看这篇呀~【计算机图形学】专栏前言-CSDN博客https://blog.csdn.net/m0_55931547/article/details/135863062 目录 一、实验目的 二、实验内容

77 C++对象模型探索。虚函数- 从静态联编,动态联编出发,分析 虚函数调用问题探究

什么叫做单纯的类&#xff1a; 比较简单的类&#xff0c;尤其不包括 虚函数 和虚基类。 什么叫不单纯的类&#xff1a; 从上一章的学习我们知道&#xff0c;在某些情况下&#xff0c;编译器会往类内部增加一些我们看不见但是真实存在的成员变量&#xff0c;例如vptr&#xff…

【shell-10】shell实现的各种kafka脚本

kafka-shell工具 背景日志 log一.启动kafka->(start-kafka)二.停止kafka->(stop-kafka)三.创建topic->(create-topic)四.删除topic->(delete-topic)五.获取topic列表->(list-topic)六. 将文件数据 录入到kafka->(file-to-kafka)七.将kafka数据 下载到文件-&g…

Linux内核中USB设备驱动实现

USB 设备驱动&#xff1a; 一、USB 描述符&#xff1a;&#xff08;存在于USB 的E2PROM里面&#xff09; 1、 设备描述符&#xff1a;struct usb_device_descriptor 2、 配置描述符&#xff1a;struct usb_config_descriptor 3、 接口描述符&#xff1a;struct usb_interfa…

【Deeplabv3+】Ubutu18.04中使用pytorch复现Deeplabv3+第三步)-----CityscapesScripts生成自己的标签

本文是在前面两篇文章的基础上&#xff0c;讲解如何更改训练数据集颜色&#xff0c;需要与前面两篇文章连起来看。 本文用于修改cityscapes数据集的标签颜色与Semankitti数据集的标签一致&#xff0c;对修改后的数据集进行训练。需要下载两个开发工具包和一个数据集&#xff0…