MySQL数据库前置工作

目录

MySQL简介

特点

版本信息

环境搭建 

SQL简介

数据库及存储引擎

数据库

存储引擎


MySQL简介

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

特点

可移植性、可扩展性、灵活性:使用C和C++编写,支持UNIX、Linux和Mac OS及Windows等操作系统,在一个操作系统中实现的应用可以很方便地移植到其他操作系统;作为开源性质的数据库服务器,可以为特定需求提供完全定制的功能;可在同一查询中混用不同数据库中的表

数据保护:该服务拥有一个非常灵活且安全的权限和密码系统,所有的密码传输均使用加密形式,同时支持SSH和SSI

支持大型数据库:可存放上千万条记录

稳定性:拥有快速且稳定的基于线程的内存分配系统

版本信息

命名机制:三个数字一个后缀,如mysql-5.7.21

数字

  • 第一个数字是主版本号,描述文件格式
  • 第二个数字是发行级别,与主版本号组合在一起构成发行序列号
  • 第三个数字是在此发行序列的版本号,随每次新版本递增

后缀

  • alpha,表明发行包含大量未被完全测试的新代码(bug相对较多)
  • beta,表明所有新代码已被测试,没有增加重要的新特性;当alpha版本至少一个月没有出现报道的致命漏洞,并没有计划增加可能导致当前功能不稳定的新功能时,版本后缀从alpha变为beta
  • rc,发行了一段时间的beta版本,只增加了很小的修复
  • 无后缀,表明该版本已在很多地方运行一段时间了,而且没有非平台特定的缺陷报告,只增加了关键漏洞修复

环境搭建 

MySQL8.0 Community Server 下载链接

Visual Studio 2019 下载链接

Anaconda3 下载链接 开源的python发行版本

安装MySQL需要的环境:visual studio2015、2017或2019,python3及以上版本

鉴于版本变动的原因,以上提供的下载链接可能会发生变化,如果下载不了请前往官网寻找资源,以下是官网域名

www.mysql.com

visualstudio.microsoft.com

www.anaconda.com

本文的环境是完全安装的8.0.28版本

安装完成后的软件路径分布在C:\Program Files\MySQL\ 和 C:\Program Files (x86)\MySQL\路径下

C:\Program Files\MySQL\ 路径下的软件

  1. Connector C++ 8.0
  2. Connector ODBC 8.0
  3. Connector Python 8.0
  4. MySQL Router 8.0
  5. MySQL Server 8.0
  6. MySQL Shell 8.0
  7. MySQL Workbench 8.0 

C:\Program Files (x86)\MySQL\路径下的软件

  1. Connect J 8.0
  2. Connect NET 8.0
  3. MySQL Documentation 8.0
  4. MySQL for Visual Studio 1.2
  5. MySQL Installer for Windows
  6. Samples and Examples 8.0

安装完毕后的服务名叫MySQL80,前往控制面板>管理工具>服务,找到MySQL80服务,可将其设为自动启动,本文采用手动的方式启动的方式

启动
D:\>net start mysql80
MySQL80 服务正在启动 .
MySQL80 服务已经启动成功。

关闭
D:\>net stop mysql80
MySQL80 服务正在停止..
MySQL80 服务已成功停止。

环境变量的配置:计算机>属性>高级系统设置>高级(选项卡)>环境变量>系统变量>变量名:Path>编辑,选中输入栏任意一处,将光标移至输入栏末尾(推荐按键盘上的End键,其实也可以在头部,加好分号就行),加入';'(一定要英文符号),增加路径:'C:\Program Files\MySQL\MySQL Server 8.0\bin',单击确定,再次单击确定,然后再确定一次

配置完成后可以通过命令行连接到MySQL

D:\>mysql -u root -h localhost -p
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.28 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>exit    #退出
Bye

该操作可以通过win键+R键输入'mysql -u root -h localhost -p'来实现

Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.28 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>quit    #退出
Bye

SQL简介

Structured Query Language 结构化查询语言,是由ANSI (American National Standards Institute 美国国家标准协会) 和 ISO (International Standards Organization 国际标准化组织) 定义的标准,其分类有

  1. DDL (Data Definition Language 数据定义语言),用于创建和删除数据库,创建、修改、删除数据库中的各种对象,常用的DDL语句是CREATE,DROP,ALTER
  2. DML (Data Manipulation Language 数据操纵语言),用于完成数据的增删查改,即查询,修改,插入,增加,删除数据表中的内容,常用的DML语句是SELECT,INSERT,UPDATE,DELETE
  3. DCL (Data Control Language 数据控制语言),用于设置或更改数据库用户或角色权限的语句,常用的DCL语句是GRANT,REVOKE

数据库及存储引擎


数据库

MySQL的每个数据库都对应存放在一个与数据库同名的文件夹中,MySQL数据库文件包括MySQL所建数据库文件和MySQL所用存储引擎创建的数据库文件。

1、MySQL创建并管理的数据库文件:

.frm文件:存储数据表的框架结构,MySQL数据库文件名与表名相同,每个表对应一个同名frm文件,与操作系统和存储引擎无关,即不管MySQL运行在何种操作系统上,使用何种存储引擎,都有这个文件。

除了必有的.frm文件,根据MySQL所使用的存储引擎的不同(MySQL常用的两个存储引擎是MyISAM和InnoDB),存储引擎会创建各自不同的数据库文件。

2、MyISAM数据库表文件:

.MYD文件:即MY Data,表数据文件

.MYI文件:即MY Index,索引文件

.log文件:日志文件

3、InnoDB采用表空间(tablespace)来管理数据,存储表数据和索引,

InnoDB数据库文件(即InnoDB文件集,ib-file set):

ibdata1、ibdata2等:系统表空间MySQL数据库文件,存储InnoDB系统信息和用户数据库表数据和索引,所有表共用

.ibd文件:单表表空间文件,每个表使用一个表空间文件(file per table),存放用户数据库表数据和索引

日志文件:ib_logfile1、ib_logfile2

二、MySQL数据库存放位置:

1、MySQL如果使用MyISAM存储引擎,数据库文件类型就包括.frm、.MYD、.MYI,默认存放位置是C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 8.0\data;或者是C:\ProgramData\MySQL\MySQL Server 8.0\Data

2、MySQL如果使用InnoDB存储引擎,MySQL数据库文件类型就包括.frm、ibdata1、.ibd,存放位置有两个,

.frm文件默认存放位置是C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 8.0\data

参考:MySQL数据库文件其具体的存放位置简述


存储引擎

存储引擎就是存储数据为存储的数据建立索引和更新、查询数据等技术的实现方法,在关系型数据库中,数据是以表的形式存储的

  1. InnoDB,默认存储引擎,具有提交、回滚、崩溃恢复能力的事务安全存储引擎,支持行锁定和外键约束;占用较多磁盘空间以保存数据和索引
    1. 支持自动增长列(AUTO-INCREMENT) 存储表中的数据时,每张表的存储都按主键顺序存放。如果在定义表时没有指定主键,则InnoDB会为每一行生成一个6字节的ROWID,并将其作主键。ROWID由自动增长列的值填充;自动增长列的值不能为空且必须唯一,若插入的值为0或空,则实际插入的值为自动增长后的值,自动增长列的值默认为1;自动增长列必须是索引,或是组合索引的第一列,自动增长列是按照组合索引的前面几列进行排序后递增的
    2. 支持外键约束(FOREIGN KEY) 只有InnoDB支持外键约束,外键所在的表为子表,外键依赖的表为父表。表中被子表外键关联的字段必须为主键。当删除、更新父表的某条记录时,子表也必须有相应的改变。创建索引时,可指定删除、更新父表时对子表的相应操作
    3. 存储格式
      • 使用共享表空间存储,表结构保存在.frm文件中。数据和索引保存在innodb_data_home_dir和innodb_data_file_path定义的表空间中,可为多个文件
      • 使用多表空间存储,表结构存储在.frm文件中,表的数据和索引单独保存为.ibd文件。若为分区表,则每个分区对应单独的.ibd文件,文件名为表名+分区名
  2. MyISAM,不支持事务、外键约束,访问速度快
    1. 存储文件,每个MyISAM物理上存储为3个文件,文件名和表名相同,扩展分别有.frm(存储表定义)、.MYD(MYData存储数据)、.MYI(MYIndex存储索引)
    2. 存储格式
      1. 静态表,默认存储格式,字段长度固定,存储迅速,容易缓存;占用空间多
      2. 动态表,字段长度不固定,占用空间少;频繁地更新,删除操作会产生碎片,容易出现故障
      3. 压缩表,由myisampack工具创建,每个记录单独压缩,访问开支小,占用空间小
  3. MEMORY,使用存在于内存中的内容创建表,每个表对应一个磁盘文件,格式为.frm,使用HASH索引,访问速度快;服务发生故障或关闭,表中的内容会丢失,一般用作统计操作的中间表,而如果表的内容过大,会转化为磁盘表

查看所有引擎

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

(暂时只写这么多,有空再把另外几种补上)


安装完成后的mysql第一次启动会看到默认的六个数据库

库名 作用
information_schema 保存关于MySQL服务器维护的所有其他数据库的信息
mysql 描述用户访问权限
performance_schema 主要用于收集数据库服务器性能参数
sakila 样本数据库,提供设计表的例子
sys 通过视图的形式把information_schema和performance_schema结合起来,查询出更容易理解的数据存储过程,可以执行一些性能方面的配置,也可以得到一些性能诊断报告内容
world 示例数据库,包含的表的内容,城市,国家,国家语言
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| world              |
+--------------------+
6 rows in set (0.00 sec)

创建数据库

语法格式

CREATE DATABASE <库名>;

mysql> create database bruh;
Query OK, 1 row affected (0.01 sec)

打开数据库

 语法格式

USE <库名>;

mysql> use bruh;
Database changed

删除数据库

语法格式

DROP DATABASE <库名>;

mysql> drop database bruh;
Query OK, 0 rows affected (0.04 sec)

下一篇入口:

        MySQL数据库创建与维护数据表

你可能感兴趣的:(MySQL基础,sql,数据库)