Mysql学习经验总结(一)

Mysql的简介:

MySql是一个开源的关系型数据库管理系统,广泛应用于Web应用程序的数据存储和管理。它支持多用户并发访问,具有高性能、稳定可靠、易于使用和管理的特点。

MySql官网提供了详细的文档、下载、社区等资源,官网的地址为:MySQL

1、命名规范

数据库表名、字段名、索引名等等都遵循着命名的规范,命名的可读性要求要高,大家初学的时候都喜欢用拼音来起名,我们命名的时候尽量采用英文,采用驼峰命名或者下划线分割的方式,让人简知意。

反例:

表名:a,b,c
字段名:aa,bb,cc

正例:

表名:student,review,customers
字段名:student_id,review_name,customers_id

        表名、字段名必须使用小写字母,禁止使用数字开头,不要使用拼音,不要使用英文的缩写

2、选择合适的字段类型

设计表的时候,需要选择合适的字段类型,比如说:

        1、根据数据的类型选择字段类型:

                整数型数据可以使用int或者bigint类型、浮点数据可以用float或者double类型、字符型数据可以使用varchar或者char类型

        2、考虑数据的长度:

                如果某个字段的数据长度不会超过10个字符,则可以使用char(10)类型来代替varchar(50)类型,以节省空间。如果存储的值太大,建议字段类型修改text,同时抽出单独一张表,然后再单独抽出一张表,并用主键相互连接。

        3、注意精度和小数位数:

                对于需要精确数值计算的字段(余额、百分比等等),应该选择带有精度和小数位数的字段类型(如decimal)

        4、考虑数据完整性:字段类型也应该考虑到数据的完整性:

                日期型数据应该使用date和datetime类型,以确保输入的日期格式正确。

3、主键设计要合理

        主键的设计在数据库中非常重要,它用于唯一标识表中的每一行数据(也就是可以通过主键来确定行的位置),并且在数据的操作和查询中起到关键的作用。

        通常主键的设计,不要与业务相关联,因为业务是会发生变化的,应当使用自增的id,并且保持主键的连续性。(正常使用的有:自增ID、UUID、或者是雪花ID)

4、选择合适的字段长度

问:数据库中的字段长度表示字符长度还是字节长度?

注:

        1、字符长度就是字符串包含多少个字符,如String str = “hello”,字符有h,e,l,l,o一共5个字符,所以字符个数为5个。

        2、字节长度是变量在内存中占有的空间大小,如int类型占4字节,long类型占8字节等等,并且1字节(byte)=8比特(bit)

        需要注意的是:UTF-8 编码中,一个英文字为一个字节,一个中文为三个字节。但是,一个英文字母或者是一个中文汉字 都可以用一个字符的长度来装。

答:再mysql中,varchar和char类型表示字符的长度,而其他类型表示的是字节的长度。

        char(10)表示字符的长度是10。bigint(4)表示显示长度是4个字节,但是因为bigint实际长度是8个字节,所以bigint(4)的实际长度就是8个字节。

所以再设计表时需要考虑一个字段的长度,比如一个用户名字字段(它的长度是5~20个字符),你觉得应该设置多长呢?可以考虑设置为varchar(32).需要注意字段的长度一般设置为2的n次方 如:8、16、32

5、优先考虑逻辑删除,而不是物理删除

什么是物理删除、什么是逻辑删除?

        物理删除:把数据从硬盘中删除

        逻辑删除:可以在你的表中单独添加一列名为is_deleted,用来标记该数据是否可以被前端使用。例如:我在前端注销一个账户,那么就对应将表中的该行数据中的is_deleted字段设置为0或者1,来表示该数据是否可用。

为什么推荐逻辑删除,不推荐物理删除:

        数据的恢复困难、物理删除会导致索引数重构。

6、每个表都最好添加通用字段

        id:主键,一个表必须得有主键,必须!!!

        create_time:创建时间

        creator:创建人

        update_time:修改时间,必须,更新记录时,需要更新它

        update_by:修改人,非必须

        remark:数据的记录备注,非必须

7、控制表中的字段数量

建表的时候一张表的字段就不要过多了。尽量不要超过20个。超出的话要考虑如何拆分,也就是通常表——详情表

        查询效率:当表中保存的数据量很大的时候,查询操作需要检索的数据也会随之增加。如果表的字段数量过多,查询的操作就需要读取更多的数据,这回导致查询的效率变慢。

        数据库设计的复杂性:当表的字段过多的时候,数据库的设计和维护变得更加复杂。

8、MySQL 字段属性应该尽量设置为 NOT NULL

        如果没有特殊的理由,一般建议将字段定义为not null

原因:

        1、节省空间:当字段不需要存储任何东西时,“”是不占用空间的,但是null其实是占用空间的,null就是什么都没有,连\0都没有,\0在字符串中是结束符(因为mysql的底层是由C++实现的),但是在物理内存是占空间的,等于一个字节,而null就是连这一个字节都没有。

        2、对null处理比较麻烦【不能用=null来查询数据,需要用is null 】:对null处理的时候只能用is null或者is not null,而不能采用+、in、<、>、!=、这些操作符号。比如:要查询:where name != “havename”,如果存在name为null的值的记录,那么查询的结果中就不会包含name为null值的记录。

如果将字段默认设置成一个空的字符串或者常量值并没有什么不同,且都不会影响到引用逻辑,那就可以将这个字段设置为not null。

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

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

相关文章

微信小程序的服务调取

微信小程序的服务调取概述 微信小程序允许开发者通过网络请求与服务器进行交互&#xff0c;从而实现数据的上传和下载。这是通过小程序提供的API&#xff0c;如wx.request、wx.downloadFile、wx.uploadFile等来完成的。这些API使得小程序可以从远程服务器获取数据&#xff0c;…

文档智能开源软件

文档智能介绍&#xff1a; 文档智能通常指的是利用人工智能技术来处理和分析文档内容&#xff0c;以实现自动化、智能化的文档管理。文档智能的应用领域非常广泛&#xff0c;包括但不限于&#xff1a; 1. **文档识别**&#xff1a;使用OCR&#xff08;光学字符识别&#xff0…

Java+SVNCloud+Mysql课程设计

文章目录 1、主要内容2、所需准备3、与sql访问的中间类&#xff1a;SqlMessage4、窗口界面5、main方法 1、主要内容 课程设计&#xff0c;主要通过Javas wing创建窗口&#xff0c;jdbc连接云端mysql数据库进行基本操作&#xff0c;支持随机生成数据并用动态展示数据结果。 先…

一种最大重叠离散小波包特征提取和支持向量机的ECG心电信号分类方法(MATLAB 2018)

目前小波分析算法常采用Mallat快速算法。该算法由与滤波器卷积、隔点采样和隔点插零等三个环节组成。由于实际使用的滤波器并不具有理想频域特性&#xff0c;使得在标准二进小波算法中存在着频率混叠和小波系数失真等缺点&#xff0c;在标准二进小波包算法中还存在频带错乱现象…

matlab误差估计扩展卡尔

在MATLAB中实现扩展卡尔曼滤波&#xff08;Extended Kalman Filter, EKF&#xff09;时&#xff0c;误差估计是一个关键步骤。EKF是一种用于非线性系统状态估计的算法&#xff0c;它通过线性化非线性系统模型&#xff0c;并利用卡尔曼滤波的框架进行状态估计和误差估计。以下是…

展现市场布局雄心,ATFX再度亮相非洲峰会,开启区域市场新篇章

自2023年全球市场营销战略部署实施以来&#xff0c;ATFX在全球各区域市场取得了丰硕成果&#xff0c;其品牌实力、知名度、影响力均有大幅提升。在这场全球扩张的征程中&#xff0c;非洲市场日益成为集团关注的焦点。自2023年首次踏上这片充满潜力的市场以来&#xff0c;ATFX持…

【TB作品】MSP430 G2553 单片机口袋板,读取单片机P1.4电压显示,ADC

功能 读取P1.4电压&#xff0c;显示到口袋板显示屏&#xff0c;电压越高亮灯越多。 部分程序 while (1){ADC10CTL0 | ENC ADC10SC; // Sampling and conversion startLPM0;adcvalue ADC10MEM; //原始数据 0到1023adtest (float) adcvalue / 1024.…

PKCS #8的原理及作用

标签: PKCS #8的原理及作用; PKCS #8;PKCS8 PKCS #8的原理及作用 概述 PKCS #8(Public-Key Cryptography Standards #8)是由RSA实验室发布的一种标准,用于存储私钥信息。它定义了私钥的语法,包括如何对私钥进行编码和加密,以确保其安全性和可移植性。 英文原文: I…

【大模型应用开发极简入门】构建新闻稿生成器:提示词的使用与基于事实的提示词

文章目录 一. 提示词怎么写二. 完整代码三. 基于事实的prompt GPT-4和ChatGPT等LLM专用于生成文本。我们可以使用GPT-4和ChatGPT在各种场景中生成文本&#xff0c;举例如下。 电子邮件合同或正式文档创意写作逐步行动计划头脑风暴广告职位描述 对于本项目&#xff0c;我们将创建…

列表标签 ul+ol/li

04-07、列表标签 ulol/li 概述 列表标签&#xff1a;无序列表ulli、有序列表olli和定义列表 dl dt dd 三种&#xff0c;在网页制作中应用非常广泛&#xff0c;列表就是信息资源的一种展示形式。 特点&#xff1a; 它们都是块元素&#xff0c;可以受到宽度&#xff0c;高度&…

springboot 实现kafka多源配置

文章目录 背景核心配置自动化配置类注册生产者、消费者核心bean到spring配置spring.factoriesyml配置使用 源码仓库 背景 实际开发中&#xff0c;不同的topic可能来自不同的集群&#xff0c;所以就需要配置不同的kafka数据源&#xff0c;基于springboot自动配置的思想&#xf…

SwiftUI知识点(一)

前言&#xff1a; Swift知识点&#xff0c;大至看完了&#xff0c;公司项目是Swift语言写的&#xff0c;后续苹果新出的SwiftUI&#xff0c;也需要学习一下 不知觉间&#xff0c;SwiftUI是19年出的&#xff0c;现在24年&#xff0c;5年前的东西了 学习的几个原因&#xff1a; …

C# virtual 关键字

文章目录 virtual 使用Override 关键字New 关键字何时使用 Override / New 关键字&#xff1f;不要在构造函数里调用虚函数 virtual 使用 c#的方法&#xff0c;默认为非虚方法&#xff0c;如果一个方法被声明为 virtual &#xff08;虚方法&#xff09;&#xff0c;则继承该方…

Android Media Framework(一)OpenMAX 框架简介

学习开源代码最快的方式是先阅读它的文档&#xff0c;再查看它的头文件&#xff0c;最后研读代码实现并进行编译调试。Android早期引入OpenMAX IL作为使用音视频编解码器的标准接口&#xff0c;了解Android Media框架的底层运行原理要从OMX IL开始。在这一节&#xff0c;我们将…

qt c++ 随机数 获取mac地址

目录 获取mac地址 c 随机数 c pro设置&#xff1a; QT core gui network 获取mac地址 #include <QCoreApplication> #include <QNetworkInterface> #include <QDebug>int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);// 获取所有网络…

本机安装深度学习库cuda11.8,cudnn8.6和tensorRT8.5

https://blog.csdn.net/qq_46107892/article/details/131453019 首先是安装cuda11.8 wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pinsudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600wg…

44-3 waf绕过 - WAF绕过方法

环境准备: 43-5 waf绕过 - 安全狗简介及安装-CSDN博客然后在安装pikachu靶场:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客一、首先验证云WAF是否存在于靶场(老师的靶场是部署在阿里云) 靶场地址:http://127.0.0.1/pikachu-master/v…

游戏找不到steam_api64.dll如何解决,全面解析原因及解决方法

在现代游戏中&#xff0c;Steam平台已经成为了玩家们下载、安装和玩游戏的主要渠道之一。然而&#xff0c;有些玩家可能会遇到一个问题&#xff0c;即游戏找不到steam_api64.dll文件。这个问题可能会导致游戏无法正常运行或启动。本文将详细介绍如何解决这个问题&#xff0c;帮…

23、linux系统文件和日志分析

linux文件系统与日志分析 文件时存储在硬盘上的&#xff0c;硬盘上的最小存储单位是扇区&#xff0c;每个扇区大大小是512字节。 inode&#xff1a;元信息&#xff08;文件的属性 权限&#xff0c;创建者&#xff0c;创建日期等&#xff09; block&#xff1a;块&#xff0c…

ZDH-数据管理模块

目录 主题 项目源码 预览地址 安装包下载地址 数据管理服务 数据资源管理 数据资源权限 数据资源血缘 总结 感谢支持 主题 本篇文章主要介绍ZDH-数据管理服务及应用场景 项目源码 zdh_web: GitHub - zhaoyachao/zdh_web: 大数据采集,抽取平台 预览地址 后台管理…