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等
-
其中
MyISAM
、InnoDB
使用最为广泛,mysql5.5以后默认使用的引擎是Innodb。
-
数据库事务:
是指逻辑上对数据的一组操作,这组操作要一次全部成功,如果失败,则全部失败,因为事务是不可分割。
-
事务管理语句
- 查询、定义、操纵、控制语句,共9个命令
查询语句:select
定义:create、dorp、alter
操纵:insert、update、delete
控制:grant(授权)、revoke(移出授权)
- 查询、定义、操纵、控制语句,共9个命令
-
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
- 2
- 3
- 4
- 5
-
源码安装方式
方式1:使用mysql 特有的cmake 编译 cmake make && make install 方式2:使用./configure 编译 ./configure make -j4 && make -j4 install
- 1
- 2
- 3
- 4
- 5
- 6
- 7
Mysql 必备命令操作
-
查看所有数据库
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | S | | mysql | | performance_schema | | test | +--------------------+
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
-
创建名为 S 的数据库
mysql> create database S default charset utf8 collate utf8_general_ci; utf8 编码 Query OK, 1 row affected (0.00 sec) mysql>
- 1
- 2
- 3
- 4
-
进入S数据库
mysql> use S; Database changed
- 1
- 2
- 3
-
查看数据库里有多少张表
mysql> show tables; Empty set (0.00 sec)
- 1
- 2
- 3
-
创建名为 t1 的表,并创建两个个字段 id、name,varchar表示设置数据长度,一个汉字=2个字符=2Bytes
mysql> create table t1(id int(20),name varchar(10)); Query OK, 0 rows affected (0.01 sec)
- 1
- 2
-
向表中插入数据
mysql> insert into t1 values("1","liuaoni"); Query OK, 1 row affected (0.00 sec)
- 1
- 2
-
查看t1表的数据内容
mysql> select *from t1; +------+---------+ | id | name | +------+---------+ | 1 | liuaoni | +------+---------+ 1 row in set (0.00 sec) mysql>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
-
id、age 多个条件查询
mysql> select *from t1 where id=1 and name="liuaoni"; +------+---------+ | id | name | +------+---------+ | 1 | liuaoni | +------+---------+ 1 row in set (0.00 sec) mysql>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
-
查看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)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
-
修改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]>
- 1
- 2
- 3
- 4
- 5
- 6
-
修改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]>
- 1
- 2
- 3
- 4
- 5
-
刷新权限
mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
- 1
- 2
-
清空表内容
mysql> delete from t1; Query OK, 1 row affected (0.00 sec)
- 1
- 2
-
删除表
mysql> drop table t1; Query OK, 0 rows affected (0.00 sec)
- 1
- 2
-
删除数据库 hbs
mysql> drop database hbs; Query OK, 0 rows affected (0.00 sec)
- 1
- 2
-
查看数据库字符集
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)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
-
查看mysql 存储引擎
mysqk> show engines;
- 1
-
查看mysql 默认存储引擎
mysql> show variables like '%stroage_engine%'; Empty set (0.00 sec)
- 1
- 2
-
修改mysql t1 表存储引擎
mysql> alter table t1 engine=innodb;
- 1
-
相关授权操作
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)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
-
创建用户
用户登录数据库 [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)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
Mysql 字符集设置
-
计算机中储存的信息都是用二进制数方式来表示的,读者每天看到屏幕显示的英文、汉字等字符是二进制数转换之后的结果。通俗的说,将汉字按照某种字符集编码存储在计算机中,称为"编码"。将存储在计算机中的二进制数解析显示出来,称为"解码",在解码过程中,如果使用了错误的解码规则,会导致显示乱码。
- 编辑vim /etc/my.cnf配置文件,在相应段中加入相应的参数字符集修改完毕,重启MySQL服务即可。
[client]字段里加入:default-character-set=utf8 [mysqld]字段里加入: character-set-server=utf8 [mysql]字段里加入 : default-character-set=utf8
- 1
- 2
- 3
- MYSQL 命令行里运行以下命令:
show variables like 'char%' SET character_set_client = utf8; SET character_set_results = utf8; SET character_set_connection = utf8;
- 1
- 2
- 3
- 4
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是一个长期的优化过程,所以在日常的运维工作中,需要不断去总结和学习。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
总结
Mysql 作业
Mysql 源码搭建教程
文章来源: rivers.blog.csdn.net,作者:宝山的博客,版权归原作者所有,如需转载,请联系作者。
原文链接:rivers.blog.csdn.net/article/details/115556427
- 点赞
- 收藏
- 关注作者
评论(0)