mysql之四大引擎、账号管理以及建库
目录
一、数据库存储引擎
1.1 存储引擎查看
(1)命令:
????????SHOW ENGINES
(2)support字段说明:
? ? ? ? 1、default为默认的引擎
????????2、为YES表示可以使用
? ? ? ? 3、为NO表示不能使用
1.2四大引擎
1.2.1 InnoDB
(1)使用场景:
????????一般事务性,均使用该引擎,用途最广,如果把握不准使用何种引擎,就使用该引擎
(2)特点:
? ? ? ? 1.修改快,支持事务 --------行锁
? ? ? ? 2.存储限制:64TG
? ? ? ? 3.事务支持:支持事务
1.2.2?MyISAM
(1)使用场景:
????????大量查询,很少修改的场景
(2)特点:
? ? ? ? 1.强调了快速读取操作
? ? ? ? 2.存储限制:256TG
? ? ? ? 3.事务支持:不支持事务
1.2.3?MEMORY
(1)使用场景:
???????由于易失性,可以用于存储在分析中产生的中间表
(2)特点:
? ? ? ? 1.所有的数据都保存在内存中,一旦服务器重启,所有memory存储引擎的表数据会消失但是表结构会保存下来
? ? ? ? 2.存储限制:取决于RAM(随机存储器)
? ? ? ? 3.事务支持:不支持事务
1.2.4?Aichive
(1)使用场景:
???????在日志和数据采集的时候可以使用
(2)特点:
? ? ? ? 1.只允许插入和查询,不允许修改和删除,压缩存储,节约空间,可以实现高并发的插入,支持在自增ID上建立索引
? ? ? ? 2.archive表比MySAM表要小约75%,比支持事务处理的InnoDB表小约83%
? ? ? ? 3.不支持索引(自增ID列除外)
二、数据库管理
2.1 元数据库简介
记录MySQL自身数据的数据库
2.2 元数据库分类
2.2.1 information_schema
信息数据库,保存mysql所维护的其他数据库信息
例如:数据库名,数据库的表,表栏的数据类型与访问权限等。
2.2.2 mysql
核心数据库,主要负责存储数据库的用户、权限设置、关键字等。
mysql自己需要使用的控制和管理信息。
2.2.3 performance_schema
用于mysql是监控数据的存放
2.3 相关操作
数据库的增删改查
(1)use数据库名
(2)create database 数据库名
(3)show database;
(4)drop database 数据库名
2.4 MySQL库
权限相关
(1)user表(用户层权限)
(2)db表(数据库层权限)
(3)tables_priv表(表层权限)
(4)columns_priv表(字段层权限)
三、数据库表管理
3.1 三大范式
3.1.1 列不可再分(原子性)
例如:湖南省长沙市望城区中南林业科技大学涉外学院
3.1.2 主键约束
例如:订单项表设计:id、单价 数量、小计
3.1.3 外键约束
例如:患者id、患者姓名同时存在于一张关联表中
3.2 基本数据类型
3.2.1 优化原则
1.更小通常更好
(1)更小通常更快
(2)更小的磁盘空间、内存、CPU缓存
(3)更少的CPU周期
2. 简单就好
(1)整型比字符串操作代价更小
(2)用时间类型表示日期(date 、datetime等)而不用字符串
3. 尽量避免NULL
(1)NULL为列的的默认值,但除非确实需要,应尽量避免使用NULL
(2)尽量指定列为NOT NULL,特别是需要索引的列(3)查询中包括有NULL的类,MySQL更难优化
? ? ? ? (3.1)不利于使用索引
? ? ? ? (3.2)索引统计更复杂
? ? ? ? (3.3)值比较更复杂
(4)用整型值而不是字符串表示IP地址
? ? ? ? (4.1)INET_ATON()
? ? ? ? (4.2)INET_NTOA()? ??
3.2.2 分类
1.整型
(1)tinyint 8位(-128~127)
(2)smallint 16 位 (-32768~32767)
(3)mediumint 24位 (-8388608~8388607)
(4)int 32位 大约正负21亿
(5)bigint 64 位
2.实数(带有小数点)
(1)float 4个字节
(2)double 8个字节
(3)decimal 最多允许65个数字
3.字符串
(1)char?
? ? ? ? 定长,MySQL根据定义字符串的长度一次分配足够的空间
? ? ? ?适用场景:较短的字符串,且所有值接近统一长度
(2)varchar
? ? ? ? 比定长类型节约空间
????????适用场景:字符串最长长度比评估长度大很多,列的更新较少?
? ? ? ? 缺点:频繁修改,且字符串的长度变化大时,可能出现页分裂
4. text&blob
1.都为存放很大的数据而设计
2.与其他数据不同,都作为独立的对象存储
4.1 text存储字符串数据
(1)tinytext
(2)smalltext
(3)mediumtext
(4)text
(5)longtext
4.2 blob存储二进制数据
(1)tinyblob
(2)smallblob
(3)mediumblob
(4)blob
(5)longblob
5.日期时间
5.1 detetime
(1)精度:秒
(2)与时区无关,8个字节存储空间
(3)范围:1001至9999年
5.2 timetamp
(1)保存1970年1月饼1月1日午夜以来的秒数
(2)占用4个字节存储课件
(3)范围:1970年至2038年
(4)与时区有关
(5)默认为NOT NULL
(6)通常尽量使用timestamp
(7)精度:秒
5.3 date
yyyy-MM-dd
5.4 time
HH.mm.ss
6. 选中标识符
(1)用来进行关联操作
(2)在其他表中作为外键
(3)整型通常是标识列的最好选择
(4)相关的表中使用相同的数据类型
(5)尽量避免字符串作为标识列,尤其是随机生成的字符串,
(如:UUID)导致insert与select都很慢?
(5.1)插入值随机写到索引的不同位置,insert慢,容易导致分裂,磁盘随机读取(5.2)逻辑上相邻的行被分布在磁盘和内存的不同地方,select慢
(5.3)是MySQL查询缓存失效
(5.4)如果需要存储UUID,则应将“_”去除
四、数据库账号管理
4.1 相同
4.1.1 查询用户
SELECT * FROM USER
4.1.2 查看用户常用信息
select host,user from user;
4.1.3 删除用户(慎用)
drop user 用户名;
drop user ls;
4.1.4 操作权限
(1)设置权限
????????grant privileges on databasename.tablename to username@'host';
(2)撤销权限
????????revoke privileges on databasename. tablename from username@'host';
????????注:revolke只能回收grants列表中更小的权限
(3)查看用户权限
????????show grants for 用户名;
????????如:show grants for 'zs'@'%'
4.2 不相同
4.2.1 5.7版本
(1)创建用户并设置登录密码
????????create user 用户名 identitied by '密码'
(2) 修改密码
????????set password for 用户名=password('新密码')
刷新权限:flush privileges;
4.2.2 8.0版本
(1)创建用户并设置登录密码
? ? ? ? (用户名密码创建需要分开)
????????create user 同户名;
(2) 修改密码
? ? ? ?ALTER USER 'ls'@'%' IDENTIFIED WITH mysql_native_password BY '123456'?
????????刷新权限:flush privileges;
五、思维导图
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!