IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL事务、索引、数据恢复和备份 -> 正文阅读

[大数据]MySQL事务、索引、数据恢复和备份

#第一个会话

#调用库 关键词:use
USE kj11;
#改变事务之自动提交?? ?关键词:set autocommit 0:关闭/1:打开
SET autocommit = 1;
#查询表?? ?关键词:show tables
SHOW TABLES;
#查询表信息?? ?关键词:select * from
SELECT * FROM grade;
#添加
INSERT INTO grade VALUES
(5,'大五');
#删除
DELETE FROM grade WHERE GradeID = '5';
#手动添加数据?? ?关键词:commit
COMMIT;

#MySQL事务、索引、数据恢复和备份
/*
事务就是将一组SQL语句放在同一批次内去执行
如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行
事务必须具备以下四个属性,简称ACID 属性
1)原子性(Atomicity)

2)一致性(Consistency)

3)隔离性(Isolation)

4)持久性(Durability)

MySQL的事务实现方法
SET ?AUTOCOMMIT
使用SET语句来改变自动提交模式

1) SET AUTOCOMMIT ?= 0; ? ?# 关闭自动提交模式
2) SET AUTOCOMMIT ?= 1; ? ?# 开启自动提交模式
注意!
1) MySQL中默认是自动提交
2) 使用事务时应先关闭自动提交?

MySQL的事务实现方法
1) START TRANSACTION
? ?开始一个事务,标记事务的起始点
2) COMMIT
? ?提交一个事务给数据库?
3) ROLLBACK
? ?将事务回滚,数据回到本次事务的初始状态?
4) SET AUTOCOMMIT = 1;
? ?开启MySQL数据库的自动提交


数据库索引
?? ?作用
?? ??? ?1)提高查询速度
?? ??? ?2)确保数据的唯一性
?? ??? ?3)可以加速表和表之间的连接,实现表与表之间的参照完整性
?? ??? ?4)使用分组和排序子句进行数据检索时,可以显著减少分组和排序的时间
?? ??? ?5)全文检索字段进行搜索优化
?? ?分类
?? ??? ?1)主键索引(PRIMARY KEY)
?? ??? ?2)唯一索引(UNIQUE)
?? ??? ?3)常规索引(INDEX)
?? ??? ?4)全文索引(FULLTEXT)
?? ??? ?
主键索引
?? ?某一个属性或属性的组合能唯一标识一条记录
?? ??? ?如:学生表(学号,姓名,班级,性别等) ,学号就是唯一标识的,可作为主键
?? ?特点
?? ??? ?最常见的索引类型
?? ??? ?确保数据记录的唯一性
?? ??? ?确定特定数据记录在数据库中的位置
?? ?代码如下:
?? ?CREATE TABLE ?`Grade` (
?? ??? ?`GradeID` ?INT(11) ? AUTO_INCREMENT ? ?PRIMARY KEY,
?? ??? ?#省略代码……
?? ??? ?#主键索引也可在字段字义之后,如
?? ??? ?# ?PRIMARY KEY(`GradeID`) ? ?
?? ?)
?? ?唯一索引(UNIQUE)
?? ??? ?作用
?? ??? ??? ?避免同一个表中某数据列中的值重复
?? ??? ?与主键索引的区别
?? ??? ??? ?主键索引只能有一个
?? ??? ??? ?唯一索引可有多个
?? ?代码如下:
?? ?CREATE TABLE ?`Grade` (
?? ??? ?`GradeID` ?INT(11) ?AUTO_INCREMENT ?PRIMARY KEY,
?? ??? ?`GradeName` ?VARCHAR(32) ?NOT NULL ?UNIQUE
?? ??? ?#或 ?UNIQUE ?KEY ?`GradeID` ?(`GradeID`)
?? ?)
?? ?
?? ?常规索引(INDEX)
?? ??? ?作用:快速定位特定数据
?? ??? ?注意
?? ??? ??? ?index和key关键字都可设置常规索引
?? ??? ??? ?应加在查找条件的字段
?? ??? ??? ?不宜添加太多常规索引,影响数据的插入、删除和修改操作
?? ?代码如下:
?? ?CREATE TABLE ?`result` (
?? ??? ?//省略一些代码?? ??? ??? ??? ??? ?
?? ??? ?INDEX/KEY ? `ind` ?(`studentNo`, `subjectNo`)?? ?#创建表时添加
?? ?)
?? ?ALTER TABLE ?`result` ?ADD ?INDEX ?`ind` ?? ?#创建后添加
?? ?(`studentNo`, `subjectNo`);

?? ?全文索引(FULLTEXT)
?? ??? ?作用:快速定位特定数据
?? ??? ?注意
?? ??? ??? ?只能用于MyISAM类型的数据表
?? ??? ??? ?只能用于 CHAR 、 VARCHAR、TEXT数据列类型
?? ??? ??? ?适合大型数据集
?? ?代码如下:
?? ?CREATE TABLE ?`student` (
?? ??? ?#省略一些SQL语句
?? ??? ?FULLTEXT (`StudentName`) ?#创建表时添加
?? ?)ENGINE=MYISAM;
?? ?ALTER TABLE employee ADD FULLTEXT (`first_name`);#创建后添加
?? ?
?? ?管理索引
?? ??? ?创建索引
?? ??? ??? ?创建表时添加
?? ??? ??? ?建表后追加
?? ??? ??? ?ALERT TABLE 表名 ADD ?索引类型(数据列名)
?? ??? ?删除索引
?? ??? ??? ?DROP ?INDEX 索引名 ON ? ?表名
?? ??? ??? ?ALTER TABLE 表名 ? DROP ?INDEX ?索引名
?? ??? ??? ?ALTER TABLE 表名 ? DROP ?PRIMARY KEY
?? ??? ?查看索引
?? ??? ??? ?SHOW ?INDEX(或KEYS) FROM 表名

?? ?索引准则
?? ??? ?索引不是越多越好
?? ??? ?不要对经常变动的数据加索引
?? ??? ?小数据量的表建议不要加索引
?? ??? ?索引一般应加在查找条件的字段

*/

#删除表 关键词:drop
DROP TABLE IF EXISTS account;
#创建新表:account
CREATE TABLE IF NOT EXISTS account(
id INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(32) NOT NULL,
?cash DECIMAL(9,2) NOT NULL,
?PRIMARY KEY (id)
)ENGINE = INNODB CHARSET=utf8 COLLATE=utf8_bin;

#清空表?? ?关键词:delete
DELETE FROM account;
#添加记录?? ?关键词:insert into ...values....
INSERT INTO `account` VALUES
(1001,'A',2000),
(1002,'B',10000);
#查询表 关键词:account
SELECT * FROM account;

#开启事务 start transaction
START TRANSACTION;
#a向b转500元 update...set...where...; savepoint A:事务结果保存到点A
UPDATE account SET cash = (cash-500) WHERE `name` = 'A';
SAVEPOINT A;
UPDATE account SET cash = (cash+500) WHERE `name` = 'B';
SAVEPOINT B;
UPDATE account SET cash = (cash+500) WHERE `name` = 'B';
SAVEPOINT c;
/*
#没有发生错误 commit:自动提交
注意 事务提交后就不可以进行回滚
COMMIT;
*/
#发生错误 ?回滚到A保存点 关键词:rollback to A:回滚返回到指定A点
ROLLBACK TO A;
#发生错误 ?回滚到事务开始状态?? ?关键词:rollback:回到初始点;
ROLLBACK;
COMMIT;
/*#发生错误 回滚到B保存点
rollback to B;
select * from account;
rollback to A;#报错!原因回滚后不可以回头
*/
#视图
#查询学生姓名,年纪名称,学习的科目名称
SELECT a.`StudentName`,b.`GradeName`,c.`SubjectName` FROM student a,grade b,SUBJECT c
WHERE a.`GradeID` = b.`GradeID`
AND b.`GradeID` = c.`GradeID`;

#删除视图 关键词:drop view if exists?
DROP VIEW IF EXISTS student_grade_subject_view;
#创建视图?? ?思路:将上表的查询结果做成视图提供给下面的需求会变得很简单
#关键词:create view ?视图名 ?as ?创建视图依据
CREATE VIEW `student_grade_subject_view` AS?
SELECT a.`StudentName`,b.`GradeName`,c.`SubjectName` FROM student a,grade b,SUBJECT c
WHERE a.`GradeID` = b.`GradeID`
AND b.`GradeID` = c.`GradeID`;

SELECT * FROM `student_grade_subject_view`;?
#查询大一学生的信息
SELECT StudentName FROM `student_grade_subject_view`
WHERE GradeName = '大一';

#查询大一学生郭靖的科目信息
SELECT SubjectName FROM `student_grade_subject_view`
WHERE StudentName = '郭靖';

#删除索引 关键词 alter table 索引所在表名 drop index 索引名;
ALTER TABLE student DROP INDEX student_index;
#创建索引?? ?关键词:create index...on...
CREATE INDEX student_index
ON student(StudentName);

SELECT * FROM student
WHERE StudentName = '黄蓉';

#B树?? ?Btree:数据库底层索引
SHOW INDEX FROM student;
#解释表信息
EXPLAIN SELECT * FROM student
WHERE StudentName = '黄蓉';
?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-07 12:05:45  更:2021-12-07 12:07:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:55:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码