MYSQL入门详解

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等

  • 其中MyISAMInnoDB使用最为广泛,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

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宝山的博客

谢谢你的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值