1. 简介
1.1 定义
MySQL是一个关系型数据库管理系统,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件,它是由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品,MySQL 是最流行的关系型数据库管理系统中的一个。
1.2 地位
最流行的关系型数据库管理系统之一
1.3 特点
- 开源免费
- 支持大型数据库,处理拥有上千万条记录的大型数据库。
- 支持SQL通用语言
- 支持多种编程语言的接口和多种操作系统
- 数据存储在磁盘
- 读取速度慢,但能永久保存
2. 安装
- MySQL数据库服务端软件的安装
- MySQL数据库客户端软件的安装
2.1 MySQL数据库服务端软件的安装
在Ubuntu中打开终端,输入下面的命令:
sudo apt-get install mysql-server
说明:
显示MySQL服务端安装包信息效果图:
apt-cache show mysql-server
查看MySQL服务效果图:
ps -aux | grep mysql
ps说明
ps
查看当前系统中的进程-a
表示所有用户-u
表示显示用户名-x
表示显示所有的执行程序
查看MySQL服务状态:
sudo service mysql status
停止MySQL服务:
sudo service mysql stop
启动MySQL服务:
sudo service mysql start
重启MySQL服务:
sudo service mysql restart
MySQL配置文件的介绍:
配置文件路径为: /etc/mysql/mysql.conf.d/mysqld.cnf
查看MySQL配置文件效果图:
vim mysqld.cnf
主要配置信息说明:
port表示端口号,默认为3306
bind-address表示服务器绑定的ip,默认为127.0.0.1
datadir表示数据库保存路径,默认为/var/lib/mysql
log_error表示错误日志,默认为/var/log/mysql/error.log
2.2 MySQL数据库客户端软件的安装
客户端是程序员或者dba使用的软件,通过socket方式与服务端程序通信。
常用的MySQL数据库客户端软件有
- 图形化界面客户端Navicat
- 命令行客户端mysql
1. 图形化界面客户端Navicat的使用
- 可以到Navicat官网下载:https://www.navicat.com.cn/download/navicat-for-mysql
- 将压缩文件拷贝到Ubuntu虚拟机中,放到桌面上,解压
Navicat的使用说明:
tar zxvf navicat112_mysql_cs_x64.tar.gz
./start_navicat
启动效果图:
说明:
点击两次“取消”按钮, 不需要进行安装。
启动后效果图
Navicat试用效果图
试用过期的解决办法:
当过期后,删除用户主目录下的.navicat64目录,继续再使用14天。
cd ~
rm -r .navicat64
2. 命令行客户端mysql的安装
在Ubuntu中打开终端,输入下面的命令:
sudo apt-get install mysql-client
显示MySQL客户端安装包信息效果图:
apt-cache show mysql-client
mysql命令的使用帮助:
mysql --help
MySQL客户端的使用:
MySQL客户端连接MySQL服务端命令
mysql -uroot -p
连接效果图:
说明:
-u
: 表示MySQL服务端的用户名-p
: 表示MySQL服务端的密码quit
或者exit
或者ctr + d
表示退出
3. 使用
3.1 分开使用
1. 数据库客户端软件
- 图形化界面客户端Navicat
- 解压:
tar -zxvf navicat112_mysql_cs_x64.tar.gz
- 启动:
./start_navicat
- 命令行客户端MySQL
2. 数据库服务器端软件
3.2 合并使用
数据库编程
1. 定义
使用程序代码连接数据库,对数据进行操作
2. 作用
方便快捷,提高编程效率
3. 工具
pymysql
4. 流程
-
创建连接对象:
conn=connect(host,port,user,passwd,database,charset)
-
获取游标对象
作用:执行SQL语句,完成对数据库的操作
使用:
- 创建游标对象:
cur = conn.cursor()
- 构建参数表:
params=[]
- 指定SQL语句,返回受影响的行数:
row_count=execute(operation[parameters],params)
防止SQL注入
定义:用户提交的恶意输入和sql语句使用字符串拼接后,改变了原来的sql语义,泄露了数据
增删改:
conn.rollback();
conn.commit();
查询:
获取查询结果集汇总的一条数据(行):cur.fetchone();
获取查询结构集中的所有数据(行):cur.fetchall()
- 关闭游标:
cur.close();
- 关闭连接:
conn.close();
4. 命令
5. 操作
5.1 数据库
5.2 数据表
5.3 数据项
6. 库/表数据的存储引擎
6.1 定义
库/表数据的存储机制,一种算法
6.2 作用
提供不同的存储机制,创建表
6.3 分类
1. InnoDB
- 支持事务和外键
1.1 定义
一系列SQL语句打包在一起,要么完全执行,要么完全不执行,是不可分割的最小单位
1.2 作用
保证操作(一系列SQL语句)打包执行
1.3 应用
银行转账
1.4 特性
- 原子性:一系列SQL语句打包执行
- 一致性:事务执行过程中状态要么完全执行,要么完全不执行
- 隔离性:事务修改后在提交之前对其他事务是不可见的,且其他事务能不能修改,有级别
当事务提交后,其他事务操作也会执行(缓存)
- 持久性:事务提交之后不可修改,永久保存在数据库
1.5 操作
- 开启事务:
begin:事务会在MySQL服务端产生一个缓存文件
start transaction
- 提交事务:
autocommit:默认是自动提交事务
set autocommit = 0:数会提交到MySQL服务端的缓存文件中
commit:缓存文件中的数据提交到物理表中,实现数据修改
- 回滚事务:
rollback:放弃缓存文件中的数据,回到开始事务之前的状态
2. MySAM
- 不支持事务和外键,访问速度快,insert,selsct操作多的可以使用
6.4 操作
- 查看
show create table goods
show engines
- 修改
alter table 表名 engines=""