Mysql基础知识01

王 茂南 2020年3月31日07:53:56
评论
3173字阅读10分34秒
摘要这一篇是MySQL的第一篇, 主要介绍MySQL的实验环境, 包括测试数据的导入, 为之后做准备. 同时会给出一些关于MySQL的基础知识.

简介

从这一篇开始, 我会用几篇文章的篇幅来简单介绍, 记录一下Mysql的相关知识. 这一篇作为第一篇, 会简单介绍一下实验环境(windows下连接mysql, 并进行数据的导入). 同时介绍一下mysql的相关基础知识. 这里的基础知识是指关系数据库中的一些定义, 保持数据库完整性的机制, 以及数据库事务的四个属性等.

关于MySQL的基础操作我会在后面一篇进行记录.

 

MySQL基础知识

关系数据库

  • 关系数据库存在表(table)中, 表由行(row)和列(column)组成, 一组表的定义被称为schema.
  • 多数表中都有一些键. 一个键(key)是一个或多个列的组合. 通常有一个键作为主键. (只有一个主键, 但是可以把一个表中多个列作为主键)
  • 外键是一个键值来自其他表(通常是其他表的主键)的键. 外键的作用是保证两张表的内容可以同步. 看下面的例子.
Mysql基础知识01

在第一张表中, 公司代号是外键, 公司代号是第二张表的主键. 有了这个外键, 当我们在表1中插入数据的时候, 我们会要求其中的公司代号可以在表2中找到. 同时, 如果表1还存在着某个公司代号的数据, 表2就无法将其删除. 这就是所谓的保持数据的一致性和完整性.

 

数据库事务

一个保持数据完整性的补充机制是数据库事务.

一个事务将一组相关的数据库操作作为一个单元. 如果事务中的任何一个操作失效了, 那么整个操作就都会失效, 并且该事务所做的任何修改都会被放弃(回滚). 相反, 如果所有的操作都成功了, 那么所有的修改都会作为一个整体进行提交.

同时, 该事务对数据库或者其他事务的执行无影响, 所有的事务都好像在独立的运行.

于是就有了下面的性质:

  • 数据库事务(Database Transaction), 是指作为单个逻辑工作单元执行的一系列操作, 要么完全地执行, 要么完全的不执行.
  • 事务处理可以确保除非事务单元内的所有操作都成功完成, 否则不会永久更新面向数据的资源.
  • 事务是数据库运行中的逻辑工作单位, 由数据库管理系统(DBMS)中的事务管理子系统负责事务的处理.

 

事务的四个属性

并非任意的对数据库的操作序列都是数据库事务. 数据库事务拥有以下四个特性, 习惯上被称之为ACID特性.

  • 原子性(Atomicity): 事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行.
  • 一致性(Consistency): 事务应确保数据库的状态从一个一致状态转变为另一个一致状态. 一致状态的含义是数据库中的数据应满足完整性约束. 也就是在事务完成时, 必须是所有的数据保持一致. 例如, 用户A和用户B两者的钱加起来一共是5000, 那么不管A和B之间如何转账, 转几次帐, 事务结束之后他们两个用户的钱加起来还是5000, 这就是事务的一致性.
  • 隔离性(Isolation): 多个事务并发执行时,一个事务的执行不应影响其他事务的执行. 例如当多个用户并发访问数据库的时候, 此时他们同时操作同一张表, 数据库会为每一个用户开启一个事务, 这个事务不能被其他事务操作干扰, 多个并发的事务之间要相互隔离. 就是需要达到这样的一种效果, 对于任意两个并发的事务T1和T2, 在T1看来, T2要么在T1开始之前就结束了, 要么在T1结束之后才开始, 这样每个事务都不会察觉其他事务在并发地执行.
  • 持久性(Durability): 已被提交的事务对数据库的修改应该永久保存在数据库中.

 

数据库事务的例子

某人要在商店使用电子货币购买100元的东西, 当中至少包括两个操作:

  • 该人账户减少100元
  • 商店账户增加100元

支持事务的数据库管理系统(transactional DBMS)就是要确保以上两个操作(整个"事务")都能完成, 或一起取消; 否则就会出现100元平白消失或出现的情况.

 

事务的三种模式

  • 隐式事务, 是指每一条数据操作语句都自动成为一个事务, 事务的开始是隐式的, 事务的结束有明确的标记.
  • 显示事务, 是指有显示开始和结束标记的事务, 每一个事务都有显示的开始和结束的标记.
  • 自动事务, 是系统自动默认的, 开始和结束都不用进行标记. 每一条单独的SQL语句都在其执行完成后进行自动提交事务, 即执行 SQL 语句后就会马上自动隐式执行 COMMIT 操作. 如果出现错误, 则进行事务回滚至之前状态.

关于更多的内容, 可以参考下面的链接: 三大常用数据库事务详解之三:事务运行模式

 

数据库SQL四种语言分类

我们先来看一张图片, 介绍了这四种sql语言分类, 之后再详细介绍每一种.

Mysql基础知识01

 

DDL - Data Definition Language

数据库定义语言: 定义数据库的结构. 其主要命令有CREATEALTER(添加,修改或者删除列)DROP等,下面用例子详解。该语言不需要commit,因此慎重。

CREATE - to create objects in the database   在数据库创建对象

  1. CREATE DATABASE test; -- 创建一个名为test的数据库

ALTER - alters the structure of the database   修改数据库结构

  1. ALTER TABLE test ADD birthday date-- 修改test表,新增date类型的birthday列

DROP - delete objects from the database   从数据库中删除对象

  1. DROP DATABASE test; -- 删除test数据库

还有其他的:

  • TRUNCATE - 截断表内容
  • COMMENT - 为数据字典添加备注(这个在实际中使用挺多的, 需要给增加一些文字说明)

 

DML - Data Manipulation Language

数据库操作语言: SQL中处理数据库中的数据 其主要命令有SELECT,INSERT,UPDATE,DELETE等, 这些例子大家常用就不一一介绍了. 该语言需要commit.

 

DCL - Data Control Language

数据库控制语言: 授权,角色控制等

  • GRANT - 为用户赋予访问权限
  • REVOKE - 撤回授权权限  

 

TCL - Transaction Control Language

事务控制语言

  • COMMIT - 保存已完成的工作
  • SAVEPOINT - 在事务中设置保存点,可以回滚到此处
  • ROLLBACK - 回滚
  • SET TRANSACTION - 改变事务选项

 

Windows下连接MySQL与导入样例

配置MySQL环境变量

当我们在Windows中安装完MySQL之后, 我们需要配置一下相应的环境变量. 我们可以按照下面的链接一步一步照着做, win10系统中配置mysql环境变量的方法. 我在这里也进行简单的记录.

首先, 我的电脑->右键->属性:

Mysql基础知识01

接着点击高级系统设置->环境变量, 如下图所示

Mysql基础知识01

接着在path->新建->输入MySQL文件夹路径, 即可

Mysql基础知识01

当完成上面的操作之后, 我们需要重启终端, 再次输入mysql -v就能正常显示版本号了.

 

Windows下启动MySQL服务

关于在Windows下启动MySQL服务, 我们打开任务管理器->服务->mysql, 然后右键点击启动.

Mysql基础知识01

 

链接MySQL(不添加全局变量)

我们在最上面讲了关于添加MySQL环境变量的方法. 如果我们不添加环境变量, 这个时候就需要进行MySQL所在文件夹进行执行.

我们打开cmd, 接着进入MySQL文件夹.

  1. C:\Program Files\MySQL\MySQL Server 5.7\bin

之后再使用MySQL命令进入即可.

  1. mysql -uroot -p

之后再输入密码即可.

 

导入MySQL测试数据

接下来我们导入MySQL的测试数据, 之后我们就会使用这个测试数据来进行基础命令的学习和测试. 首先, 我们下载测试数据, 下载地址为, A sample MySQL database

接着我们使用下面的命令进行导入.

  1. mysql -uroot -p < employees.sql
Mysql基础知识01

我们进入数据库看一下导入的数据表.

Mysql基础知识01

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南
  • 本文由 发表于 2020年3月31日07:53:56
  • 转载请务必保留本文链接:https://mathpretty.com/11974.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: