MYSQL入门详解

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于Oracle旗下公司。

Mysql 服务器企业实战



数据库入门简介


  • MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于Oracle旗下公司。


  • MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。


  • MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。


  • MySQL 软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。


  • (RDBMS即关系数据库管理系统(Relational Database Management System),是将数据组织为相关的行和列的系统,而管理关系数据库的计算机软件就是关系数据库管理系统,常用的数据库软件有Oracle、SQL Server等。)


  • RDBMS的特点:


数据以表格的形式出现


每行记录数据的实内容


每列记录数据真实内容的数据域


无数的行和列组成一张表


若干的表组成一个数据库


Mysql 引擎介绍


  • MYSQL引擎包括:ISAM、MyISAM、InnoDB 、MEMORY、CSV、BLACKHOLE、ARCHIVE、PERFORMANCE_SCHEMA、Berkeley、Merge、Federated、Cluster/NDB等


  • 其中MyISAM、InnoDB使用最为广泛,mysql5.5以后默认使用的引擎是Innodb。


  • 数据库事务:是指逻辑上对数据的一组操作,这组操作要一次全部成功,如果失败,则全部失败,因为事务是不可分割。


  • 事务管理语句


  • 查询、定义、操纵、控制语句,共9个命令


查询语句:select


定义:create、dorp、alter


操纵:insert、update、delete


控制:grant(授权)、revoke(移出授权)


  • InnoDB事务型数据库的首选引擎,支持ACID事务,ACID包括:原子性(不可分割性)(Atomicity)、**一致性**(Consistency)、**隔离性**(Isolation)、**持久性**(Durability),一个支持事务(Transaction)的数据库,必需要具有这四种特性,否则在执行事务过程无法保证数据的正确性。


  • 原子性:一个事务中所有的操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚成事务开始前的状态。


  • 一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。


隔离性:数据库运行多个并发事务同时对数据进行读写和修改的能力,防止多个事务并发执行由于交叉导致数据的不同。


  • 隔离性不同级别:读未提交、读提交、可重复读、串行化。


  • 持久性:事务处理完成后,对数据的修改是永久的。


  • MyISAM类型的数据库表强调的是性能,其执行数度比InnoDB类型更快,但不提供事务支持,不支持外键,如果执行大量的SELECT(查询)操作,MyISAM是更好的选择,支持表锁。


Mysql 数据库安装方式


  • MySQL数据库安装方法有两种,一种是yum/rpm通过YUM源在线安装,另外一种是通过源码软件编译安装。


  • Cmake 是一种跨平台的编译工具,比configure更高级,cmake主要编写cmakelists.txt,然后用cmake命令将cmakelists.txt转化成make需要的Makefile文件,最后用make命令编译源码生成的可执行程序。


  • Cmake工具和configure工具,configure二进制程序用来生成Makefile文件,Makefile记录软件需要的环境和要编译的参数。


  • YUM 安装方式


方式1:
yum install –y mysql-server  mysql-devel mysql 
方式2:
yum install –y mariadb-server  mariadb 


  • 源码安装方式


方式1:使用mysql 特有的cmake 编译
cmake
make && make install
方式2:使用./configure 编译
./configure
make -j4 && make -j4 install


Mysql 必备命令操作


  • 查看所有数据库


mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| S                  |
| mysql              |
| performance_schema |
| test               |
+--------------------+


  • 创建名为 S 的数据库


mysql> create database S default charset utf8 collate utf8_general_ci;    utf8 编码
Query OK, 1 row affected (0.00 sec)
mysql> 


  • 进入S数据库


mysql> use S;
Database changed


  • 查看数据库里有多少张表


mysql> show tables;
Empty set (0.00 sec)


  • 创建名为 t1 的表,并创建两个个字段 id、name,varchar表示设置数据长度,一个汉字=2个字符=2Bytes


mysql> create table t1(id int(20),name varchar(10));
Query OK, 0 rows affected (0.01 sec)


  • 向表中插入数据


mysql> insert into t1 values("1","liuaoni");
Query OK, 1 row affected (0.00 sec)


  • 查看t1表的数据内容


mysql> select *from t1;
+------+---------+
| id   | name    |
+------+---------+
|    1 | liuaoni |
+------+---------+
1 row in set (0.00 sec)
mysql> 


  • id、age 多个条件查询


mysql> select *from t1 where id=1 and name="liuaoni";
+------+---------+
| id   | name    |
+------+---------+
|    1 | liuaoni |
+------+---------+
1 row in set (0.00 sec)
mysql> 


  • 查看t1b表结构(字段内容)


mysql> desc t1;
+-------+------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(20)     | YES  |     | NULL    |       |
| name  | varchar(10) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)


  • 修改name 字段的长度


mysql> alter table t1 modify column name varchar(5);
Query OK, 1 row affected, 1 warning (0.02 sec)     
Records: 1  Duplicates: 0  Warnings: 1
MariaDB [hbs]> 


  • 修改name字段的内容


mysql> update t1 set name="nidaye" where id=1;
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1
MariaDB [hbs]> 


  • 刷新权限


mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)



  • 清空表内容


mysql> delete from t1;
Query OK, 1 row affected (0.00 sec)


  • 删除表


mysql> drop table t1;
Query OK, 0 rows affected (0.00 sec)


  • 删除数据库 hbs


mysql> drop database hbs;
Query OK, 0 rows affected (0.00 sec)


  • 查看数据库字符集


mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)


  • 查看mysql 存储引擎


mysqk> show engines;


  • 查看mysql 默认存储引擎


mysql> show variables like '%stroage_engine%';
Empty set (0.00 sec)


  • 修改mysql t1 表存储引擎


mysql> alter table t1 engine=innodb;


  • 相关授权操作


mysql> show grants;   查看当前授权
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)


  • 创建用户


用户登录数据库
[root@localhost ~]# mysql -uhe -phe123! -h192.168.10.11
mysql> create user 'he'@'192.168.10.11' identified by 'he123!';
创建用户he,密码为he123!
mysql> drop user 'he'@'192.168.10.11';   删除数据用户he
Query OK, 0 rows affected (0.00 sec)


Mysql 字符集设置


  • 计算机中储存的信息都是用二进制数方式来表示的,读者每天看到屏幕显示的英文、汉字等字符是二进制数转换之后的结果。通俗的说,将汉字按照某种字符集编码存储在计算机中,称为"编码"。将存储在计算机中的二进制数解析显示出来,称为"解码",在解码过程中,如果使用了错误的解码规则,会导致显示乱码。


  • 编辑vim /etc/my.cnf配置文件,在相应段中加入相应的参数字符集修改完毕,重启MySQL服务即可。


[client]字段里加入:default-character-set=utf8
[mysqld]字段里加入: character-set-server=utf8
[mysql]字段里加入 : default-character-set=utf8


  • MYSQL 命令行里运行以下命令:


show  variables like 'char%'
SET  character_set_client = utf8;
SET  character_set_results = utf8;
SET  character_set_connection = utf8;


MySQL数据库配置并发优化


  • Mysql优化是一项非常重要的工作,而且是一项长期的工作,曾经有一个为位DBA前辈说过:mysql的优化,三分配置的优化,七分sql语句的优化。


  • Mysql的优化:一般分为配置的优化、sql语句的优化、表结构的优化、索引的优化,而配置的优化:一般包括系统内核优化、mysql本身配置文件的优化。


  • MySQL常见的优化参数详解:


  • 硬件上的优化:增加内存和提高磁盘读写速度,都可以提高MySQL数据库的查询,更新的速度。另一种提高MySQL性能的方式是使用多块磁盘来存储数据。因为可以从多块磁盘上并行读取数据,这样可以提高读取数据的速度。


  • MySQL参数的优化:内存中会为MySQL保留部分的缓冲区。这些缓冲区可以提高MySQL的速度。缓冲区的大小都是在MySQL的配置文件中进行设置的。


下面对几个重要的参数进行详细介绍:


key_buffer_size:          表示索引缓存的大小。这个值越大,使用索引进行查询的速度就越快。
 table_cache:           表示同时打开的表的个数。这个值越大,能同时打开的表的个数就越多。这个值不是越大越好,因为同时打开的表过多会影响操作系统的性能。
query_cache_size:         表示查询缓冲区的大小。使用查询缓存区可以提高查询的速度。这个方式只使用与修改操作少且经常执行相同的查询操作的情况;默认值是0。
Query_cache_type:         表示查询缓存区的开启状态。0表示关闭,1表示开启。
Max_connections:          表示数据库的最大连接数。这个连接数不是越大越好,因为连接会浪费内存的资源。
sort_buffer_size:         排序缓存区的大小,这个值越大,排序就越快。
Innodb_buffer_pool_size:      表示InnoDB类型的表和索引的最大缓存。这个值越大,查询的速度就会越快。这个值太大了就会影响操作系统的性能。
当然了Mysql是一个长期的优化过程,所以在日常的运维工作中,需要不断去总结和学习。


总结



Mysql 作业


点我查看


Mysql 源码搭建教程


mysql源码安装详解

二进制安装mysql5.7.20


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
安全 关系型数据库 MySQL
PHP与MySQL交互:从入门到实践
【9月更文挑战第20天】在数字时代的浪潮中,掌握PHP与MySQL的互动成为了开发动态网站和应用程序的关键。本文将通过简明的语言和实例,引导你理解PHP如何与MySQL数据库进行对话,开启你的编程之旅。我们将从连接数据库开始,逐步深入到执行查询、处理结果,以及应对常见的挑战。无论你是初学者还是希望提升技能的开发者,这篇文章都将为你提供实用的知识和技巧。让我们一起探索PHP与MySQL交互的世界,解锁数据的力量!
|
7月前
|
存储 监控 关系型数据库
轻松入门Mysql:MySQL性能优化与监控,解锁进销存系统的潜力(23)
轻松入门Mysql:MySQL性能优化与监控,解锁进销存系统的潜力(23)
132 0
|
7月前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
687 0
|
7月前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
179 0
|
7月前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:MySQL 备份与恢复,保护数据安全,提高工作效率(20)
轻松入门MySQL:MySQL 备份与恢复,保护数据安全,提高工作效率(20)
120 0
|
3月前
|
关系型数据库 MySQL 数据库
MySQL基本操作入门指南
MySQL基本操作入门指南
113 0
|
7月前
|
存储 关系型数据库 MySQL
MySQL基础入门:数据库操作全攻略
MySQL基础入门:数据库操作全攻略
179 0
|
3月前
|
SQL 关系型数据库 MySQL
MySQL入门到精通
MySQL入门到精通
|
5月前
|
SQL 关系型数据库 MySQL
「Python入门」python操作MySQL和SqlServer
**摘要:** 了解如何使用Python的pymysql模块与MySQL数据库交互。首先,通过`pip install pymysql`安装模块。pymysql提供与MySQL的连接功能,例如创建数据库连接、执行SQL查询。在设置好MySQL环境后,使用`pymysql.connect()`建立连接,并通过游标执行SQL(如用户登录验证)。注意防止SQL注入,使用参数化查询。增删改操作需调用`conn.commit()`来保存更改。pymssql模块类似,但导入和连接对象创建略有不同。
71 0
「Python入门」python操作MySQL和SqlServer
|
5月前
|
SQL 关系型数据库 MySQL
【MySQL从入门到精通】常用SQL语句分享
【MySQL从入门到精通】常用SQL语句分享
66 2