MySQL简介及数据库
mysql简介
mysql是一个轻量级关系型数据库管理系统,具有体积小,速度快,开源的优点
sql是一种结构化查询语言(Structured Query Language),专门用来管理和处理关系型数据库的标准化编程语言,mysql实现了SQL标准,使得用户能够使用SQL语言来与MySQL数据库进行交互和操作数据
为什么学习数据库?
1.结构化:数据在数据库中的存储可以依靠二维表结构来逻辑的存储数据,可以参考数据原有的依赖关系和结构关系去存储数据。
2.共享性:多个用户可以共同分享计算机数据库中的数据资源,同一数据可以同时被多人使用,从而实现了数据的高效共享性。
3.独立性:存储在数据库的数据和应用程序之间相互独立,互不影响。数据在磁盘上怎样存储由数据库管理而不依赖于应用程序,这样当数据的物理存储改变了,应用程序不用改变。
4.安全性:数据库在安全性的控制上也有很多措施,比如访问数据库时对用户的口令,用户的权限进行限制,再比如对数据的存储进行限制。
数据库(Database,简称DB)
概念:长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据“仓库”。
作用:存放、管理数据
分类:关系型数据库、NoSQL数据库。
常见的数据库:redis,MySQL,mongoDB
MySQL特点:
1. 操作便捷
2.小巧,功能齐全
3.免费、开源的数据库
4.可运行于windows或linux系统
MySQL数据库的特点
•开源免费,小巧但功能齐全
•可在Windows和Linux系统上运行
•操作方便,适用于中小型甚至大型网站应用
数据库结构
| 数据库(Database) | 以文件的形式存放在磁盘上,即对应于一个或多个物理文件。 |
| 字段(Field) | 也称域。表中的每一列称为一个字段。每个字段都有相应的描述信息。 |
| 索引(Index) | 索引实际上是一种特殊类型的表,其中含有关键字段的值和指向实际记录位置的指针,可以提高访问数据库的效率。 |
| 数据表(Table) | 简称表,由一组数据记录组成,数据库中的数据是以表为单位进行组织的。一个表是一组相关的按行排列的数据;每个表中都含有相同类型的信息。 |
| 记录(Record) | 表中的每一行称为一个记录,它由若干个字段组成。实体 |
| SQL语句 | 结构化查询语句命令,用来从一个或多个表中获取一组指定的记录,或者对某个表执行指定的操作。 |
SQL语句分类
SQL语句,即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名。
DDL(数据定义语言):定义和管理数据对象,如数据库,数据表等
命令:CREATE、DROP、ALTER
DML(数据操作语言):用于操作数据库对象中所包含的数据
命令:INSERT、UPDATE、DELETE
DQL(数据查询语言):用于查询数据库数据
命令:SELECT
DCL(数据控制语言):用来管理数据库的语言,包括管理权限及数据更改
命令:GRANT、COMMIT、ROLLBACK
DDL语句操作数据库
创建数据库:CREATE DATABASE 库名
删除数据库:DROP DATABASE 库名
查看数据库:SHOW DATABASES
选择数据库:USE 库名
注:1.sql不区分大小写
2.“_”下划线进行名字分割,不适用驼峰名
3.语句sql结尾写一个“;”分号表示结束
4.一般关键词建议用大写
5.所有名称不允许用中文
DDL创建数据库表
CREATE TABLE 表名(
字段名1 字段类型 属性,
字段名2 字段类型 属性,
......
字段名3 字段类型 属性
);
create table student1(stu_name varchar(10),stu_age tinyint,stu_birthday datetime,stu_id char(18),stu_socre decimal(4,1) );
数据库的字段类型
1.数值型

Decimal(4,1) 0-100 000.0~999.9
int(1) 1000000
tinyint(4) 0010显示位数
2.日期和时间类型

设置当前 创建时间,或者是更新时间时给TIMESTAMP或者DATETIME字段 设置 DEFAULT CURRENT_TIMESTAMP 添加当前默认时间
NULL类型:
• 理解为“没有值”或“未知值”;
• 不要用NULL进行算术运算,结果仍为NULL;
•MySQL中,0或NULL都意味着为假,1为真。
3.字符串类型

char和varchar比较
数据库表的字段注释

查询创建的数据库结构
方式1:describe 表名 或 desc 表名
方式2:show create table 表名
数据库存储引擎
查看当前数据库支持的存储引擎:show engines;

-- DEFAULT NULL 该字段的值可以为空
-- ` 反引号--取消关键性
-- DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 字符排序
-- ENGINE=InnoDB 非常重要 存储引擎 存储的规则,磁盘叫InnoDB
CREATE TABLE `student1` (
`stu_name` varchar(10) DEFAULT NULL,
`stu_age` tinyint DEFAULT NULL,
`stu_birthday` datetime DEFAULT NULL,
`stu_id` char(18) DEFAULT NULL,
`stu_socre` decimal(4,1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
数据库存储引擎-InnoDB
•MySQL从3.23.34a开始就包含InnoDB存储引擎。大于等于5.5之后,默认采用InnoDB引擎。
•InnoDB是MysQL的默认事务型引擎,它被设计用来处理大量的短期(short-lived)事务。可以确保事务的完整提交
(Commit)和回滚(Rollback)。
•除了增加和查询外,还需要更新、删除操作,那么,应优先选择InnoDB存储引擎。
•除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎。
•数据文件结构:
•表名.frm存储表结构(MySQL8.0时,合并在表名.ibd中)。
•表名.ibd存储数据和索引
•InnoDB是为处理巨大数据量的最大性能设计。
•在以前的版本中,字典数据以元数据文件、非事务表等来存储。现在这些元数据文件被删除了。比如: .frm,.par , .trn ,.isl, .db.opt等都在MySQL8.0中不存在了。
•对比MylISAM的存储引擎,InnoDB写的处理效率差一些,并且会占用更多的磁盘空间以保存数据和索引。
•MyISAM只缓存索引,不缓存真实数据;InnoDB不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响。
数据库存储引擎-MyISAM
•MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM不支持事务、行级锁、外
键,有一个毫无疑问的缺陷就是崩溃后无法安全恢复。
•5.5之前默认的存储引擎
•优势是访问的速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用
•针对数据统计有额外的常数存储。故而count(*)的查询效率很高
•数据文件结构:
•表名.frm存储表结构。
•表名.MYD存储数据(MYData)。
•表名.MYI存储索引 (MYIndex)
•应用场景:只读应用或者以读为主的业务
数据库存储引擎-MyISAM 和InnoDB区别

修改和删除数据库表
修改表名:
-- alter table 旧表名 reanme as 新表名;
alter table student1 rename as xuesheng;删除字段:
-- 删除字段(危险操作)
-- alter table 表名 drop 字段名;
alter table xuesheng drop stu_age;修改字段:
-- 覆盖式,1.一定的默认值 2.如果已经存在具体数据--数据式可以做隐式转换的
-- 方式一 modify 只能修改 数据类型和属性
-- alter table 表名 modify 字段名 要修改的类型 要修改的属性
alter table xuesheng modify stu_name varchar(100);
alter table xuesheng modify stu_qq int;
use xz3;
-- 方式二 change 能修改 数据类型和属性 还能修改字段名
-- alter table 表名 change 旧字段名 新字段名 要修改类型 要修改属性
alter table xuesheng change stu_qq qq varchar(20) comment"这是新的QQ号";
添加字段:
-- 字符串 '**' 或 "**"
-- alter table 表名 add 新字段名 类型 属性;
alter table xuesheng add stu_qq varchar(10) comment '这是学生的QQ号';删除表:
-- drop table 表名
drop table xuesheng;
三范式
数据库设计的三大范式
一、什么是范式
为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就叫做范式。
二、约束作用
数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。
三、三范式
第一范式:确保每列保持原子性
第二范式:确保表中的每列都和主键相关
第三范式:确保每列都和主键列直接相关,而不是间接相关
第一范式(1NF)确保每列保持原子性
1.每一列属性都是不可再分的属性值,确保每一列的原子性
2.两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据
第二范式(2NF)属性完全依赖于主键
第二范式(2NF)是在第一范式(1NF)的基础上建立起来的。即满足第二范式必须先满足第一范式。
第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主键
第三范式(3NF)属性不依赖于其它非主属性属性直接依赖于主键
数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系。
像:a-->b-->c 属性之间含有这样的关系,是不符合第三范式的。
比如Student表(学号,姓名,年龄,性别,所在院校,院校地址,院校电话)这样一个表结构,就存在上述关系。 学号--> 所在院校--> (院校地址,院校电话)这样的表结构,我们应该拆开来,如下。
(学号,姓名,年龄,性别,所在院校)--(所在院校,院校地址,院校电话)
总结:三大范式只是一般设计数据库的基本理念,可以建立冗余较小、结构合理的数据库。如果有特殊情况,当然要特殊对待,数据库设计最重要的是看需求跟性能,需求>性能>表结构。所以不能一味的去追求范式建立数据库。
相关文章:
MySQL简介及数据库
mysql简介 mysql是一个轻量级关系型数据库管理系统,具有体积小,速度快,开源的优点 sql是一种结构化查询语言(Structured Query Language),专门用来管理和处理关系型数据库的标准化编程语言,mysql实现了SQL标准…...
服务器基础1
服务器基础复习01 1.环境部署 系统:华为欧拉系统 网络简单配置nmtui 因为华为欧拉系统密码需要复杂度 所以我们可以进入后更改密码 echo 123 | passwd --stdin root也可以 echo "root:123" | chpasswd2.关闭防火墙,禁用SElinux 首先先关…...
<数据集>光伏板缺陷检测数据集<目标检测>
数据集格式:VOCYOLO格式 图片数量:2400张 标注数量(xml文件个数):2400 标注数量(txt文件个数):2400 标注类别数:4 标注类别名称:[Crack,Grid,Spot] 序号类别名称图片数框数1Crack8688922Grid8248843S…...
leetcode 513. 找树左下角的值
给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1示例 2: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7提示: 二叉树的节点个数的范围是 [1,104]-231 < Node.val &…...
C++并发编程实战学习笔记
一、C的并发: 多进程并发: 将应用程序分为多个独立的进程,它们在同一时刻运行,就像同 时进行网页浏览和文字处理一样。独立的进程可以通过进程间常规的通信渠道传递讯息(信号、套接字、文件、管道等等)。不过,这种进程…...
【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【25】【分布式事务】
持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【25】【分布式事务】 本地事务事务的基本性质事务的隔离级别(下面四个越往下,隔离级 别越高,并发能力越差)事务的传播行为(是否…...
HC05主从一体蓝牙模块的裸机使用——单片机<-->蓝牙模块
HC-05是一种常用的蓝牙模块,具有低功耗、低成本、易于使用的特点。它可以实现与其他蓝牙设备(如手机、电脑等)进行无线通信。HC-05蓝牙模块具有串口通信接口,可以通过串口与主控制器(如Arduino、Raspberry Pi等&#x…...
“点点通“餐饮点餐小程序-计算机毕业设计源码11264
"点点通"餐饮点餐小程序 XXX专业XX级XX班:XXX 指导教师:XXX 摘要 随着中国经济的飞速增长,消费者的智能化水平不断提高,许多智能手机和相关的软件正在得到更多的关注和支持。其中,微信的餐饮点餐小程序更…...
C#知识|账号管理系统-账号信息管理界面[1]:账号分类选择框、Panel面板设置
哈喽,你好啊,我是雷工! 前一节实现了多条件查询后端代码的编写, 接下来继续学习账号信息管理界面的功能编写,本节主要记录账号分类选择框和Panel的设置, 以下为学习笔记。 01 功能说明 本节实现以下功能: ①:账号分类选择框只能选择,无法自由输入; ②:账号分类框默认…...
Meta即将推出4000亿的Llama 3 超级AI模型,或将改写大语言模型竞争格局!|TodayAI
2024年4月,科技巨头Meta发布了其最新的AI大型语言模型——Llama 3,该模型基于一个至少比前代产品Llama 2大七倍的数据集,展现出前所未有的性能。在最初发布时,Llama 3提供了8B和70B两种参数规模的版本,并迅速超越了Goo…...
数据挖掘新技能:Python爬虫编程指南
Python爬虫的优势 Python之所以成为数据爬取的首选语言,主要得益于其丰富的库和框架支持。以下是一些常用的库: Requests:用于发送HTTP请求,简单易用,是Python爬虫的基础库。BeautifulSoup:用于解析HTML文…...
object-C 解答算法:移动零(leetCode-283)
移动零(leetCode-283) 题目如下图:(也可以到leetCode上看完整题目,题号283) 解题思路: 本质就是把非0的元素往前移动,接下来要考虑的是怎么移动,每次移动多少? 这里需要用到双指针,i 记录每次遍历的元素值, j 记录“非0元素值”需要移动到的位置; 当所有“非0元素值”都移…...
靖江美食元宇宙
关于“靖江美食元宇宙”的具体信息,搜索结果中并未提供直接相关的详细描述。不过,搜索结果显示了有关元宇宙在食品领域的应用和探索,例如食品元宇宙的概念、不同品牌尝试进入元宇宙市场的例子等。这些信息表明,元宇宙技术正在被用…...
模板方法设计模式
模板方法设计模式: 模板方法设计模式:解决方法中存在重复代码的问题。 模板方法设计模式的写法: 1、定义一个抽象类 2、在里面定义2个方法 一个是模板方法:把相同代码放里面去 一个是抽象方法:具体实现交给子类完成 建议使用…...
对象存储解决方案:高性能分布式对象存储系统MinIO
文章目录 引言I 自动化数据管理界面1.1 图形用户界面:GUI1.2 命令行界面:MinIO CLI1.3 应用程序编程接口:MinIO APIII 部署集成2.1 建议使用RPM或DEB安装方式2.2 创建环境变量文件2.3 启动MinIO服务2.4 将NGINX用作反向代理,配置负载。III 基础概念3.1 为什么是对象存储?3…...
2024 年需要考虑的 16 个知识库趋势和统计数据
自2017年以来,千禧一代已成为全球人口最多的一代。如果您的企业还没有准备好应对这一变化带来的挑战,那么是时候加快这一进程了。 毫不奇怪,千禧一代痴迷于智能手机和技术。他们具有流动性,期望与他们互动的品牌能够即时高效。 …...
微信小程序-实现跳转链接并拼接参数(URL拼接路径参数)
第一种常用拼接方法:普通传值的拼接 //普通传值的拼接checkRouteBinttap: function (e) {wx.navigateTo({url: ../checkRoute/checkRoute?classId this.data.classInfo.classId "&taskId" this.data.classInfo.taskId,})}第二种:拼接…...
【代码随想录|第十一章 图论part01 | 797.所有可能的路径 】
代码随想录|第十一章 图论part01 | 图论理论基础,797.所有可能的路径,广搜理论基础 一、图论理论基础1.图的基本概念2.图的构造1)邻接矩阵2)邻接表 3.图的遍历方式4.深度优先搜索理论基础 二、797.所有可能的路径1.核心代码2.问题…...
尚硅谷大数据技术-数据湖Hudi视频教程-笔记03【Hudi集成Spark】
大数据新风口:Hudi数据湖(尚硅谷&Apache Hudi联合出品) B站直达:https://www.bilibili.com/video/BV1ue4y1i7na 尚硅谷数据湖Hudi视频教程百度网盘:https://pan.baidu.com/s/1NkPku5Pp-l0gfgoo63hR-Q?pwdyyds阿里…...
【python】Pandas中IndexError: single positional indexer is out of bounds的报错分析
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...

