MySQL笔记第一天 (了解和安装)

今天我们学习了在虚拟机上安装MySQL。本文只是当做笔记,有什么错的地方还请大神指点一二。

MySQL历史

这里很好的说明了MySQL历史。

https://blog.csdn.net/tianlesoftware/article/details/6999245

数据库类型

关系型数据库

  1. 关系型数据库: 是指采用了关系模型来组织数据的数据库。简单说就是二维表格的模型。
  2. 关系模型中常用的概念:
    关系:可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的表名
    元组:可以理解为二维表中的一行,在数据库中经常被称为记录
    属性:可以理解为二维表中的一列,在数据库中经常被称为字段
    域:属性的取值范围,也就是数据库中某一列的取值限制
    关键字:一组可以唯一标识元组的属性,数据库中常称为主键,由一个或多个列组成
    关系模式:指对关系的描述。
  3. 一些关系型数据库:Oracle,access,DB2,mysql,INGRES,FoxPro等。

非关系型数据库

  1. NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。
  2. MongoDB: 是个面向文档的数据库,使用JSON 风格的数据格式。
  3. couchdb:是另一个面向文档的数据库,以 JSON 格式存储数据。它兼容于 ACID,像 MongoDB 一样,CouchDB 也可以用于存储网站的数据与内容,以及提供缓存等。
  4. Neo4j: 是一款 NoSQL 图型数据库,具有非常高的性能。
  5. memcachedb:这是个分布式的键值存储系统,用于数据存储并以非常快速且可靠的方式检索数据。
  6. Cassandra:是个分布式数据库,支持分散的数据存储,可以实现容错以及无单点故障等。
  7. Redis:这是个开源、高级的键值存储。由于在键中使用了 hash、set、string、sorted set 及 list,因此 Redis 也称作数据结构服务器。
  8. Hadoop HBase:是一款可伸缩、分布式的大数据存储。它可以用在数据的实时与随机访问的场景下。
  9. Riak: 是最为强大的分布式数据库之一,它提供了轻松且可预测的伸缩能力,向用户提供了快速测试、原型与应用部署能力。
    10.ttserver(东京的暴君 ):持久化存储的数据库 单表2000万数据库的情况下使用较好。

一致性哈希

一致性哈希参考下文讲的非常详细。

https://juejin.im/post/5ae1476ef265da0b8d419ef2

Hive是将sql 转化成 mapreduce在进行处理和计算的 。

范式 (设计数据库的规则)

主要有三种范式:第一范式(1NF),第二范式(2NF),第三范式(3NF)。

第一范式:表中数据不可在拆分。
第二范式:在第一范式基础上,添加主键。
第三范式:在第二范式基础上,有外键 。

MySQL结构

MySQL笔记第一天 (了解和安装)_第1张图片

事务

事务 : 一组事件全部完成或者 全部取消。
事务回滚
事务四大特性:ACID
1.原子性Atomicity
一个事务(transaction)中的所有操作,或者全部完成,或者全部不完成,不会结束在中间某个环节。
2.一致性Consistency
在事务开始之前和事务结束以后,数据库的完整性没有被破坏。
3.隔离性 Isolation
数据库允许多个并发事务同时对其数据进行读写和修改的能力
4.持久性 Durability
事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
ODBC 是有C语言开发 数据库对外提供服务的API(应用程序接口)
JDBC java 专门供java使用

约束、索引

索引就是为了 加快查询
基本语法:
SQL
DML 数据库的管理语言 grant 授权 revoke 收权
DCL 查询语言 show 显示 select 查询 use 使用
DQL 标准查询语言 。
DDL 定义语言 insert 插入 update 修改 delete 删除 truncate 删除
Delete truncate 就是直接情况磁盘内容
Delete* update 内容修改成空 代替delete
主从 读写 备份 全备+增量日志 才有可能恢复人为删除的数据

MySQL二进制的三种日志格式

1.row 行
数据只要更改 我就把你更改的数据记录下来 update 。
2.Statement 语句
记录你执行过的语句
mysql更新了一些函数 。
3. mixed
根据你更改的东西 只能的选择 使用 row 或者statement。

安装MySQL

创建个目录。

[root@tyler ~]# mkdir application

将MySQL的gz压缩包上传到虚拟机的application目录下。

[root@tyler application]# rz

解压。

[root@tyler application]# tar -zxvf mysql-5.5.62-linux-glibc2.12-x86_64.tar.gz

软连接(方便后面操作)。

[root@tyler application]# ln -s mysql-5.5.62-linux-glibc2.12-x86_64 mysql

创建mysql用户。

[root@tyler application]# useradd -s /sbin/nologin mysql

初始化mysql。

[root@tyler ~]# /application/mysql/scripts/mysql_install_db --user=mysql --basedir=/application/mysql --datadir=/application/mysql/data

添加环境变量。

[root@tyler ~]#  echo "export PATH=/application/mysql/bin:$PATH" >> /etc/profile
[root@tyler ~]#  . /etc/profile

查看是否有3306的进程,是否有mysql用户。

[root@tyler ~]# ss -lntup
[root@tyler ~]# id mysql

后台启动。

[root@tyler ~]# mysql_safe &
[root@tyler ~]# mysql    登陆MySQL 

备份

[root@tyler ~]# mysqldump -B test --events > test.sql
mysql> drop databases test;     删除数据库test
mysql> quit;      退出数据库
[root@tyler ~]# mysql -B test < test.sql    恢复    
[root@tyler ~]# mysqladmin shutdown     关闭mysql

你可能感兴趣的:(MySQL笔记第一天 (了解和安装))