(一)mysql 运维基础篇(Linux云计算从入门到精通)

学习预览:

(一)mysql 运维基础篇(Linux云计算从入门到精通)

(二)mysql 索引和视图(数据库运维基础补充)

(三)mysql 触发器、存储过程和函数(数据库运维基础补充)

(四)MySQL安全机制和日志管理(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

一、 了解mysql及安装mysql8

1.1 认识mysql

1.2 安装mysql8最新版

1.3 忘记密码怎么办?

二、数据库(database)的基本学习

2.1 数据库基本操作

2.2 MySQL数据类型

2.2.1 整型int学习

2.2.2 浮点数学习

2.2.3 时间类型学习

2.2.4 字符串类型学习

2.2.5 枚举类型和集合类型

三、表完整性约束

3.1 设置单列主键(primary key)

3.2 设置复合主键

3.3 设置foreign外键

四、修改表 ALTER TABLE

五、数据操纵语言DML(insert,update,delete)

5.1 插入数据INSERT

5.2 更新数据

5.3 删除数据DELETE

六、mysql查询语句

6.1单表查询

6.1.1 简单查询

6.1.2 条件查询

6.1.3 查询排序

6.1.4 限制查询的记录数(limit)

6.1.5 使用集合函数查询

6.1.6 分组查询

6.1.7 使用正则表达式查询

6.2 多表查询

6.2.1 交叉连接(笛卡尔积,不使用任何匹配条件)

6.2.2 内连接(只连接匹配的行)

6.2.3 外连接

6.2.4 子查询

结束语:


一、 了解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又称为精度和标度。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

硬核的无脸man~

你的鼓励是我创作的最大功力!

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

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

打赏作者

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

抵扣说明:

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

余额充值