MySQL学习笔记9
MySQL数据表中的数据类型:
在考虑数据类型、长度、标度和精度时,一定要仔细地进行短期和长远的规划,另外,公司制度和希望用户用什么方式访问数据也是要考虑的因素。开发人员应该了解数据的本质,以及数据在数据库里是如何相互关联的,从而使用恰当的数据类型。
create table的时候,应该花更多的时间和精力来设计表的结构,这样可以节省反复修改结构而浪费的时间。
在创建表的时候,需要考虑一些基本问题:
1)表里面包含什么类型的数据;
2)表的名称是什么;
3)哪些列可以作为主键;
4)列字段的名称是什么;
5)每个列的数据类型是什么?
6)每个列的长度是什么?
7)表里的哪些列可以为NULL?
create table tb_user (id int not null auto_increment,username varchar(20),age tinyint unsigned,gender enum('male','female','secret'),address varchar(255),primary key(id)
)engine=innodb default charset=utf8;
经验之谈:一般情况下,我们在设计数据表时,必须拥有一个id主键字段,非空、自动编号、主键约束。
select * from 数据表名 where 主键字段=主键的值,使用主键索引,可以加快查询数据。查询的效率非常明显。创建表的时候都会有一个类似id主键的字段。
在创建数据表的时候,必须明确指定字段的名称和字段的数据类型。
MySQL支持的数据类型:

图片在数据库中存储的是图片的路径,就是一个字符串,就是字符型。
数值类型:
整数类型:(整数、精准)


开发API接口通过JSON来编写的;5.7版本支持JSON的支持,对开发更友好一些。
应用场景:
人的年龄和考试成绩都可以使用整数类型进行存储。
整数类型的选型主要取决于数值的范围。在数据库设计原则,不是越大越好,而是正好满足条件即可。
案例:设计一个数据表tb_student学生表(id, username, age, mobile)
create table tb_student (id mediumint unsigned not null auto_increment,username varchar(20),age tinyint unsigned,mobile char(11),primary key(id)
)engine=innodb default charset=utf8;mysql> desc tb_student;
+----------+-----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-----------------------+------+-----+---------+----------------+
| id | mediumint(8) unsigned | NO | PRI | NULL | auto_increment |
| username | varchar(20) | YES | | NULL | |
| age | tinyint(3) unsigned | YES | | NULL | |
| mobile | char(11) | YES | | NULL | |
+----------+-----------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)mysql>
mysql> show create table tb_student;
+------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tb_student | CREATE TABLE `tb_student` (`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,`username` varchar(20) DEFAULT NULL,`age` tinyint(3) unsigned DEFAULT NULL,`mobile` char(11) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
小数类型:
浮点类型(近似值)
FLOAT和DOUBLE: 都是近似数字数据值,MySQL对于单精度值使用四个字节,对于双精度使用8个字节,FLOAT单精度浮点数值精确到越7位小数,DOUBLE双精度浮点数精确到大约15位小数,FLOAT类型会随着数值的增大精度会减少。
例如人的身高信息,我们用一个float类型就可以了。超过它的极限的时候才回出现失真。
举例说明
FLOAT(M,D),其中,M表示存储的有效位数,D代表小数点后面的位数;即整数位数+小数部分不能超过M值。 colum1 FLOAT(7,4) 上面例子中,如果你插入为999.00009到cloum1列,那么mysql在存储时会四舍五入变为999.0001插入。
DOUBLE(7,4) :DOUBLE类型的使用与FLOAT类型完全一致,唯一的区别就是占用字节不同且浮点数的精度有所不同。
定点类型:
DECIMAL和NUMERIC
`DECIMAL`和`NUMERIC` 类型的存储==精确的数值数据==。使用这些类型时,重要的是要保留==精确的精度==,例如使用**货币数据**。在MySQL中, `NUMERIC`被作为`DECIMAL`来应用,所以下面的举例`DECIMAL`同样适用于 `NUMERIC` 。
没有精度的损失。
decimal:小数的。精确的精度。
salary DECIMAL(5,2)
在上面的例子中,薪水字段的类型为decimal,表示精确的数字。其中,5代表精度,2代表刻度。
精度表示数值存储的有效位数,刻度表示小数点后面可存储的位数。
DECIMAL(5,2)能够存储五位数和两位小数的任何值,因此可以存储在salary 列中的值的范围-999.99是 999.99(有符号)特殊注意:
DECIMAL(M)和DECIMAL(M,0)是相等的,存储长度取决于M的值,默认情况下M值为10.刻度为0表示没有小数。
案例:定义一个职员表tb_staff,定义字段(id、username、salary、addtime)
mysql> create table tb_staff (-> id tinyint unsigned not null auto_increment,-> username varchar(20),-> salary decimal(10,2),-> addtime date,-> primary key(id)-> )engine=innodb default charset=utf8;
Query OK, 0 rows affected (0.00 sec)mysql> desc tb_staff;
+----------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------------+------+-----+---------+----------------+
| id | tinyint(3) unsigned | NO | PRI | NULL | auto_increment |
| username | varchar(20) | YES | | NULL | |
| salary | decimal(10,2) | YES | | NULL | |
| addtime | date | YES | | NULL | |
+----------+---------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)mysql> insert into tb_staff values(null,'libo', 20001.35,'2020-10-01');
Query OK, 1 row affected (0.01 sec)mysql>
mysql> select * from tb_staff;
+----+----------+----------+------------+
| id | username | salary | addtime |
+----+----------+----------+------------+
| 1 | libo | 20001.35 | 2020-10-01 |
+----+----------+----------+------------+
1 row in set (0.00 sec)相关文章:
MySQL学习笔记9
MySQL数据表中的数据类型: 在考虑数据类型、长度、标度和精度时,一定要仔细地进行短期和长远的规划,另外,公司制度和希望用户用什么方式访问数据也是要考虑的因素。开发人员应该了解数据的本质,以及数据在数据库里是如…...
从零学习开发一个RISC-V操作系统(三)丨嵌入式操作系统开发的常用概念和工具
本篇文章的内容 一、嵌入式操作习系统开发的常用概念和工具1.1 本地编译和交叉编译1.2 调试器GDB(The GNU Project Debugger)1.3 QEMU模拟器1.4 项目构造工具Make 本系列是博主参考B站课程学习开发一个RISC-V的操作系统的学习笔记,计划从RISC…...
小米机型解锁bl 跳“168小时”限制 操作步骤分析
写到前面的安全提示 了解解锁bl后的风险: 解锁设备后将允许修改系统重要组件,并有可能在一定程度上导致设备受损;解锁后设备安全性将失去保证,易受恶意软件攻击,从而导致个人隐私数据泄露;解锁后部分对系…...
基础练习 回文数
问题描述 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。 输出格式 按从小到大的顺序输出满足条件的四位十进制数。 solution1 #include <stdio.h> int main(){int n 1000, n1, n2, n3, n4;while(n &…...
解决Spring Boot 2.7.16 在服务器显示启动成功无法访问问题:从本地到服务器的部署坑
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
洛谷P5661:公交换乘 ← CSP-J 2019 复赛第2题
【题目来源】https://www.luogu.com.cn/problem/P5661https://www.acwing.com/problem/content/1164/【题目描述】 著名旅游城市 B 市为了鼓励大家采用公共交通方式出行,推出了一种地铁换乘公交车的优惠方案: 1.在搭乘一次地铁后可以获得一张优惠票&…...
mysql优化之索引
索引官方定义:索引是帮助mysql高效获取数据的数据结构。 索引的目的在于提高查询效率,可以类比字典。 可以简单理解为:排好序的快速查找数据结构 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这种数据…...
文件系统详解
目录 文件系统(1) 第一节文件系统的基本概念 一、文件系统的任务 二、文件的存储介质及存储方式 三、文件的分类 第二节 文件的逻辑结构和物理结构 一、文件的逻辑结构 二、文件的物理结构 文件系统(2) 第三节 文件目…...
有名管道及其应用
创建FIFO文件 1.通过命令: mkfifo 文件名 2.通过函数: mkfifo #include <sys/types.h> #include <sys/stat.h> int mkfifo(const char *pathname, mode_t mode); 参数: -pathname:管道名称的路径 -mode:文件的权限&a…...
加州大学伯克利分校 计算机科学专业
加州大学伯克利分校 计算机科学专业 cs 61a cs 61b cs61c...
一个关于 i++ 和 ++i 的面试题打趴了所有人
前言 都说大城市现在不好找工作,可小城市却也不好招人。 我们公司招了挺久都没招到,主管感到有些心累。 我提了点建议,是不是面试问的太深了,在这种小城市,能干活就行。 他说自己问的面试题都很浅显,如果答…...
程序员的快乐如此简单
最近在GitHub上发起了一个关于Beego框架的小插件的开源仓库,这一举动虽然看似微小,但其中的快乐和意义却是无法用言语表达的。 Beego是一个开源的Go语言Web框架,它采用了MVC架构模式,并集成了很多常用的功能和中间件。小插件是指…...
浅谈云原生Cloud Native
目录 1.云原生是什么2.云原生与传统软件有什么区别3.云原生有哪些代表性的技术 1.云原生是什么 云原生(Cloud Native)是一种构建和运行应用程序的方法,可以充分利用云计算模型的优势。云原生是一种面向服务的架构(SOA)…...
解决react报错“JSX 表达式必须具有一个父元素“
现象如下: 原因: 新插入的dom元素跟已有的dom元素平级了,必须创建一个共有的根元素 解决办法: 使用<> </>标签作为根元素,把所有子元素包裹起来 <> ....原代码 </> 问题解决!…...
Spring学习笔记7 Bean的生命周期
Spring学习笔记6 Bean的实例化方式_biubiubiu0706的博客-CSDN博客 Spring其实就是一个管理Bean对象的工厂.它负责对象的创建,对象的销毁. 这样我们才可以知道在哪个时间节点上调用了哪个类的哪个方法,知道代码该写在哪里 Bean的生命周期之粗略5步 Bean生命周期的管理可以参考S…...
React 如何导出excel
在现代的Web开发中,数据导出是一个非常常见的需求。而在React应用中,我们经常需要将数据导出为Excel文件,以便用户可以轻松地在本地计算机上查看和编辑。本文将介绍如何在React应用中实现导出Excel文件的功能。 章节一:安装依赖 …...
Texlive2020 for win10 宏包更新
用命令提示符更新texlive的宏包,这个方法非常简单实用 1.以管理员身份打开命令提示符 2.系统自动选择镜像网站 tlmgr option repository ctan 3.更新宏包 tlmgr update --self --all 其中–self参数表示升级tlmgr本身,–all表示升级所有宏包,这样就可以将所有宏包更新了 4.列…...
Ps 在用鼠标滚轮缩放图片时,速度太快?
1.原因 在于安装了第三方鼠标优化软件Mos,它起着对第三方鼠标全局浏览效果的优化,使浏览更加顺滑,而不精确,消除了mac使用第三方鼠标浏览页面时的卡顿问题。这也使得像ps、ai这类软件,在进行页面缩放时,变得…...
基于docker进行Grafana + prometheus实现服务监听
基于docker进行Grafana Prometheus实现服务监听 Grafana安装Prometheus安装Jvm监控配置服务器主机监控(基础cpu,内存,磁盘,网络) Grafana安装 docker pull grafana/grafanamkdir /server/grafanachmod 777 /server/grafanadocker run -d -p…...
模型层及ORM介绍
模型层及ORM介绍 模型层 负责跟数据库之间进行通信 配置MySQL,下载MySQLclient 创建数据库 进入mysql数据库执行create database 数据库名 default charset utf8通常数据库名跟项目名保持一致settings.py里进行数据库的配置修改 DATABASES 配置项的内容&#x…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
