数据库
目录
思维导图
1、数据库简单概念
在一个程序应用中所产生的数据进行保存的地方。如果将这些数据保存在内存中容易损坏和丢失且
不易操作管理,用户的密码等这些数据是非常重要的,必须妥善管理。为了解决数据的安全,方便
管理这一需求就产生了数据库!
数据库还有:SQLserver,Oracle,MySQL,DB2...
2、MySQL权限
前言:
学习权限之前先理解为什么会出现权限这一说。假如一个公司是专门开发医疗项目的,A医院有一
个项目,B医院也有,那么数据库就有两个。首先是高层(超级管理员)拥有所有数据库的操作权
限,一个人精力是有限的,所以超级管理员可以创建一个用户(高级管理员)(操作数据库的用
户),将对数据库A的权限分配给该用户,然后将该账号给自己的手下,高级管理员也可以创建用
户a,b,c等,分配a用户拥有对订单表的操作权限管理订单模块,b用户拥有商品表的操作权限管理
商品模块。
1、设置权限
#语法:grant privileges on databasename.tablename to username@'host';
#给 zs用户 赋予 数据库db_xiaoli中所有表 查询权限
grant SELECT on db_xiaoli.* to zs@'%';
#给 zs用户 赋予 数据库db_xiaoli中所有表 所有权限
grant ALL on db_xiaoli.* to zs@'%';
2、撤销权限
#语法:revoke privileges on databasename.tablename from username@'host';
#可以回收GRANT SELECT, UPDATE ON `db_xiaoli`.`t_p1_user` TO `zs`@`%`这条权限语句
revoke all on db_xiaoli.t_p1_user from zs@'%';
#可以回收GRANT ALL PRIVILEGES ON `db_xiaoli`.* TO `zs`@`%`这条赋权语句带来的权限
revoke all on db_xiaoli.* from zs@'%';
3、查看用户权限
show grants for 'root'@'%'
3、操作库
1、账号管理
1.创建用户并设置登录密码
#MySQL5.7
#命令:create user 用户名 identified by '密码';
#注:identified by会将纯文本密码加密作为散列值存储
create user ls identified by '123456';
#MySQL8
#用户名密码创建需要分开
#命令:create user 用户名;
create user ls;
2.查看用户信息
#MySQL5.7
select host,user,password from user;
#MySQL8
select host,user,authentication_string from user;
3.删除用户(慎用)
#命令:drop user 用户名;
#drop user ls;
4.修改用户密码
4.1 修改密码
#MySQL5.7
#命令:set password for 用户名=password('新密码');
set password for zs=password('123456');
#MySQL8
#ALTER USER 用户 IDENTIFIED WITH mysql_native_password BY '密码';
ALTER USER 'ls'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
4.2 刷新配置
#命令:flush privileges;
user表中host列的值的意义
% 匹配所有主机
localhost localhost不会被解析成IP地址,直接通过UNIXsocket连接
127.0.0.1 会通过TCP/IP协议连接,并且只能在本机访问;
::1 ::1就是兼容支持ipv6的,表示同ipv4的127.0.0.1
#案例:
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON TUTORIALS.*
TO 'zara'@'localhost'
IDENTIFIED BY 'zara123';
#创建zara账号,密码zara123,只拥有TUTORIALS的权限
2、创建数据库
1.MySQL默认数据库介绍
1)information_schema:是一个信息数据库,它保存着关于MySQL服务器所维护的所有其他数据库的信息;
2)mysql:核心数据库,类似于sql server中的master表,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息;
3)test:测试数据库,没有东西;
2.创建数据库
语法:create database 数据库名;
或者
create database if not exists 数据库名 default charset utf8 collate utf8_general_ci;
注:默认的数据库编码集:utf8(即UTF-8),collate表示排序规则为utf8_general_ci
3.查看所有数据库
语法:
4.删除数据库(慎用)
语法:drop database 数据库名;
4、四大引擎简介
1、在表设计中的选项中可以设计这张表的引擎
2、引擎介绍
InnoDB存储引擎
InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,上图也看到了,InnoDB是默认的MySQL引擎。
MyISAM存储引擎
MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事物
MEMORY存储引擎
MEMORY存储引擎将表中的数据存储到内存中,未查询和引用其他表数据提供快速访问。
存储引擎的选择
不同的存储引擎都有各自的特点,以适应不同的需求,如下表所示:
功 能 | MYISAM | Memory | InnoDB | Archive |
---|---|---|---|---|
存储限制 | 256TB | RAM | 64TB | None |
支持事物 | No | No | Yes | No |
支持全文索引 | Yes | No | No | No |
支持数索引 | Yes | Yes | Yes | No |
支持哈希索引 | No | Yes | No | No |
支持数据缓存 | No | N/A | Yes | No |
支持外键 | No | No | Yes | No |