目录
- 一.数据库存储引擎
- 1.1存储引擎的查看
- 1.2InnoDB
- 1.3MyISAM
- 1.4 MEMORY
- 1.5 Archive
- 二.数据库管理
- 2.1元数据库分类
- 2.2 操作
- 2.3 MySQL库
- 三.数据表管理
- 3.1三大范式
- 3.2 整形
- 3.3 实数
- 3.4 字符串
- 3.5 text&blob
- 3.6 日期类型
- 3.7 选中标识符
- 四.数据库账号管理
- 4.1 查询用户
- 4.2查看常用的用户信息
- 4.3 权限操作
- 五.思维导图
一.数据库存储引擎
1.1存储引擎的查看
命令:SHOW ENGINES
support字段说明
1.default为默认引擎
2.YES则可以使用
3.NO则不可以使用
1.2InnoDB
1.使用场景:一般事务性,都使用该引擎,用途最广,如果不确定使用哪种引擎,则使用该引擎
2.特点:修改快,支持事务
存储限制:64GB
事务支持:支持事务
1.3MyISAM
1.使用场景:大量查询,很少修改的场景
2.特点: 强调了快速读取的操作
存储限制:256GB
事务支持:不支持事务
1.4 MEMORY
1.使用场景:由于易失性,可以用于存储在分析中产生的中间表
2.特点:所有的数据都保存在内存中,一旦服务器重启,所有memory存储引擎的表数据会消失但是表结构会保存下来
存储限制:取决于RAM(随机存储器)
事务支持:不支持事务
1.5 Archive
1.使用场景: 在日志和数量采集的时候可以使用
2.特点:只允许插入和查询,不允许修改和删除,压缩存储,节约空间,可以实现高并发的插入,支持在自增ID上建立索引
archive表比M有ISAM表要小大约75%,比支持事务处理的InnoDB表小大约83%
不支持索引(自增ID列除外)
二.数据库管理
2.1元数据库分类
1.information_schema:信息数据库,保存MySQL所维护的其他数据库信息 .例如:数据库名,数据库的表,表栏的数据类型于访问权限等
2.MySQL:核心数据库,主要负责存储数据库用户,权限设置,关键字等.MySQL自己需要使用的控制和信息管理.
3.performance_schema:用于MySQL的监控数据的存放
2.2 操作
1.use数据库名
2.create database if not exists 数据库名 degaut charset utf8 collate utf8_general_ci;
3.show database
3.drop database 数据库名
2.3 MySQL库
权限相关的表
1.user表(用户层权限)
权限:his oa 物流
2.db表(数据库层权限)
权限:患者记录表, 门诊卡表,看病流程表
3.tables_priv表(表层权限)
权限:增加,删除,修改,查询,创表,删除表
4.columns_priv表(字段层权限)
权限:患者id,患者姓名,患者年龄
三.数据表管理
3.1三大范式
第一范式:列不可再分(原子性)
第二范式:主键约束
第三范式:外键约束
3.2 整形
1.tinyint8位(-128-127)
2.smallint 16位(-32768-32767)
mediumint24位(-8388608-8388607)
int 32位 大约正负21亿
bigint 64位
3.3 实数
float 4个字节
double 8个字节
decimal 最多允许65个字节
3.4 字符串
1.char:定长,MySQL根据定义字符串长度一次分配足够的空间
通用场景:较短的字符串,且所有值接近同一长度
2.varchar:比定长类型节约空间
通用场景:字符串的最长长度比评估长度大很多,列的更新比较少
缺点:频繁修改,且字符串的长度变化大时,可能出现页分裂
3.5 text&blob
1.text存储字符数据:tinytext, smalltext,mediumtext,text,longtext
2.blob存储二进制数据:tinyblob,smallblob,mediumtext,text, longblod
3.6 日期类型
datetime:精度:秒
与时区无关,8个字节存储空间
范围:1001-9999年
data:yyyy-mm-dd
time:hh.mm.ss
3.7 选中标识符
用来进行关联操作
在其他表中做为外键
整型通常是标识列的最好选则
相关的表中使用时间的数据类型
尽量避免字符串作为标识列,尤其是随机生成的字符串
四.数据库账号管理
4.1 查询用户
select * from user
4.2查看常用的用户信息
select host user from user
4.3 权限操作
1.授予特定数据库的所有表的SELECT权限:
GRANT SELECT ON database_name.* TO ‘username’@‘hostname’;
2.授予特定数据库的所有表的SELECT和INSERT权限:
GRANT SELECT, INSERT ON database_name.* TO ‘username’@‘hostname’;
3.授予特定表的SELECT和INSERT权限:
GRANT SELECT, INSERT ON database_name.table_name TO ‘username’@‘hostname’;
4.授予所有数据库的所有表的SELECT、INSERT和UPDATE权限:
GRANT ALL PRIVILEGES ON . TO ‘username’@‘hostname’;
5.撤销特定数据库的所有表的SELECT权限:
REVOKE SELECT ON database_name.* FROM ‘username’@‘hostname’;
6.撤销特定表的SELECT和INSERT权限:
REVOKE SELECT, INSERT ON database_name.table_name FROM ‘username’@‘hostname’;
7.授予登录和刷新权限:
GRANT ALL PRIVILEGES ON . TO ‘username’@‘hostname’ WITH GRANT OPTION;
8.限制特定IP地址的访问:
GRANT ALL PRIVILEGES ON database_name.* TO ‘username’@‘specific_ip_address’;
9.授予所有数据库的所有表的权限,并设置密码:
GRANT ALL PRIVILEGES ON . TO ‘username’@‘hostname’ IDENTIFIED BY ‘password’;
10.更改已存在的用户的密码:
ALTER USER ‘username’@‘hostname’ IDENTIFIED BY ‘new_password’;