MySQL 数据库学习笔记 2

 

MySQL 数据库学习笔记 2

标签: 数据库mysql

目录(?)[+]

1. 字符集

1.1 字符集变量

show variables; 
show variables like ‘character_set%’; 显示所有和字符集相关的变量 
show create database db_name; 显示数据库创建的字符集 
这里写图片描述 
windows 中 的my.ini 和 linux 中的 my.conf 中 设置了 MySQL server 端的编码格式

1.2 校对规则

校对规则是指, 在当前编码格式下, 字符之间的比较顺序。 
1. ci : 不区分大小写 
2. cs: 区分大小写 
3. bin: 二进制比较, 默认区分

可以使用 show collation; 来查看字符集 
并且字符集一般都是 按照 : 字符集_地区名_比较规则 构成的。 
show collation like ‘utf8%’; 显示和utf 相关的字符集 
这里写图片描述 
在创建表格的时候, 可以同时制定相应表格的字符集和相应的校对规则: 
create table tbl_name(id int) character set gbk collate gbk_chinese_ci; 
这里写图片描述

在我们创建完一个数据库后, 硬盘上会创建相应的 db.opt 文件, 里面有 数据库的基本信息, 其中就包含数据库所使用的字符集和 校对规则。 
这里写图片描述

另外, 校对规则一般对数据的存储没什么影响, 但是对涉及到 排序操作 order by 的时候, 会有影响。

2. 列类型

列类型主要可以分为 3 类: 
1. 数值类型 
2. 日期时间类型 
3. 字符串类型

2.1 数值类型

2.1.1 整数类型

  1. tinyint , smallint, mediumint, int, bigint, 分别 占据 1, 2, 3, 4, 8 个字节
  2. 和 C/C++ 一样, 整数类型是区分有符号和 无符号的, 用unsigned 区分。
  3. TYPE(M) , 这里 M 一般用来表示显示的最小宽度
  4. 使用 前导零填充 zerofill

2.1.2 小数类型

2.1.2.1 浮点数

容易造成精度丢失的问题。 
float 一般 6 ~ 7 有效位数, 4 字节 
double 一般 16 ~ 17 有效位数, 8字节

TYPE(M, N) 可以用来控制表示范围, 其中, M 表示所有数字的位数, 不包含小数点和正负号。 而 N 表示所允许的小数部分的位数, 在确定了 M, N 之后, M-N 就确定了 整数部分的最大的位数。

2.1.2.2 定点数

decimal(M, N), M 表示所有有效数字的位数, N 为 小数部分的位数 
默认情况下, M : 10, N : 0 
他能保证精度不会丢失, 支持zerofill 
需要注意的是, 他是一个变长的类型。

2.2 日期和时间类型

  1. Datetime 年月日时分秒, 8字节, 分割符可以随意
  2. timestamp 时间戳类型, 4 字节, 按整数类型存储, 但是按照Datetime 类型表示
  3. Date 年月日 3字节
  4. time 时分秒 3字节 既可以表示1天中的某个时刻, 也可以表示35 天以内的时间间隔
  5. year 年 1字节 1901 ~ 2155

ps: 检索的时候, xxx + 0 表示用他实际存储的类型表示

2.3 字符串类型

  1. char(M) 固定长度, M 表示允许的字符串的长度(字符数), 物理上, 最大字节数 255
  2. varchar(M) 变长, 当字符数大于 255 时候, 需要2 个额外字节保存字符串长度, 小于 255 时候, 只要 1 个额外字节。
  3. 字段的最大长度限制, 和 类型本身限制 以及 row 长度限制 有关联。
  4. 真实 varchar 的长度讨论, 
    在一个表中, row 一般不超过 65535, 而 varchar 超过255时候, varchar 自身占据 2 个字节, 另外如果表中有允许null 属性的字段, 需要额外 1 个字节进行记录 null 的信息, 此时对结构:
<code class="hljs sql has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">create</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">table</span> tbl_name(
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">varchar</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">65532</span>)
) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">character</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">set</span> latin1;</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>

这是成立的, 并且varchar 最大最大也就只能分配这么多给数据了。 
5. text, tinytext,mediumtext, longtext, 它相当于指定了最大长度的varchar。 
6. enum 枚举类型, 内部是整形 
7. set 集合类型, 8字节, 最多64 个状态, 每个状态使用一个bit 表示 
8. binary, varbinary, blob 二进制数据 字节表示的。

3. 列属性

  1. not null
  2. default
  3. primary key 主键, 通常主键不应该与实体有联系, 他是代表记录唯一的索引。 
    2 中定义方法: 
    • type_name type [primary key]
    • primary key(key) 这种方法, 较上面这种可以定义组合主键 : primary key(a, b), ie, 一个主键上面包含了 a, b 两个字段, 然而, 一个表韩式只有一个主键
  4. auto_increment, 主动增长, 要求 整形数据, 带有索引。 在插入数据的时候, 可以插入null 或者 不插入该项数据。 
    另外, 我们可以设置表的默认自动增长的起始值, 默认为 1, 但是如果设置的值, 比我们当前的最大值 小的话, 是无效的。
  5. 外键约束
  6. 数据库中的相应约束:
唯一性 主键 外键 检查约束 空值 默认值
unique primary key foreign key check not null default

4. 实体之间的关系

4.1 1: 1 实体关联

通常用在数据库优化的过程中, 将一个较大的表拆成两个部分, 一个部分是常用信息实体, 另一个部分是详细但不常用的信息实体(垂直分割) 
在数据库中, 通常采用 在两个实体表内存放相同主键字段来实现这种关联

4.2 1:n 实体关联

通常采用在较多对象那一侧添加一个字段的方式, 用来存储另一个实体的标识信息(主键) 
ex. 一个班级对应多个学生

4.3 M:N 实体关联

通常采用一个中间表, 记录实体之间的对应关系。 
本质上, 就是将 M : N 实体关联拆解成 两个 1: N 实体关联。 
ex. 班级 和 讲师之间的关系

代码转载自:https://pan.quark.cn/s/f87b8041184b Language: 中文 欢迎来到戈戈圈! 当你点开这个存储库的时候,你会看到戈戈圈的图标↓ 本图片均在知识共享 署名-相同方式共享 3.0(CC BY-SA 3.0)许可协议下提供,如有授权遵照授权协议使用。 那么恭喜你,当你看到这个图标的时候,就代表着你已经正式成为了一名戈团子啦! 欢迎你来到这个充满爱与希望的大家庭! 「与大家创造更多快乐,与人们一起改变世界。 」 戈戈圈是一个在中国海南省诞生的创作企划,由王戈wg的妹妹于2018年7月14日正式公开。 戈戈圈的创作类型广泛,囊括插画、小说、音乐等各种作品类型。 戈戈圈的目前成员: Contributors 此外,支持戈戈圈及本企划的成员被称为“戈团子”。 “戈团子”一词最初来源于2015年出生的名叫“团子”的大熊猫,也因为一种由糯米包裹着馅料蒸熟而成的食品也名为“团子”,不仅有团圆之意,也蕴涵着团结友爱的象征意义和大家的美好期盼,因此我们最终于2021年初决定命名戈戈圈的粉丝为“戈团子”。 如果你对戈戈圈有兴趣的话,欢迎加入我们吧(σ≧︎▽︎≦︎)σ! 由于王戈wg此前投稿的相关视频并未详细说明本企划的信息,且相关视频的表述极其模糊,我们特此创建这个存储库,以文字的形式向大家介绍戈戈圈。 戈戈圈自2018年7月14日成立至今,一直以来都秉持着包容开放、和谐友善的原则。 我们深知自己的责任和使命,始终尊重社会道德习俗,严格遵循国家法律法规,为维护社会稳定和公共利益做出了积极的贡献。 因此,我们不允许任何人或组织以“戈戈圈”的名义在网络平台或现实中发布不当言论,同时我们也坚决反对过度宣传戈戈圈的行为,包括但不限于与戈戈圈无关的任何...
内容概要:本文详细介绍了一个基于YOLOv8的血细胞智能检测系统全流程开发指南,涵盖从环境搭建、数据准备、模型训练与验证到UI交互系统开发的完整实践过程。项目利用YOLOv8高精度、高速度的优势,实现对白细胞、红细胞和血小板的自动识别与分类,准确率超过93%,单张图像检测仅需0.3秒。通过公开或自建血细胞数据集,结合LabelImg标注工具和Streamlit开发可视化界面,构建了具备图像上传、实时检测、结果统计与异常提示功能的智能系统,并提供了论文撰写与成果展示建议,强化其在医疗场景中的应用价值。; 适合人群:具备一定Python编程与深度学习基础,从事计算机视觉、医疗AI相关研究或项目开发的高校学生、科研人员及工程技术人员,尤其适合需要完成毕业设计或医疗智能化项目实践的开发者。; 使用场景及目标:①应用于医院或检验机构辅助医生进行血涂片快速筛查,提升检测效率与一致性;②作为深度学习在医疗影像领域落地的教学案例,掌握YOLOv8在实际项目中的训练、优化与部署流程;③用于学术论文写作与项目成果展示,理解技术与临床需求的结合方式。; 阅读建议:建议按照“数据→模型→系统→应用”顺序逐步实践,重点理解数据标注规范、模型参数设置与UI集成逻辑,同时结合临床需求不断优化系统功能,如增加报告导出、多类别细粒度分类等扩展模块。
基于蒙特卡洛,copula函数,fuzzy-kmeans获取6个典型场景进行随机优化多类型电动汽车采用分时电价调度,考虑上级电网出力、峰谷差惩罚费用、风光调度、电动汽车负荷调度费用和网损费用内容概要:本文围绕多类型电动汽车在分时电价机制下的优化调度展开研究,采用蒙特卡洛模拟、Copula函数和模糊K-means聚类方法获取6个典型场景,并在此基础上进行随机优化。模型综合考虑了上级电网出力、峰谷差惩罚费用、风光可再生能源调度、电动汽车负荷调度成本以及电网网损费用等多个关键因素,旨在实现电力系统运行的经济性与稳定性。通过Matlab代码实现相关算法,验证所提方法的有效性与实用性。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事新能源、智能电网、电动汽车调度相关工作的工程技术人员。; 使用场景及目标:①用于研究大规模电动汽车接入电网后的负荷调控策略;②支持含风光等可再生能源的综合能源系统优化调度;③为制定合理的分时电价政策及降低电网峰谷差提供技术支撑;④适用于学术研究、论文复现与实际项目仿真验证。; 阅读建议:建议读者结合文中涉及的概率建模、聚类分析与优化算法部分,动手运行并调试Matlab代码,深入理解场景生成与随机优化的实现流程,同时可扩展至更多元化的应用场景如V2G、储能协同调度等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值