【MySQL数据库】数据类型和简单的增删改查

目录

数据库

MySQL的常用数据类型 

 1.数值类型:

2.字符串类型 

3.日期类型

MySQL简单的增删改查 

1.插入数据:

 2.查询数据:

3.修改语句:

4.删除语句:


数据库

    平时我们使用的操作系统都把数据存储在文件中,但是文件存储数据有以下几个缺点:1.文件的安全性问题,2.文件不利于数据查询和管理,3.文件不利于存储海量数据,4.文件在程序中控制不方便。为了解决上面这些问题,专家们设计了一种专门用于管理数据的软件--数据库。

  • 数据库(DB) 是长期储存在计算机内、有组织的、可共享的大量数据的集合

  • 数据库管理系统(DBMS) DBMS是一个大型复杂的基础软件系统,位于用户与操作系统之间的一层数据管理软件。

  • 数据库系统(DBS) 数据库系统由数据库、数据库管理系统(及其应用开发工具)、应用程序、数据库管理员四部分构成。

数据库根据是否以二维表存储数据划分为关系型数据库和非关系型数据库。

关系型数据库非关系型数据库
使用SQL不强制要求,一般不基于SQL实现
事务支持支持不支持
复杂操作支持不支持
海量读写操作效率低效率高
基本结构基于表和列,结构固定灵活性较高

 现在比较知名的关系型数据库有甲骨文的Oracle,MySQL,微软的SQL Server等。

MySQL的常用数据类型 

 1.数值类型:

分为整形和浮点型:

数据类型大小说明对应Java类型
BIT[(M)]M指定位数默认为1二进制数,M范围从1到64,存储数值范围从0到2^M-1Boolean,默认M为1.
TINYINT1字节Byte
SMALLINT2字节Short
INT4字节Integer
BIGINT8字节Long
FLOAT(M,D)4字节单精度,M指定长度,D指定小数位数。会发生精度丢失Float
DOUBLE(M,D)8字节Double
DECIMAL(M,D)M/D最大值+2双精度,M指定长度,D表示小数点位数。精确数值BigDecimal
NUMERIC(M,D)M/D最大值+2同DECIMALBigDecimal

数值类型可以指定为无符号,表示不取负数。1字节表示8bit。

2.字符串类型 

数据类型大小说明对应Java类型
VARCHAR(SIZE)0-65535字节可变长度字符串String
TEXT0-65535字节长文本数据String
MEDIUMTEXT0-16777215字节中等长度文本数据String
BLOB0-65535字节二进制形式的长文本数据byte[]

3.日期类型

数据类型大小说明对应Java类型
DATETIME8字节范围从1000到9999年,不会进行时区的检索及转换
java.util.Date
java.sql.Timestamp
TIMESTAMP4字节范围从1970到2038,自动检索当前时区并进行转换
java.util.Date
java.sql.Timestamp

MySQL简单的增删改查 

增删改查即CRUD,新增数据,查询数据,修改数据,删除数据。数据库的增删改查操作将会是我们在今后操作中遇到的最频繁的工作内容,也是最基础最核心的业务,所以我们必须熟练掌握数据库的增删改查相关代码。

下面我来演示一下相关操作:

这是当前我电脑已经存在的数据库。 使用下面代码创建一个student表

-- 创建一张学生表
DROP TABLE IF EXISTS student;
CREATE TABLE student (id INT,sn INT comment '学号',name VARCHAR(20) comment '姓名',qq_mail VARCHAR(20) comment 'QQ邮箱'
);

 

1.插入数据:

  注意,MySQL在执行语句时不区分大小写。下面往表中插入数据

INSERT INTO student VALUES (100, 10000, '唐三藏', NULL);
INSERT INTO student VALUES (101, 10001, '孙悟空', '11111');//插入多行数据
INSERT INTO student (id, sn, name) VALUES(102, 20001, '曹孟德'),(103, 20002, '孙仲谋');

 2.查询数据:

基本语法:

SELECT
[ DISTINCT ] {* | {column [, column ] ...}
[ FROM table_name ]
[ WHERE ...]
[ ORDER BY column [ ASC | DESC ], ...]
LIMIT ...

2.1全列查询

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

2.2指定列查询

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

2.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;

2.4为查询结果中的列指定别名,语法格式如下:

SELECT column [AS] alias_name [...] FROM table_name;

2.5使用distinct关键字去重

SELECT math FROM exam_result;
+--------+
| math |
+--------+
|     98 |
|     78 |
|     98 |
|     84 |
|     85 |
|     73 |
|     65 |
+--------+
7 rows in set (0.00 sec)
-- 去重结果
SELECT DISTINCT math FROM exam_result;
+--------+
| math |
+--------+
|     98 |
|     78 |
|     84 |
|     85 |
|     73 |
|     65 |
+--------+
6 rows in set (0.00 sec)

2.6使用order by关键字进行排序,

语法:

-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC
SELECT ... FROM table_name [WHERE ...] ORDER BY column [ASC|DESC], [...];
1. 没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
2. NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面
3. 使用 表达式 别名 排序
-- 查询同学及总分,由高到低
SELECT name, chinese + english + math FROM exam_result ORDER BY chinese + english + math DESC;
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;

2.7使用where关键字进行条件查询

-- 查询英语不及格的同学及英语成绩 ( < 60 )
SELECT name, english FROM exam_result WHERE english<60;SELECT * FROM exam_result WHERE chinese > 80 or math>70 and english > 70;
SELECT * FROM exam_result WHERE (chinese > 80 or math>70) and english > 70;SELECT name, chinese FROM exam_result WHERE chinese BETWEEN 80 AND 90;//模糊查询 like
-- % 匹配任意多个(包括 0 个)字符
SELECT name FROM exam_result WHERE name LIKE '孙%';-- 匹配到孙悟空、孙权
-- _ 匹配严格的一个任意字符
SELECT name FROM exam_result WHERE name LIKE '孙_';-- 匹配到孙权

2.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;

3.修改语句:

语法:

UPDATE table_name SET column = expr [, column = expr ...][WHERE ...] [ORDER BY ...] [LIMIT ...]

案例:

-- 将孙悟空同学的数学成绩变更为 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;

4.删除语句:

语法:

DELETE FROM  table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]

案例:

-- 删除孙悟空同学的考试成绩
DELETE FROM exam_result WHERE name = '孙悟空';
-- 删除整张表数据
-- 准备测试表
DROP TABLE IF EXISTS for_delete;
CREATE TABLE for_delete (id INT,name VARCHAR(20)
);
-- 插入测试数据
INSERT INTO for_delete (name) VALUES ('A'), ('B'), ('C');
-- 删除整表数据
DELETE FROM for_delete;

主页已更新完Java基础内容,数据结构基础,

正在更新算法篇,数据库篇,

未来会更新Java项目,SpringBoot,Redis以及各种Java路线会用到的技术。

求点赞!求收藏!求评论!求关注!

谢谢大家!!!!!!!!!

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

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

相关文章

深入了解服务器硬件:从基础知识到实际应用

在当今数字化的社会中&#xff0c;服务器扮演着至关重要的角色&#xff0c;它们是支撑互联网、云计算、大数据等技术发展的基石。而理解服务器硬件的基础知识对于从事IT领域的人员来说至关重要。本文将从服务器硬件的基础知识出发&#xff0c;介绍服务器硬件的组成、作用及其在…

Python算法100例-4.3 多项式之和

完整源代码项目地址&#xff0c;关注博主私信源代码后可获取 1.问题描述2.问题分析3.算法设计4.确定程序框架5.完整的程序 1&#xff0e;问题描述 计算下列多项式的值&#xff1a; 2&#xff0e;问题分析 方法一&#xff1a;把上面多项式中的每一个分项标上记号&#xff0c…

浅谈C++引用的使用以及底层原理

1、引用概念 引用不是新定义一个变量&#xff0c;而 是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它和它引用的变量共用同一块内存空间。 类型& 引用变量名(对象名) 引用实体&#xff1b; 注意&#xff1a;引用类型必须和引用实体…

华清远见作业第五十三天——ARM(第七天)

代码 key_inc.h #ifndef __KEY_INC_H__ #define __KEY_INC_H__ #include "stm32mp1xx_gic.h" #include "stm32mp1xx_exti.h" #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gpio.h"void key1_it_config();void key2_it_config(…

【polarctf的部分题解】

【web】phar —》私有属性赋值 当时遇到不知道privated该怎样赋值才可以&#xff0c;链子挺简单的&#xff0c;但是语法不熟悉 <?php include funs.php; highlight_file(__FILE__); if (isset($_GET[file])) {if (myWaf($_GET[file])) {include($_GET[file]);} else {unse…

案例分析:汽车零配件行业CRM解决方案,成功案例揭秘!

近年来&#xff0c;国家大力推动新能源汽车行业发展&#xff0c;在国内汽车工业实现“弯道超车”的同时&#xff0c;新能源汽车出口海外&#xff0c;新市场有望为自主新能源方向贡献增量。 汽车行业的快速发展&#xff0c;势必会带动汽车零配件行业走向增长。从政策方面看&…

牛客网BC-33 统计成绩(数组排序思想)

题目如下 --------------------------------------------------------------------------------------------------------------------------------- 思路&#xff1a;以数组形式输入&#xff0c;并将数组顺序&#xff08;或者逆序&#xff09;排序&#xff0c;最后输出最大值最…

Redis入门到实战-第十二弹

Redis实战热身Bitfields篇 完整命令参考官网 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://redis.io/Redis概述 Redis是一个开源的&#xff08;采用BSD许可证&#xff09;&#xff0c;用作数据库、缓存、消息代理…

并发编程之Callable、Runnable、Future与FutureTask

目录 前言一、Callable与Runnable1.1 Callable1.2 Runnable1.3 二者对比 二、Future与FutureTask2.1 Future2.2 FutureTask2.3 二者对比 三、综合使用3.1 Callable执行Future获取结果3.2 Callable执行任务FutureTask获取执行结果 四、应用场景 前言 在 Java 中&#xff0c;Cal…

小明SEO:网站域名被投诉怎么恢复呢?分享

小明SEO对他的网站进行了分析&#xff0c;发现网站上存在大量非法内容&#xff0c;比如股票、金融、外汇等&#xff0c;甚至还有虚假宣传来吸引其他网站的流量。 随后他检查了该网站的tdk设置&#xff0c;尤其是网站标题&#xff0c;发现也存在违规行为。 这就是网站域名被投诉…

React Native 应用打包

引言 在将React Native应用上架至App Store时&#xff0c;除了通常的上架流程外&#xff0c;还需考虑一些额外的优化策略。本文将介绍如何通过配置App Transport Security、Release Scheme和启动屏优化技巧来提升React Native应用的上架质量和用户体验。 配置 App Transport…

Python 构建项目工具库之pybuilder使用详解

概要 在Python项目开发中,良好的构建和自动化流程是非常重要的。PyBuilder是一个用于构建Python项目的工具,它提供了简单易用的方式来定义和管理项目的构建过程,包括依赖管理、测试、代码质量检查等。本文将深入探讨PyBuilder库的使用方法、功能特性以及如何利用它来构建优…

SQL映射文件

一、SQL映射的xml文件 1.1 mapper元素 二、select 三、别名与Java映射 四、resultMap 啊

一道很有意思的题目(考初始化)

这题很有意思&#xff0c;需要你对初始化够了解才能解出来 &#xff0c;现在我们来看一下吧。 这题通过分析得出考的是初始化。关于初始化有以下知识点 &#xff08;取自继承与多态&#xff08;继承部分&#xff09;这文章中&#xff09; 所以根据上方那段知识点可知&#xf…

Linux/Backdoor

Backdoor Enumeration nmap 第一次扫描发现系统对外开放了22&#xff0c;80和1337端口&#xff0c;端口详细信息如下 22端口对应的是ssh服务&#xff0c;80端口使用Apache&#xff0c;title上写着backdoor&#xff0c;而且可以看出使用了wordpress&#xff0c;1337端口暂时还…

HyperWorks2023 下载地址及安装教程

HyperWorks是一套由Altair Engineering开发的集成化仿真平台。这个平台涵盖了许多不同领域的仿真和优化应用&#xff0c;包括结构分析、流体力学、多体动力学、优化、电磁场分析等。 HyperWorks提供了一系列强大的工具和模块&#xff0c;用于进行复杂的工程仿真和优化任务。它…

数据结构 之 队列习题 力扣oj(附加思路版)

优先级队列 #include<queue> --队列 和 优先级队列的头文件 优先级队列&#xff1a; 堆结构 最大堆 和 最小堆 相关函数&#xff1a; front() 获取第一个元素 back() 获取最后一个元素 push() 放入元素 pop() 弹出第一个元素 size() 计算队列中元素…

简单了解synchronized

什么是synchronized synchronized是Java提供的一个关键字&#xff0c;用于方法或者代码块&#xff0c;保证并发安全。 synchronized使用场景 同步代码块&#xff08;原子性&#xff09; synchronized可以用在方法上&#xff0c;或者用在代码块。 可锁的对象可以是普通对象…

【ZZULI数据结构实验一】多项式的三则运算

【ZZULI数据结构实验一】多项式的四则运算 ♋ 结构设计♋ 方法声明♋ 方法实现&#x1f407; 定义一个多项式类型并初始化---CreateDataList&#x1f407; 增加节点---Getnewnode&#x1f407; 打印多项式类型的数据-- PrintPoly&#x1f407; 单链表的尾插--Listpush_back&…

C++ 优先级与结合性

运算优先级和结合性 表达式有多种运算符混合使用时&#xff0c;求解表达式的值&#xff0c;首先要解决各种运算符的运算优先次序问题。即&#xff0c;优先级和结合性。 例如&#xff1a;下面表达式的值取决于5种运算符的优先次序。 优先级是指不同级别运算符之间的运算次序&am…