学习预览:
(一)mysql 运维基础篇(Linux云计算从入门到精通)
(三)mysql 触发器、存储过程和函数(数据库运维基础补充)
(五)mysql数据备份—物理备份(完备+lvm快照+xtrabackup)+逻辑备份(mysqldump+导入导出)
(六)mysql复制技术—M-S主从配置(传统+GTID)+M-M-S-S主从配置(GTID)
(七)mysql中间件mycat配置和部署(基于M-M-S-S)
(八) 数据库集群技术—Galera Cluster安装与配置
(九)数据库集群技术Galera+mycat(数据库运维学习终章)
声明:
如果我们是从事Linux运维方面的话,学习mysql就必不可少呐,但是我们主要不是做数据库开发,而主要负责mysql管理上。尤其在Linux云计算中,主备复制、读写分离、HA架构、分布式数据库、压力测试、性能优化、自动化运维就显得格外重要呐。这篇博客依旧是我的学习笔记,主要介绍数据的基本知识,尤其是SQL语句。这个不仅仅是开发人员关注的,运维人员也要做一定的了解。所以,Let's get started .😃
CONTENT
五、数据操纵语言DML(insert,update,delete)
一、 了解mysql及安装mysql8
1.1 认识mysql
先了解下关于数据库的基本概念哦。
1.1.1 数据的存储方式
- 1.人工管理阶段(显然效率很低)
- 2.文件系统阶段(能存取海量数据,但是读取数据很慢)
- 3.数据库系统管理阶段(不仅能存取海量数据,还建立了索引,这样读取数据非常快)
1.1.2 数据库技术构成
(1)数据库系统DBS、数据库管理系统( DataBase Management System, DBMS ) 、
- SQL(RDS,关系型数据系统):ORACLE、 Oracle MySQL、MariaDB、 Percona server、DB2
- NoSQL(非关系型): Redis、 MongoDB、 Memcache
(2) SQL语言(结构化查询语言)
- A. DDL语句数据库定义语言:数据库、表、视图、索引、存储过程、函数,CREATE DROP ALTER //开发人员
- B. DML语句数据库操纵语言 :插入数据INSERT.删除数据DELETE、更新数据UPDATE //开发人员关注的
- C. DQL语句数据库查询语言 :查询数据SELECT
- D. DCL语句数据库控制语言 :例如控制用户的访问权限GRANT、REVOKE
(3)数据访问技术(让这些php或Java这样开发语言能够访问数据库,例如我们在部署LAMP时,php-mysql就类似于这种)
- A. ODBC PHP <.php>
- B. JDBC JAVA <.jsp>
1.2 安装mysql8最新版
安装方式基本有三种:“二进制rpm-yum repository”、“预编译-Generic”、和源码包安装-source code。 各自包的形式的如下图,我采用 yum安装。各种安装包类型如图所示,我们选择的是第一种:
1.2.1 到官网上找到yum仓库,点击适合我们系统的linux7 版本
1.2.2 右键点击“No thanks,just start my download”,复制链接地址哦!
1.2.3 下面就开始安装咯,具体步骤看下面咯!
#方便做实验,我就偷个懒,关掉selinux和防火墙啦
[root@Centos7-host1 ~]# sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
[root@Centos7-host1 ~]# setenforce 0
setenforce: SELinux is disabled
[root@Centos7-host1 ~]# systemctl stop firewalld
#开始wget 我们刚刚复制的链接,然后直接用rpm安装 ,用md5sum检查哈希值有没有问题(与官网上核对就好了)防止下载有问题呐。yum repolist检查仓库里有没有mysql哦,有的话就开始漫长的下载过程(400M呢),大家也可以找其他的yum源安装,网速快就OK。
[root@Centos7-host1 ~]# wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
[root@Centos7-host1 ~]# rpm -ivh mysql80-community-release-el7-3.noarch.rpm
[root@Centos7-host1 ~]# md5sum mysql80-community-release-el7-3.noarch.rpm
893b55d5d885df5c4d4cf7c4f2f6c153 mysql80-community-release-el7-3.noarch.rpm
[root@Centos7-host1 ~]# yum repolist
[root@Centos7-host1 ~]# yum install mysql-community-server.x86_64 -y
#启动mysql并设置开机自启动,设置密码,通过以下方式获取密码登录
[root@Centos7-host1 ~]# systemctl restart mysqld
[root@Centos7-host1 ~]# systemctl enable mysqld
[root@Centos7-host1 ~]# grep 'password' /var/log/mysqld.log
2020-04-05T22:10:55.715318Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: qdqGdjGeu7;T
[root@Centos7-host1 ~]# mysql -uroot -p'qdqGdjGeu7;T'
#登陆上去初始化密码,密码要符合要求不能太简单,不然通不过
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123';
1.3 忘记密码怎么办?
说明下我这是mysql8版本的修改方式,不同版本修改方式不一样呐,不过没有关系,上网查一下就知道啦。
#编辑/etc/my.cnf,添加skip-grant-tables
[root@Centos7-host1 ~]# vim /etc/my.cnf
[mysqld]
skip-grant-tables
#然后先重启mysqld,再用mysql命令登入,跳过密码呐
[root@Centos7-host1 ~]# systemctl restart mysqld
[root@Centos7-host1 ~]# mysql
#修改root密码为空,刷新以下并重设密码就好了
mysql> update mysql.user set authentication_string='' where User='root';
mysql> flush privileges;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123';
#最后记得回到/etc/my.cnf删掉或注释掉skip-grant-tables
#最后退出,编辑/etc/my.cnf,把skip-grant-tables删掉或注释掉重新登录,如下图就修改好了:
二、数据库(database)的基本学习
2.1 数据库基本操作
(1)show databases;(先查看本地的数据库,可以了解其概念)
系统数据库:
- information_ schema:虚拟库 ,主要存储了系统中的一些数据库对象的信息,例如用户表信息、列信息、权限信息、字符信息等
- performance_ schema:主要存储数据库服务器的性能参数
- mysql :授权库,主要存储系统用户的权限信息
- sys:主要存储数据库服务器的性能参数
业务数据库:就是我们后面所创建的数据库...
(2)创建业务数据库DDL
- #创建数据库格式:CREATE DATABASE 数据库名;
- #查看数据库:SHOW DATABASES;
- #选择数据库:SELECT database();USE 数据库名
- #删除数据库:DROP DATABASE 数据库名;
(3)刚开始不知道指令或者忘记指令可借助help指令哦。
mysql> help
List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
? (\?) Synonym for `help'.
clear (\c) Clear the current input statement.
connect (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
edit (\e) Edit command with $EDITOR.
ego (\G) Send command to mysql server, display result vertically.
exit (\q) Exit mysql. Same as quit.
…………………………
2.2 MySQL数据类型
在MySQL数据库管理系统中,可以通过存储引擎来决定表的类型。同时, MySQL数据库管理系统也提供了数据类型决定表存储数据的类型。MySQL数据库管理系统提供的数据类型(颜色标明的比较常见):
数值类型:
整数类型:TINYINT SMALLINT MEDIUMINT INT BIGINT
浮点数类型:FLOAT DOUBLE
定点数类型:DEC
位类型:BIT
字符串类型:
CHAR系列:CHAR VARCHAR
TEXT系列:TINYTEXT TEXT MEDIUMTEXT LONGTEXT
BLOB系列:TINYBLOB BLOB MEDIUMBLOB LONGBLOB
BINARY系列:BINARY VARBINARY
枚举类型: ENUM
集合类型: SET
时间和日期类型: DATE TIME DATETIME TIMESTAMP YEAR
2.2.1 整型int学习
大家所看到的别人所创建的int(10),指的是整型的宽度,并不是数值位的限制。所以整型没有必要指定宽度哦,默认就好了。
--有符号,默认是有符号的,
create database learning; --创建数据库
use learning; --使用数据库
create table t1(tinyint_t1 tinyint, int_t1 int); --在数据库中创建字段
desc t1; --查看表的结构
+------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+-------+
| tinyint_t1 | tinyint | YES | | NULL | |
| int_t1 | int | YES | | NULL | |
+------------+---------+------+-----+---------+-------+
insert into t1 values(111,111); --向表中插入数据
select * from t1; --查看t1中数据
+------------+--------+
| tinyint_t1 | int_t1 |
+------------+--------+
| 111 | 111 |
+------------+--------+
1 row in set (0.00 sec)
--创建无符号的,unsigned,只能存正值。自己插入数据,查看试试。因为没有符号,所以数值范围又大了
create table t2(tinyint_t2 tinyint unsigned, int_t2 int unsigned);
2.2.2 浮点数学习
作用:用于存储用户的身高、体重、薪水等
浮点数(float)和定点数(decimal)都可以用类型名称后加(M,D)的方式来表示,(M,D)表示共显示M位数字(整数位+小数位) ,其中D位于小数点后面,M和D又称为精度和标度。