初始MySQL(七)(MySQL表类型和存储引擎,MySQL视图,MySQL用户管理)

目录

MySQL表类型和存储引擎

MyISAM

MEMORY

MySQL视图

我们先说说视图的是啥?

视图的一些使用细节

MySQL用户管理

原因

常见操作


MySQL表类型和存储引擎

复制代码
-- 查看所有的存储引擎
SHOW ENGINES

我们常见的表有MyISAM InnoDB MEMORY

1.MyISAM不支持事务,也不支持外键,但其访问速度快,对事务完整性没有要求

2.InnoDB存储引擎提供了具有提交,回滚和崩溃恢复能力的事务安全,但是比起MyISAM存储引擎,InnoDB写的效率差一些,并且占用更多的磁盘空间以保存数据和索引

3.MEMORY存储引擎使用存在内存中的内容来创建表,每个MEMORY表只实际对应一个磁盘文件,MEMORY类型的表访问非常快,因为它的数据存在内存中的,并且默认使用hash索引,但是一旦MySQL服务关闭,表中的数据会丢失掉,但是表的结构还在

MyISAM

MEMORY

当我关闭MySQL服务后,重新启动mysql

我再来看里面的数据

but

修改存储引擎

复制代码
-- 指令修改存储引擎
ALTER TABLE `t29` ENGINE = INNODB

MySQL视图

我们先说说视图的是啥?

我就用我在初始MySQL(四)中写的数据表了,想实操练习的,可以去找到数据表

SELECT * FROM emp 我先执行这个指令看看我们的数据

假如说我不想让使用者看见我用红线框起来的

这应该怎么办呢? 就用到了我们的视图

我们将empno,ename,job,deptno来建立一个视图,视图里面就是存放的这几列的数据,这几列数据也是从emp表中拷贝过来的

复制代码
CREATE VIEW emp_view01 AS SELECT empno,ename,job,deptno FROM emp;

我们执行上面的代码,然后查看我们的建立的视图emp_view01

视图的一些使用细节

1.一些常见的视图操作指令

复制代码
-- 视图的使用
-- 创建一个视图emp_view01,只能查询emp 表的(empno,ename,job和deptno)
CREATE VIEW emp_view01 AS SELECT empno,ename,job,deptno FROM emp;

-- 查看视图表结构
DESC emp_view01

-- 查看视图
SELECT * FROM emp_view01;
SELECT empno,job FROM emp_view01;

-- 查看创建视图的指令
SHOW CREATE VIEW emp_view01;

-- 删除视图
DROP VIEW emp_view01;

2.创建视图后,到数据库去看,对应视图只有一个视图结构文件(形式:视图名.frm)

我们可以从图中看见我们建立的视图只有frm文件,没有对应的数据文件,要是查看数据的话,是直接到emp表中查看数据

3.视图的结构变化会影响到基表,基表的数据变化也会影响到视图

我把代码放着,你们自己尝试看看

复制代码
-- 改变视图
UPDATE emp_view01 SET job='牛逼克拉斯' WHERE empno = 7369;
-- 查看基表
SELECT * FROM emp;

-- 改变基表
UPDATE emp_view01 SET job='MANAGER' WHERE empno = 7369;
-- 查看视图
SELECT * FROM emp_view01;

4.视图中还可以再使用视图,如果说我在emp_view01视图上再创建一个emp_view02的视图也是可以的,但是视图emp_view01一旦销毁,emp_view02也就不能使用了

MySQL用户管理

原因

当我们在做项目开发时,可以根据不同的开发人员,赋给他相应的MySQL操作权限,所以mysql数据库管理人员(root),根据需要创建不同的用户,赋给相应的权限,供人员使用

不同的数据库用户,登录到数据库后,根据权限,可以操作的数据库和数据对象(表,视图,触发器)不一样

一般用户的信息存放在mysql中的user表中

常见操作

复制代码
-- 1.创建新的用户
-- (1)'lhq_nb'@'localhost'表示用户的完整信息,'lhq_nb'用户名 'localhost'是登陆ip
-- (2)123456 密码 ,但是注意,存放在 mysql.user表时,password('123456')是加密后的
CREATE USER 'lhq_nb'@'localhost' IDENTIFIED BY '123456'

SELECT `host`,`user`,authentication_string FROM mysql.user

-- 2.删除用户
DROP USER 'lhq_nb'@'localhost'

-- 3.登录

-- 4.修改密码
-- 修改自己密码

SET PASSWORD = PASSWORD('lhq')

-- 修改其他人的密码需要权限
-- 这个没有权限就不能执行
-- root权限很大,可以修改其他人的密码
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456') 
相关推荐
代码的小搬运工2 小时前
网络请求(NSURL、NSURLRequest、NSURLSessionDataTask、协议回调与 JSON 数据的基本流向)
网络·数据库·json
Cx330❀8 小时前
【MySQL基础】一文吃透“表的约束”:从 Null/Default 到主外键的终极安全法则
linux·服务器·数据库·c++·mysql·安全
c238568 小时前
第二篇:《测试指挥官:可视化单题自测框架(含 assert 实操)》
java·数据库·c++·算法·安全性测试
大阳光男孩8 小时前
Spring Boot 整合 Debezium 实现 MySQL 增量数据监听(嵌入式版)
spring boot·后端·mysql
我科绝伦(Huanhuan Zhou)8 小时前
MySQL极端场景数据丢失防护:从Crash-Safe到异地备份
数据库·mysql
辞旧 lekkk9 小时前
【Redis初阶】常见数据类型
开发语言·数据库·c++·redis·学习·缓存·bootstrap
明志数科9 小时前
人形机器人格斗场景下的技术挑战:动力学控制、感知融合与实时决策
网络·数据库
酉鬼女又兒9 小时前
零基础入门 DeepSeek V4 Pro API 开发:从环境搭建、消息格式规范到翻译函数实战、少样本提示、多轮对话聊天机器人与常见报错全流程详解指南
大数据·网络·数据库·人工智能·macos·机器人·github
笨蛋不要掉眼泪9 小时前
MySQL架构揭秘:MVCC解决读一致性问题
数据库·mysql·架构
Navicat中国10 小时前
开发者入门:无服务器数据库
数据库·云原生·serverless·navicat