【MySQL四大引擎,数据库管理,数据表管理,数据库账号管理】

 一. MySQL四大引擎

查看存储引擎

SHOW ENGINES

support 字段说明 


defaulti的为默认的引擎
为YES表示可以使用
为NO表示不能使用

 四大引擎

 InnoDB

InnoDB表类型可以看作是对MyISAM的进一步更新产品,它提供了事务、行级锁机制和外键约束的功能,也是目前MySQL 默认 的存储引擎。


使用场景:一般事务性,均使用该引擎,用途最广,如果把握不准使用何种引擎,就使用该引萼
修改快,支持事务
特点
存储限制:64TG
事务支持:支持事务 行锁

 MylSAM

MyISAM:这种引擎是mysql最早提供的。这种引擎又可以分为静态MyISAM、动态MyISAM 和压缩MyISAM三种,不管是何种MyISAM表,目前它都不支持事务,行级锁和外键约束的功能。

使用场景:大量查询,很少修改的场景
特点

强调了快速读取操作 表锁
存储限制:256TG
事务支持:不支持事务 

 Memory

Memory(heap):这种类型的数据表只存在于内存中。它使用散列索引,所以数据的存取速度非常快。因为是存在于内存中,所以这种类型常应用于临时表中。

使用场景:由于易失性,可以用于存储在分析中产生的中间表
特点
所有的数据都保存在内存中,一旦服务器重启,所有memoy存储引擎的表数据会消失但是表结构会保存下来
存储限制:取决于RAM(随机存储器)
事务支持:不支持事务

archive

archive:这种类型只支持select 和 insert语句,而且不支持索引。常应用于日志记录和聚合分析方面

使用场景:在日志和数据采集的时候可以使用
特点
只允许插入和查询,压缩存储,节约空间,可以实现高并发的插入,支持在自增ID上建立索引;不支持索引;Archive表比MylSAM表要小大约75%,比支持事务表格小大约83%

不支持索引(自增ID列除外)

二. 数据库管理

元数据库简介

记录MySQL自身数据的数据库


元数据库分类

information schema   

信息数据库,保存mysql所维护的其他数据库信息。


mysql

 核心数据库,主要负责存储数据库的用户、
权限设置、关键字等。mysql自己需要使用的控制和管理信息。

performance schema

用于mysql的监控数据的存放


相关操作

数据库增删改查及使用

use数据库名
create database if not exists数据库名default charset utf&collate utf8_general_.ci--设置了字符集编码以及不区分大小写
show databases;
drop database数据库名

MySQL库

权限相关

用户权限简介

当我们创建过数据库用户后,还不能执行任何操作,需要为该用户分配适当的访问权限。

关于 MySQL 用户权限简单的理解就是数据库只允许用户做你权利以内的事情,不可以越界。比如只允许你执行 select 操作,那么你就不能执行 update 操作。只允许你从某个 IP 上连接 MySQL ,那么你就不能从除那个 IP 以外的其他机器连接 MySQL 。

在 MySQL 中,用户权限也是分级别的,可以授予的权限有如下几组:

  • 列级别,和表中的一个具体列相关。例如,可以使用 UPDATE 语句更新表 students 中 student_name 列的值的权限。
  • 表级别,和一个具体表中的所有数据相关。例如,可以使用 SELECT 语句查询表 students 的所有数据的权限。
  • 数据库级别,和一个具体的数据库中的所有表相关。例如,可以在已有的数据库 mytest 中创建新表的权限。
  • 全局,和 MySQL 中所有的数据库相关。例如,可以删除已有的数据库或者创建一个新的数据库的权限。

权限信息存储在 mysql 系统库的 user、db、tables_priv、columns_priv、procs_priv 这几个系统表中。

  • user 表:存放用户账户信息以及全局级别(所有数据库)权限。
  • db 表:存放数据库级别的权限,决定了来自哪些主机的哪些用户可以访问此数据库。
  • tables_priv 表:存放表级别的权限,决定了来自哪些主机的哪些用户可以访问数据库的这个表。
  • columns_priv 表:存放列级别的权限,决定了来自哪些主机的哪些用户可以访问数据库表的这个字段。
  • procs_priv 表:存放存储过程和函数级别的权限。

参考官方文档,可授予的权限如下表所示:

三. 数据表管理

三大范式

第一范式(1NF):属性不可分割,即每个属性都是不可分割的原子项。(实体的属性即表中的列)

 列不可再分(原子性)

例如:湖南省长沙市岳麓区浪梅溪湖创新中心2楼
第二范式(2NF):满足第一范式;且不存在部分依赖,即非主属性必须完全依赖于主属性。(主属性即主键;完全依赖是针对于联合主键的情况,非主键列不能只依赖于主键的一部分) 

主键约束
例如:订单项表设计:id、单价数量、小计
第三范式(3NF):满足第二范式;且不存在传递依赖,即非主属性不能与非主属性之间有依赖关系,非主属性必须直接依赖于主属性,不能间接依赖主属性。(A -> B, B ->C, A -> C)外键约束
例如:患者id、患者姓名同时存在于一张关联表中 

外键约束

优化原则 

更小通常更好


更小通常更好
更小的磁盘空间、内存、CPU缓存
更少的CPU周期

简单就好


整型比字符串操作代价更小
用时间类型表示日期(date、datetime等)而不用字符串

尽量避免NULL

NULL为列的默认值,但除非确实需要,应尽量避免使用NULL
尽量指定列为NOT NULL,特别是需要建索引的列

查询中包括有NULL的类,MySQL更难优化

不利于使用索引
索引统计更复杂
值比较更复杂


用整型值而不是字符串表示IP地址  INET ATON()     INET NTOA()

MySQL 数据类型

MySQL 中定义数据字段的类型对你数据库的优化是非常重要的。

MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。


数值类型

MySQL 支持所有标准 SQL 数值数据类型。

这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL 和 NUMERIC),以及近似数值数据类型(FLOAT、REAL 和 DOUBLE PRECISION)。

关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。

BIT数据类型保存位字段值,并且支持 MyISAM、MEMORY、InnoDB 和 BDB表。

作为 SQL 标准的扩展,MySQL 也支持整数类型 TINYINT、MEDIUMINT 和 BIGINT。下面的表显示了需要的每个整数类型的存储和范围。

类型大小范围(有符号)范围(无符号)用途
TINYINT1 Bytes(-128,127)(0,255)小整数值
SMALLINT2 Bytes(-32 768,32 767)(0,65 535)大整数值
MEDIUMINT3 Bytes(-8 388 608,8 388 607)(0,16 777 215)大整数值
INT或INTEGER4 Bytes(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
BIGINT8 Bytes(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值
FLOAT4 Bytes(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度
浮点数值
DOUBLE8 Bytes(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度
浮点数值
DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值依赖于M和D的值小数值

日期和时间类型

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。

每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

TIMESTAMP类型有专有的自动更新特性,将在后面描述。

类型大小
( bytes)
范围格式用途
DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
TIME3'-838:59:59'/'838:59:59'HH:MM:SS时间值或持续时间
YEAR11901/2155YYYY年份值
DATETIME8'1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'YYYY-MM-DD hh:mm:ss混合日期和时间值
TIMESTAMP4

'1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC

结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07

YYYY-MM-DD hh:mm:ss混合日期和时间值,时间戳

字符串类型

字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。

类型大小用途
CHAR0-255 bytes定长字符串
VARCHAR0-65535 bytes变长字符串
TINYBLOB0-255 bytes不超过 255 个字符的二进制字符串
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据

注意:char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。

CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。

有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。


枚举与集合类型(Enumeration and Set Types)

  • ENUM: 枚举类型,用于存储单一值,可以选择一个预定义的集合。
  • SET: 集合类型,用于存储多个值,可以选择多个预定义的集合。

空间数据类型(Spatial Data Types)

GEOMETRY, POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION: 用于存储空间数据(地理信息、几何图形等)。


 选择标识符

为标识列选择合适的数据类型非常重要。一般来说更可能用标识列与其他值进行比较(例如股关联操作中),或者通过标识列寻找其他列。标志列也可能在另外的表中作为外键使用,所以为标识列选择数据类型时,应该选择跟关联表中的对应列一样的类型。

整数类型通常是标识列最好的选择,因为它们很快并且可以适用AUTO_INCREMENT。如果只是少数的状态标识符可以选用TINYINT。
ENUM和SET类型通常是一个糟糕的选择,尽管对某些只包含固定状态或者类型的静态“定义表”来说可能是没有问题大。ENUM和SET列适合存储固定信息,这样就相对限制了可扩展性。
如果可能应该尽量避免使用字符串类型作为标识列,因为他们很耗空间,并且通常比数字类型慢。

对于完全“随机”的字符串也要多加注意,例如MD5(), SHA1()或者UUID()产生的字符串。这些函数生成的新值会任意分布在很大的空间内,这回导致INSERT以及一些SELECT语句变得慢。

用来进行关联操作
在其他表中作为外键
整型通常是标识列的好选择

相关的表中使用相同的数据类型
尽量避免字符串作为标识列,尤其是随机生成的字符串,(如:UUID)导致insert.与select都很慢-插入值被随机写到索引的不同位置,iset慢,容易导致页分裂,磁盘随机读取
逻辑上相邻的行被分布在磁盘和内存的不同地方,select慢
是MySQL查询缓存失效
如果需要存储UUD,则应将"_"去除

四. 数据库账号管理

1.用户的管理操作

查询用户
select * from user;

查询用户常见信息 
select user,host from user;

2.权限的相关操作

 设置权限

创建用户设置密码

 create user liao identified by '123456';

给用户授权

增加授权grant ALL on ssm_vue.* to liao@'%';

 收回权部分权限

revoke all on ssm_vue.* from  liao@'%';

 授予查看一张表格权限

grant  SELECT on ssm_vue.vue to  liao@'%';

思维导图:

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

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

相关文章

构建网络信息安全的中国方案 - 国密SSL协议介绍以及国密Nginx服务器部署

国密SSL协议 国密SSL协议指的是采用国密算法,符合国密标准的安全传输协议。简而言之,国密SSL就是SSL/TLS协议的国密版本。TLS协议定义有三个版本号,为0x0301、0x0302、0x0303,分别对应TLS 1.0、1.1、1.2。国密SSL为了避免冲突&am…

听GPT 讲Rust源代码--compiler(32)

File: rust/compiler/rustc_middle/src/middle/exported_symbols.rs 在Rust的源代码中,rust/compiler/rustc_middle/src/middle/exported_symbols.rs文件的作用是实现编译器中处理导出符号的功能。 该文件中定义了一些结构体和枚举,用于描述导出符号的信…

电脑丢失dll文件怎么办,dll修复工具可一键修复dll问题

在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“无法找到某某.dll文件”。这种情况通常是由于dll文件丢失或损坏导致的。那么,究竟是什么原因导致了dll文件的丢失呢?又该如何预防dll文件…

2024校招,网易互娱游戏测试工程师一面

前言 大家好,今天回顾一下,我前段时间参加的游戏测试工程师技术面试 两个面试官,一个提问,另一个负责记录 过程 自我介绍比赛经历介绍一下使用的博弈算法穷举算法对性能有什么影响怎么评估局面好坏出现的bug怎么解决的&#x…

mysql5.7安装-windows安装版本

下载地址 官网地址:https://www.mysql.com/官网下载地址:https://dev.mysql.com/downloads/mysql/阿里云镜像站下载:https://mirrors.aliyun.com/mysql/华为云镜像站地址:https://mirrors.huaweicloud.com/home华为云镜像站下载:https://mirrors.huaweicloud.com/mysql/Downlo…

自动驾驶apollo9.0 Dreamview Debug方法

Apollo 9.0 安装&编译方法 # 拉取源码 git clone gitgithub.com:ApolloAuto/apollo.git git checkout v9.0.0# 启动docker bash docker/scripts/dev_start.sh bash docker/scripts/dev_into.sh# 编译project ./apollo.sh build默认启动方式 default mode wget https:…

SpringBoot实用开发(十一)-- MongoDB的客户端(studio 3T)的安装与简单使用

目录 1.studio 3T的下载与安装 2.studio 3T的连接 3.studio 3T的简单使用 3.1 创建数据库

houdini python self tools

01.geo 对应创建mantra import hou null_path[] for i in hou.selectedNodes():mantrahou.node(out).createNode(ifd,{0}.format(i.name()))mantra.parm(trange).set(1)framehou.parmTuple({0}/f.format(mantra.path()))frame.deleteAllKeyframes()for s in i.children():if …

Web前端-JavaScript(BOM)

文章目录 1.1 常用的键盘事件1.1.1 键盘事件1.1.2 键盘事件对象1.1.3 案例一 1.2 BOM1.2.1 什么是BOM1.2.2 BOM的构成1.2.3 window1.2.4 window对象常见事件窗口/页面加载事件**第1种****第2种** 调整窗口大小事件 1.2.5 定时器setTimeout() 炸弹定时器停止定时器**案例&#x…

解决ImportError: Failed to import test module: sys.__init__

解决ImportError: Failed to import test module: sys.init 背景 学习通过文件夹执行测试脚本时,出现了错误:ImportError: Failed to import test module: sys.__init__ 解决过程 根据报错信息:sys is not a package大胆猜测可能是文件名…

VMware linux虚拟机卸载不干净导致二次安装之后虚拟机ping不通主机

问题就是主机能ping通虚拟机,虚拟机不能ping通主机,我看网上又说虚拟机和主机没在同一网段的, 有些确实是这个情况但是首先你要打开控制面板–》网络–》网络和共享中心-》更改适配器设置,然后 会弹出下面的界面 如果你的没有上面…

【UE Niagara学习笔记】01 - 浮动的蒲公英

目录 效果 步骤 一、创建材质 二、创建Niagara粒子 2.1 创建Niagara模板 2.2 通过用户参数设置粒子大小 2.3 设置数量、风速、透明度变化 效果 步骤 一、创建材质 1. 在虚幻商城中把“Realistic Starter VFX Pack Vol 2”添加到项目中,该资产中所包含的…

ubuntu开机卡在[OK],,,,,的界面无法正常开机后进入桌面

0.现象 ubuntu开机,进入一片代码行,会卡在某一行,一直没有新的进展 1.原因 有很多原因可能导致这个现象,内核升级与固件不匹配、磁盘出了问题等等如果没有做过什么特别的事情,也可能是存储空间满了,也会…

探索2024年软件测试的几大主导趋势

进入2024年,考虑影响测试环境的问题至关重要。这种思考将成为团队了解主要瓶颈和实现当今不断提高的期望的首要因素。 01 了解关键测试瓶颈 毋庸置疑,现代团队需要不断创新、适应和拥抱最新趋势,以保持竞争力并提供以客户为中心的解决方案。尽…

微信小程序 引导地址授权 获取位置信息 uniapp

概述 获取位置信息,需要保证是否授权位置信息,有几个条件是导致无法授权的原因 (1)微信应用未授权定位设置 (2)首次进入小程序未授权位置信息 (3)小程序之前阻止过授权位置信息 &…

力扣383.赎金信 -- 哈希表

思路&#xff1a;记录magazine每个字符个数&#xff0c;然后记录ransomNote每个字符&#xff08;每有一个减1&#xff09;&#xff0c;假如出现<0的情况说明ransomnode有字符的个数超过了magazine则无法构成&#xff0c;否则可以构成 代码&#xff1a; class Solution { pu…

SpringBoot实用开发(十二)-- MongoDB语句的简单使用

目录 1.新增文档 2.删除文档 3.修改文档 4.查询文档 4.1 基础查询 4.2 条件

asp实现ACCESS中日期时间的比较

今天程序中要实现时间作为查询条件的功能&#xff01;使用的是ASPACCESS。 在ACCESS数据库中&#xff0c;日期时间的比较操作符主要有> 、<、三个&#xff01;但不能直接把比较时间用这些操作符相连&#xff01;为了区分时间类型和其它类型&#xff0c;ACCESS中在时…

Qt/QML编程学习之心得:QProcess进程创建(27)

Qt除了线程Thread,进程也有支持类,那就是QProcess。 可以看出,这个类很大,支持的内容也很多。最简单的使用如: myParam << QString("-param hello") ; bool bRes = QProcess::startDetached("/usr/bin/myApplication", myParam);要启动进程,主…

Cache伪共享

伪共享 什么是伪共享 为了解决计算机系统中主内存与CPU之间运行速度差问题&#xff0c;会在CPU与主内存之间添加一级或者多级高速缓冲存储器(Cache)。 这个Cache一般是被集成到CPU内部的&#xff0c;所以也叫CPU Cache。 在Cache内部是按行存储的&#xff0c;其中每一行称为…