MySQL之四大引擎、建库建表以及账号管理

news2024/11/19 20:28:13

目录

一.四大引擎

        1.1 InnoDB

        1.2 MyISAM

        1.3 MEMORY

        1.4 Archive

二.数据库管理

        2.1 元数据库简介

        2.2 元数据库分类

        2.3 数据库的增删改查及使用

        2.4 MySQL库权限相关

三.数据表管理

        3.1 三大范式

        3.2 基本数据类型

                3.2.1 优化原则

                3.2.2 分类

四.数据库账号管理

        4.1 相同

         4.1 不同

五.思维导图


一.四大引擎

  • 存储引擎查看:
    • 命令:SHOW ENGINES
    • support字段说明:default为默认的引擎,为YES表示可以使用,为NO表示不能使用。

        1.1 InnoDB

1.使用场景:一般事务性,均使用该引擎,用途最广,如果把握不准使用何种引擎,就使用该引擎。

2.特点:

  • 修改快,支持事务——行锁
  • 存储限制:64TG
  • 事务支持:支持事务

        1.2 MyISAM

1.使用场景:大量查询,很少修改的场景。(数据字典,系统参数)

2.特点:

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

        1.3 MEMORY

1.使用场景:由于易失性,也可用于存储在分析中产生的中间表。

2.特点:

  • 所有的数据都保存在内存中,一旦服务器重启,所有memory存储引擎的表数据会消失但是表结构会保存下来。
  • 存储限制:取决于RAM(随机存储器)           tips:ROM(只读存储器)
  • 事务支持:不支持事务

        1.4 Archive

1.使用场景:在日志和数据采集的时候可以使用。

2.特点:

  • 只允许插入和查询,不允许修改和删除,压缩存储,节约空间,可以实现高并发的插入,支持在自增ID上建立索引。(日志)
  • archive表比MySAM表要小大约75%,比支持事务处理的InnoDb表小大约83%
  • 不支持索引(自增ID列除外)

二.数据库管理

        2.1 元数据库简介

记录MySQL自身数据的数据库。

        2.2 元数据库分类

1.information_schema

  • 信息数据库,保存mysql所维护的其他数据库信息。
  • 例如:数据库名,数据库的表,表栏的数据类型与访问权限等

2.mysql

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

3.performance_schema

  • 用于mysql的监控数据的存放(读写分离)

        2.3 数据库的增删改查及使用

1.use 数据库名(使用数据库)

2.create database if not exists 数据库名 default charset utf8 collate utf8_general_ci;——设置了字符编码以及不区分大小写。(创建)

3.show databases;(查询所有数据库)

4.drop database 数据库名。(删除数据库)

        2.4 MySQL库权限相关

1.user表(用户层权限):决定用户拥有哪些数据库的权限

2.db表(数据库层权限):决定用户对这个数据库里哪些表有操作权限

3.tables_priv表(表层权限):决定用户对于某一个表具体的增删改查的权限

4.columns_priv表(字段层权限):决定用户针对于某一张表的哪些字段具有操作权限。

三.数据表管理

        3.1 三大范式

  • 第一范式:列不可再分(原子性)——例如:湖南省长沙市岳麓区浪琴湾燕联八栋
  • 第二范式:主键约束——例如:订单项表设计:id、单价、数量、小计
  • 第三范式:外键约束——例如:患者id、患者姓名同时存在于一张关联表中

        3.2 基本数据类型

                3.2.1 优化原则

1.更小通常更好

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

2.简单就好

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

3.尽量避免NULL

  • NULL为列的默认值,但除非确实需要,应尽量避免使用NULL
  • 尽量指定列为NOT NULL,特别是需要建索引的列
  • 查询中包括有NULL的类,MySQL更难优化
    • 不利于使用索引
    • 索引统计更复杂
    • 值比较更复杂
  • 用整型值而不是字符串表示IP地址
    • INET_ATON()
    • INET_NTOA()

                3.2.2 分类

1.整数

  • tinyint 8位(-128~127)
  • smallint 16位(-32768~32767)
  • mediumint 24位(-8388608~8388607)
  • int 32位 大约正负21亿
  • bigint 64位

2.实数(带有小数点)

  • float 4个字节
  • double 8个字节
  • decimal 最多允许65个数字

3.字符串

  • char
    • 定长,MySQL根据定义字符串的长度一次分配足够的空间
    • 适用场景:较短的字符串,且所有值接近同一长度
  • varchar
    • 比定长类型节约空间
    • 适用场景:字符串的最长长度比评估长度大很多,列的更新较少
    • 缺点:频繁修改,且字符串的长度变化大时,可能出现页分裂

4.text&blob(为存放很大的数据而设计)

  • text存储字符数据
    • tinytext
    • smalltext
    • mediumtext
    • text
    • longtext
  • blob存储二进制数据
    • tinyblob
    • smallblob
    • mediumblob
    • blob
    • longblob

5.日期时间

  • datetime
    • 精度:秒
    • 与时区无关,8个字节存储空间
    • 范围:1001至9999年
  • timestamp
    • 保存1970年1月1日午夜以来的秒数
    • 占用4个字节存储空间
    • 范围:1970年至2038年
    • 与时区有关
    • 默认为NOT NULL
    • 通常尽量使用timestamp
    • 精度:秒
  • date
    • yyyy-MM-dd
  • time
    • HH:mm:ss

6.选择标识符

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

四.数据库账号管理

        4.1 相同

1.查询用户:SELECT * from user;

2.查看用户常用信息:select host,user from user;

3.删除用户(慎用):#命令:drop user用户名;

4.权限操作:

  • 设置权限(Grant)

    #语法:grant privileges on databasename.tablename to username@'host';

              #给zs用户 赋予 数据库db_xiaoli.t_p1_user 查询权限

              grant SELECT on db_xiaoli.t_p1_user to zs@'%';

              #给zs用户 赋予 数据库db_xiaoli中的表t_p1_user 修改权限

              grant UPDATE on db_xiaoli.t_p1_user to zs@'%';

              #给zs用户 赋予 数据库db_xiaoli中所有表 查询权限

              grant SELECT on db_xiaoli.* to zs@'%';

              #给zs用户 赋予 数据库db_xiaoli中所有表 所有权限

              grant ALL on db_xiaoli.* to zs@'%';

  •  撤销权限(Revoke)

              #语法:revoke privileges on databasename.tablename from username@'host';

              #啥也不能回收,不会对GRANT ALL PRIVILEGES ON `db_xiaoli`.* TO `zs`@`%`有任何影响

              revoke DELETE on db_xiaoli.t_p1_user from zs@'%';

              #可以回收GRANT SELECT,UPDATE ON `db_xiaoli`.* TO `zs`@`%`这条赋权语句带来的权限

              revoke all on db_xiaoli.* from zs@'%';

              #注:revoke只能回收grants列表中更小的权限;

  • 查看用户权限

              #命令:show grants for 用户名;

              show frants for 'zs'@'%';

         4.1 不同

1.MySQL 5.7版本

  • 创建用户并设置登录密码
        #命令:create user 用户名 identified by '密码';
        #注:identified by会将存文本密码加密作为散列值存储
        create user ls identified by '123456';
  • 修改用户密码
        #命令:set password for 用户名=password('新密码');
        set password for zs=password('123456');
        flush privileges;

2. MySQL 8.0版本

  • 创建用户并设置登录密码
        #用户名密码创建需要分开
        #命令:create user 用户名;
        create user ls;
  • 修改用户密码
         #ALTER USER 用户 IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '新密码';
         ALTER USER 'ls'@'%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '新密码';
         flush privileges;

五.思维导图

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

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

相关文章

LabVIEW在高精度机器人视觉定位系统中的应用

在现代工业自动化中,精确的机器人视觉定位系统对于提高生产效率和产品质量至关重要。LabVIEW软件,以其卓越的图像处理和自动化控制功能,在这一领域发挥着重要作用。本案例将展示LabVIEW如何帮助开发和实现一个高精度的机器人视觉定位系统&…

【WPF.NET开发】WPF中的输入

本文内容 输入 API事件路由处理输入事件文本输入触摸和操作侧重点鼠标位置鼠标捕获命令输入系统和基元素 Windows Presentation Foundation (WPF) 子系统提供了一个功能强大的 API,用于从各种设备(包括鼠标、键盘、触摸和触笔)获取输入。 本…

easycython和cython将py编译为pyd对比

前提了解 为了实验的准确性,在全过程使用的python环境版本都为同一版本 easycython和cython编译为pyd文件的不同在于,easycython编译的原始文件后缀为pyx,cython编译的原始文件为py 1.cython 1.1原始文件 def ZWHCythonTest():print("Z_W_H_") def ZWHCython…

C语言数组习题

1.数组遍历 #include <stdio.h>int main(){int i,a[10];for(i0;i<9;i) //对数组元素a[0]~a[9]赋值 a[i]i;for(i9;i>0;i--) //输出a[9]~a[0]共10个数组元素 printf("%d ",a[i]);printf("\n");return 0;} 运行结果&#xff1a; 2.数组应用&a…

IOS - 手机安装包 ipa 常见几种方式

安装 ipa 包的方法有很多中&#xff0c;可以通过不同的软件安装&#xff0c;本文只列出了常用的几种&#xff0c;做个简单的归纳整理 1、iTunes 安装 数据线连接手机之后&#xff0c;会自动连接iTunes&#xff0c;&#xff08;第一次连接的时候会提示是否信任此电脑&#xff0…

Git管理项目

大家好我是苏麟 , 今天和大家聊聊用Git管理项目 . 一步一步上传到Git仓库 . 1.找到VCS点击创建Git仓库 2.点击目录 3.点击绿色对号提交 4.点击提交 5.点击提交 6.成功提交到本地 7.打开GitLab 或 Gitee 或 GitHub 并创建项目 (注意 : 这里一定是什么都没有的) 否则一会上传是…

[足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-9PID控制器

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-自动控制原理Ch1-9PID控制器&#xff09; P —— Proportional I —— Integral D —— Derivative 当前误差/过去误差/误差的变化趋势 K p ⋅ e K_{\mathrm{p}}\cdot e Kp​⋅e&#xff1a;比…

挑战 ChatGPT 和 Google Bard 的防御

到目前为止&#xff0c;科学家已经创建了基于人工智能的聊天机器人&#xff0c;可以帮助内容生成。我们还看到人工智能被用来创建像 WormGPT 这样的恶意软件&#xff0c;尽管地下社区对此并不满意。但现在正在创建聊天机器人&#xff0c;可以使用生成人工智能通过即时注入活动来…

论文笔记:CellSense: Human Mobility Recovery via Cellular Network Data Enhancement

1 intro 1.1 背景 1.1.1 蜂窝计费记录&#xff08;CBR&#xff09; 人类移动性在蜂窝网络上的研究近些年得到了显著关注&#xff0c;这主要是因为手机的高渗透率和收集手机数据的边际成本低蜂窝服务提供商收集蜂窝计费记录&#xff08;CBR&#xff09;用于计费目的&#xf…

利用提示工程,提升LLM将自然语言转化为SQL的准确性

大型语言模型 (LLM) 已展现出理解自然语言提示并生成连贯响应的卓越能力。 这为将自然语言翻译成 SQL 等结构化查询语言开辟了新的可能性。 过去&#xff0c;编写 SQL 查询需要技术专业知识&#xff0c;而LLM允许任何人用简单的英语描述他们想要的内容&#xff0c;并自动生成相…

Github 2024-01-03 开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2024-01-03统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目3TypeScript项目3Jupyter Notebook项目1Dart项目1C项目1Rust项目1 系统设计指南 创建周期&#x…

STC进阶开发(三)蜂鸣器、RTC时钟、I2C总线、外部中断、RTC闹钟设置、RTC计时器设置

前言 这一期我们首先学习如何让蜂鸣器响起来&#xff0c;并且如何让蜂鸣器发出简单的歌曲&#xff0c;然后我们介绍RTC时钟&#xff0c;要想明白RTC时钟&#xff0c;我们还需要先介绍I2C总线和外部中断。接下来就开始这一期的学习吧&#xff01; 蜂鸣器 简单介绍 蜂鸣器是一种…

geemap学习笔记039:分析地理空间数据--合成无云影像

前言 本节介绍的内容是对于众多的原始Landsat数据&#xff0c;利用ee.Algorithms.Landsat.simpleComposite()将其处理为TOA数据&#xff0c;并且合成无云影像。 1 导入库并显示地图 import ee import geemap ee.Initialize()2 无云影像合成 Map geemap.Map()collection e…

王道考研计算机组成原理——数据的表示和运算

数制转换 任意进制》十进制&#xff1a;位权*位数即可 整数部分补0是补在头部&#xff0c;小数部分补0是补在尾部 一般都是先把十进制》二进制&#xff1b;然后二进制再转换成8/16进制这样子 一种更快的方法->拼凑法&#xff1a;小数部分整数部分都可以这样求 一般都是先…

TypeError: unsupported operand type(s) for +: ‘NoneType‘ and ‘str‘

报错 找到出错代码&#xff0c;发现默认值是None 解决 改为‘’即可

vba抓取网页数据

哈喽&#xff0c;哈喽&#xff0c;大家好&#xff01;大家2024发大财啦&#xff01; 不知道&#xff0c;平时大家爱不爱看电影呢&#xff1f;从今年的贺岁档的拍片来看&#xff0c;今年的电影还挺多&#xff0c;而且国产优秀电影居多&#xff0c;元旦假期期间我也去看了部喜剧…

【BCC动态跟踪PostgreSQL】

BPF Compiler Collection (BCC)是基于eBPF的Linux内核分析、跟踪、网络监控工具。其源码存放于GitCode - 开发者的代码家园 想要监控PostgreSQL数据库的相关SQL需要在编译PostgreSQL的时候开启dtrace。下文主要介绍几个和PostgreSQL相关的工具,其他工具可根据需求自行了解。 …

ChatGPT 进行 SEO的使用技巧

搜索引擎优化 (SEO) 是使网站对搜索引擎友好的一种不断发展的实践。 自搜索引擎和新兴技术的发展以来&#xff0c;它从未保持不变。 最近发布的 ChatGPT 是一种人工智能对话工具&#xff0c;似乎在搜索引擎优化方面有很好的应用。 从创建吸引人的标题到只需一个简短的提示就可…

Latex宏包gbt7714的格式问题:去掉OL

问题 采用bibtex来格式化文献&#xff0c;文献的格式采用gbt7714宏包来格式化。感谢宏包的作者和一种贡献者&#xff0c;效果非常好&#xff0c;用起来也很方便。 唯一一个我自己的问题&#xff0c;看不得文献索引后面[J/OL]中的OL。 网上搜索一圈&#xff0c;有一些办法&am…

echarts点击柱子、线节点、横坐标标签

echarts点击柱子、线节点、横坐标标签 x轴标签要为标签文字添加点击事件&#xff0c;必须先在xAxis里设置响应事件 xAxis: {triggerEvent: true, },然后直接监听 thisChart.on("click" ,function (params) {console.log(params) });通过params.componentSubType来…