MySQL数据库

前言:

  前面我们了解了什么是数据库,什么是MySQL数据库以及如何运用,接下来我们接着深入学习MySQL。

  (提前声明,以下所提供的事例不标准,仅供参考)

数据库的备份与还原:

  备份: 在cmd中输入 mysqldump -u root -p 数据库名称 > 备份路径

  还原:两种方法

  ①: mysql -u root -p 数据库名称 < 备份路径

    (这个实例,我事先删除了smbms的数据库并重新导入)

  ②: 第一步:在服务器内创建一个数据库

     第二步:source 还原数据库的地址

  当然你也可以更简单,使用可视化工具直接备份和还原。

多表设计之外键的约束:

约束的作用:保证数据的完整性

单标约束:主键、唯一、非空

外键约束:用来保证数据完整性(多表之间)

添加外键约束:alter table 指向的表名 add foreign key (指向的键) references 被指向的表名(被指向的键);

具体示例:

表与表的关系:一对多、多对多、一对一

一对多:在多的一方创建外键指向一的一方主键。

多对多:需要创建第三张表(中间表),在中间表中至少两个字段分别作为外键,指向多对多双方的主键。

一对一:两种方式:

①唯一外键对应的方式:假设一对一是一个一对多关系,需要在多的一方创建外键指向一的一方的主键,将外键设置为唯一。

②主键对应方式:将两个表的主键建立对应关系即可。

多表查询的分类:连接查询、子查询

①连接查询:

(1)交叉查询:查询到的是两个表的笛卡尔积。

select * from 表1 cross join 表2; select * from 表1,表2;

(这里主要看id,这个事例不标准,仅供参考)

(2)内连接:inner join  (inner 可以省略)

  • 显示内连接:

select * from 表1 inner join 表2 on 关联条件;

  • 隐式内连接:

select * from 表1,表2 where 关联条件;

(3)外连接:outer join (outer可有省略)

【这里注意看左外连接和右外连接的事例区别】

  • 左外连接:

select * from 表1 left outer join 表2 on 关联条件;

  • 右外连接:

select * from 表1 right outer join 表2 on 关联条件

②子查询:一个查询语句条件需要依赖另一个查询语句的结果。

  • 带in的子查询
  • 带exists的子查询
  • 带any的子查询
  • 带all的子查询

事务:指的是逻辑上的一组操作,组成这组操作的各个逻辑单元,要么全都成功,要么全都失败

开启事务: start transaction;
提交事务: commit;
回滚事务: rollback;

事务的四大特性:
原子性:事务的不可分割,组成事务的各个逻辑单元不可分割
一致性:事务执行的前后,数据完整性保持一致
隔离性:事务执行不应该受到其他事务的干扰
持久性:事务一旦结束,数据就持久化到数据库中

事务的隔离级别:
安全问题主要体现在读取数据上:脏读、不可重复读、虚读/幻读

脏读:一个事务读到了另一个事务未提交的数据,导致查询结果不一致。
不可重复读:一个事务读到了另一个事务已经提交的update的数据,导致多次查询结果不一致。
虚读/幻读:一个事务读到了另一个事务已经提交的insert的数据,导致多次查询结果不一致。

解决方法:设置事务的隔离级别: 级别由上到下依次增强,但是读取速度依次下降。
read uncommitted:脏读,不可重复读,虚读都有可能发生。
read committed:避免脏读。但是不可重复读和虚读是有可能发生的
repeatable read:避免脏读和不可重复读,但是虚读有可能发生。
serializable:避免脏读,不可重复读,虚读。

设置事务的隔离级别: SET SESSION TRANSACTION ISOLATION LEVEL 隔离级别;
查看当前的隔离级别: SELECT @@tx_isolation;

注意:不同版本的mysql,查看隔离级别语法不同!

上面那个是旧版的,新版的:SELECT @@transaction_isolation;

否则会报错:ERROR 1193 (HY000): Unknown system variable 'tx_isolation'

(关于事务可以自己去尝试)

小结:

  以上就是多表和事务的介绍了,希望能对各位有所帮助。

                            加油

                        时间:2020-03-28 15:39:33

MySQL数据库02的更多相关文章

  1. 004.CI4框架CodeIgniter, 配置mysql数据库,并进行数据库查询

    01.在app的Config目录的Database文件里面填写数据库配置,并把pConnect设置成true,此处为一直连接mysql数据库 02.在Models中,创建一个System目录,再在Sy ...

  2. MySQL数据库学习: 02 —— 数据库的安装与配置

                             MySQL安装图解 一.MYSQL的安装 1.打开下载的mysql安装文件mysql-5.0.27-win32.zip,双击解压缩,运行“setup. ...

  3. 数据库02 /MySQL基础数据类型、完整性约束、sql_mode模式

    2.MySQL基础数据类型.完整性约束.sql_mode模式 目录 2.MySQL基础数据类型.完整性约束.sql_mode模式 1. MySQL常用数据类型 MySQL常用数据类型预览 1. 1 数 ...

  4. MySQL学习02(操作数据库)

    操作数据库 结构化查询语句分类 名称 解释 命令 DDL(数据库定义语言) 定义和管理数据对象,例如数据库和数据表 create.drop.alter DML(数据操作语言) 用于操作数据库对象中所包 ...

  5. 如何在删除ibdata1和ib_logfile的情况下恢复MySQL数据库

    昨天,有个朋友对公司内部使用的一个MySQL实例开启binlog,但是在启动的过程中失败了(他也没提,为何会失败),在启动失败后,他删除了ibdata1和ib_logfile,后来,能正常启动了,但所 ...

  6. 【Data Cluster】真机环境下MySQL数据库集群搭建

    真机环境下MySQL-Cluster搭建文档  摘要:本年伊始阶段,由于实验室对不同数据库性能测试需求,才出现MySQL集群搭建.购置主机,交换机,双绞线等一系列准备工作就绪,也就开始集群搭建.起初笔 ...

  7. 在Ubuntu中建立MySQL数据库

    最近在做一个关于云计算安全系统的项目,需要用到MySQL数据库,现在把建立数据库的步骤记录下来. 一.用命令在Ubuntu上安装MySQL # sudo apt-get update # sudo a ...

  8. 二进制包安装MySQL数据库

    1.1二进制包安装MySQL数据库 1.1.1 安装前准备(规范) [root@Mysql_server ~]# mkdir -p /home/zhurui/tools ##创建指定工具包存放路径 [ ...

  9. MYSQL数据库相关知识合集

    1  MYSQL取得某一范围随机数: 关键词:RAND() [产生0~1之间的随机数] mysql> SELECT RAND( ), RAND( ), RAND( ); +----------- ...

随机推荐

  1. 剑指CopyOnWriteArrayList

    上期回顾 之前的一篇 剑指ConcurrentHashMap[基于JDK1.8] 给大家详细分析了一波JUC的ConcurrentHashMap,它在线程安全的基础上提供了更好的写并发能力.那么既然有 ...

  2. Matlib’s lsqnonlin 和 scipy.optimize’s least_square

    matlib's lsqnonlin 和 scipy.optimize's least_square 问题 有三个点 $A,B,C$ , 经过一个线性变换 $T$ , 变为了 $A',B',C'$ 三 ...

  3. 在 React Native 中使用 moment.js 無法載入語系檔案

    moment.js 是很常見的日期時間 library,友善的 API 與極佳的執行效率是它的兩大賣點.例如 (new Date()).getFullYear(),如果使用 moment.js 我可以 ...

  4. rpmbuild 实践

    安装 rpmbuild 1 # yum install -y rpm-build 查看 rpmbuild 相关的宏和参数 12345678 # rpmbuild --showrc | grep --c ...

  5. 从0开发3D引擎(十二):使用领域驱动设计,从最小3D程序中提炼引擎(第三部分)

    目录 上一篇博文 继续实现 实现"DirectorJsAPI.init" 实现"保存WebGL上下文"限界上下文 实现"初始化所有Shader&quo ...

  6. 沙雕与大婶 | Mock调你的外部依赖吧

    故事背景: 沙雕在公司负责API项目的开发,很认真负责,经常加班加点赶进度,却常常被老板吐槽说他开发效率太低,他自己也很委屈,因为他所负责的项目常常依赖大量外部系统,他只好等对方开发完才一个个对接,开 ...

  7. czC#01

    1. .net简介: .net分为.net平台及.net Framework 2..NET作用 2.转义与@ 3.类型转换 1) 隐式转换 2)显式类型转换 (待转换的目标类型)原始值

  8. Rxjs入门实践-各种排序算法排序过程的可视化展示

    Rxjs入门实践-各种排序算法排序过程的可视化展示 这几天学习下<算法>的排序章节,具体见对排序的总结,想着做点东西,能将各种排序算法的排序过程使用Rxjs通过可视化的方式展示出来,正好练 ...

  9. electron+vue制作桌面应用--自定义标题栏

    electron会默认显示边框和标题栏,如下图 我们来看一下如何自定义一个更加有(gao)意(da)思(shang)的标题栏,例如网易云音乐这种 首先我们要把默认的标题栏删掉,找到主进程中创建窗体部分 ...

  10. 大厂常问iOS面试题--多线程篇

    1.进程与线程 进程: 1.进程是一个具有一定独立功能的程序关于某次数据集合的一次运行活动,它是操作系统分配资源的基本单元. 2.进程是指在系统中正在运行的一个应用程序,就是一段程序的执行过程,我们可 ...