数据库存储引擎查看
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';