-
-
数据库存储引擎查看
-
Support字段说明
-
default的为默认引擎
-
YES表示可以使用
-
NO表示不能使用
-
-
命令
-
SHOW ENGINES
-
-
-
四大引擎
-
MEMORY
-
使用场景:由于易失性,可以用于存储在分析中产生的中间表
-
特点
-
所有的数据都保存在内存中,一旦服务器重启,所有memory存储引擎的表数据会消失,但表结构会保留
-
存储限制:取决RAM(随机存储器)
-
事务支持:不支持事务
-
-
-
MylSAM
-
特点
-
强调快熟读取操作
-
表锁
-
-
存储限制:256TG
-
事务支持:不支持事务
-
-
使用场景:大量查询,很少修改的场景
-
-
InnoDB
-
使用场景:一般事务性,均使用该引擎,用途最广,如果把我不准使用何种引擎,就使用该引擎
-
特点
-
修改快,支持事务
-
行锁
-
-
存储限制:64TG
-
事务支持:支持事务
-
-
-
ARCHIVE
-
使用场景:在日志和数据采集的时候可以使用
-
特点
-
只允许插入和查询,不允许修改和删除,压缩存储,节约空间,可以实现高效率的查询
-
archive表必My了SAM表要小75%,比支持事务处理的innoDB表小大约80%
-
不支持索引(自增ID列除外)
-
-
-
-
数据库管理
-
元数据库简介
-
记录Mysql自身数据的数据库
-
-
元数据库的分类
-
information_schema
-
信息数据库,保存mysql所维护的其他数据库信息。列如:数据库名,数据库的表,表栏的数据类型和访问权限等
-
-
mysql
-
核心数据库,主要负责存储数据库的用户,权限设置,关键字等。mysql自己需要使用的控制和管理信息。
-
-
performance_schema
-
用于mysql的监控数据的存放
-
-
-
相关操作
-
数据库的增删改查及作用
-
use数据库名
-
create database if not exisfs 数据库名 default charse utf8 collate utf8_feneral_ci
-
设置了字符集编码以及不区分大小写
-
-
show database;
-
deop database 数据库名;
-
-
-
MySQL库
-
权限相关
-
1.user表(用户层权限)
-
2.db表(数据库层权限)
-
3.tables_priv(表层权限)
-
4.columns_priv(字段层权限)
-
-
-
-
数据表管理
-
三大范式
-
第一范式:列不可再分(原子性)
-
列如:湖南省长沙市岳麓区浪琴湾清水21栋
-
-
第二范式:主键约束
-
列如:订单项表设计:id,单价,数量,小计
-
-
第三范式:外键约束
-
列如:患者id,患者姓名同时存在于一张关联表中
-
-
-
优化原则
-
更小通常更好
-
更小的磁盘空间,内存,cpu换成
-
更少的cpu周期
-
更小通常更好
-
-
简单就好
-
整型比字符串操作代价更小
-
用时间类型表示日期(date,datetime等)而不用字符串
-
-
尽量避免null
-
null为列的默认值,但除非确实需要,尽量避免使用null
-
尽量指定列为NOT NULL,特别是需要建索引的列
-
查询中包括有null的类,MySQL更难优化
-
不利于使用索引
-
索引统计更复杂
-
值比较更复杂
-
-
用整型值而不是字符串表示IP地址
-
INET_ATON()
-
INET_NTOA()
-
-
-
-
分类
-
整数
-
tinyint 8位 (-128~127)
-
smallint 16位 (-32768~32767)
-
mediumint 24位 (~8388608~8388607)
-
int 32位 大约正负212亿
-
bigint 64 位
-
-
实数(带有小数点)
-
float 4个字节
-
double 8个字节
-
decimal 最多允许65个数字
-
-
字符串
-
char
-
定长,MySQL根据定义字符串的长度一次分配足够的空间
-
适用场景:较短的字符串,且所有字接近同一长度
-
-
varchar
-
比定长类型节约空间
-
适用场景:字符串的最长长度比评估长度大很多,列的更新较少
-
缺点:频繁修改,且字符串的长度变化大时,可能出现页分裂
-
-
-
text&bolb
-
text存储字符数据
-
tinytext
-
smalltext
-
mediumtext
-
text
-
longtext
-
-
blob存储二进制数据
-
tinybolb
-
smallbolb
-
mediumbolb
-
longbolb
-
-
-
日期时间
-
datetime
-
精度:秒
-
与时区无关,8个字节存储空间
-
范围:1001——99999年
-
-
timestamp
-
保存1970年1月1日午夜一以来的秒数
-
占用4个字节存储空间
-
范围:1970年-2038年
-
与时区有关
-
默认为not null
-
通常尽量适用timestamp
-
精度:秒
-
-
date
-
yyyy-MM-dd
-
HH:mm:ss
-
-
选择标识符
-
用来进行关联操作
-
在其他表中周围外键
-
整型通常是标识列的最好选择
-
相关的表中使用相同的数据类型
-
尽量避免字符串作为标识列,尤其是随生成的字符串,(如:UUID)导致insert与select都很慢
-
插入值被随机写到索引的不同位置,insert很慢,导致容易也分裂,磁盘随机读取
-
逻辑上相邻得到行被分布在磁盘和内纯的不同地方,select慢
-
是MySQL查询缓存失效
-
如果需要存储UUID,则应将“-”去除
-
-
-
-
-
-
数据库账号管理
-
相同
-
查询用户
-
SELECT * from User
-
-
查看用户常用信息
-
select host,user from User,
-
-
删除用户
-
dropr user is
-
-
-
权限操作(Grant)
-
grant SELECT on db_xiaoli.t_p1_user to zs@'% grant UPDATE on db_xiaoli.t_p1_user to zs@'% grant SELECT on db_xiaoli.* to zs@'% grant ALL on db_xiaoli.t_p1_user to zs@'%' revoke all on db_xiaoli.t_p1_user from zs@'%' revoke SELECT,UPDATE ON 'db_xiaoli','t_p1)user' TO 'zs'@'%'
-
show grants for 'zs'@'%' 查看用户权限
-
-
不同
-
5.7
-
创建用户并设置登录密码
-
crate user Is identified by ‘123456’;
-
-
修改用户密码
-
命令:set password for 用户名=password(“新密码”); set password for zs=password(‘123456’);
-
-
-
8.0
-
创建用户并设置登录密码
-
crate user 用户名; create User ls;
-
-
修改用户密码
-
ALTER USER 用户 IDENTIFIED BY ‘新密码’ ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
-
-
-
-
-