一、数据库
1、数据库系统 DBS
a、数据库管理系统(DataBase Management System, DBMS)
SQL(RDS): ORACLE、 MySQL、MariaDB、SQL-SERVER
关系型数据库:表结构,有库有表
NoSQL: Redis、MongoDB、Memcache
非关系型数据库:key-value 键值对
b、 数据库管理员(DBA)
c、 SQL语言(Structured Query Language 即结构化查询语言)
DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程、函数, CREATE ALTER //开发人员
DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE,DROP、更新数据 UPDATE //开发人员
DQL语句 数据库查询语言: 查询数据 SELECT
DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
d、数据库访问技术
ODBC PHP <.php>
JDBC JAVA <.jsp>
settings.py python <.py>
2、数据库的部署
版本:
MySQL:8.0
MySQL:5.7
yum安装
下载仓库:
www.mysql.com---> DOW---> ---->
--->--->
mysql 官网 mysql仓库的安装包
base epel 没有mysql 的rmp 包(mariadb)
安装:rpm -ivh 包
[root@localhost ~]# rpm -ivh mysql80-community-release-el7-9.noarch.rpm
版本修改:
非交互式:yum -y install yum-utils
//关闭80
yum-config-manager --enable mysql157-community
//开启5.7
yum -y install mysql mysql-server
交互式:
[root@xingdian ~]# yum -y install mysql mysql-server
mysql 默认初始密码
systemctl start mysqld
mysqladmin -u root -p'L75HFfVaCU.L' password 'QianFeng@123' (密码得8位)
mysql -u root -p'QianFeng@123'
数据库初始化:
1、停止数据库
systemctl stop mysqld
2、删除所有数据
rm -rf /var/lib/mysql/* (删了目录在重启前创建,修改所属组和者)
3、启动数据库
systemctl start mysqld
4、初始化(修改数据库得初始密码)
yum安装的数据库相关内容:
存放数据的目录:/var/lib/mysql
数据库服务的UUID:cat /var/lib/mysql/auto.cnf
数据库配置文件:cat/etc/my.cnf
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
数据库服务的PID
判断数据库服务mysql是否运行:ps aux 、ss 、systemctl
mysql端口号3306
关闭数据库密码强度:
vi /etc/my.cnf
编译安装
1、 www.mysql.com---> --->
[root@localhost ~]# tar xf mysql-boost-5.7.43.tar.gz
[root@localhost ~]# ls
anaconda-ks.cfg mysql-5.7.43 mysql-boost-5.7.43.tar.gz
[root@localhost ~]# cd mysql-5.7.43/
[root@localhost mysql-5.7.43]# yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make cmake
清理mariadb环境 (另一个环境)
准备新用户
groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
[root@localhost mysql-5.7.43]# cmake . \
-DWITH_BOOST=boost_1_59_0/ \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc \指定安装目录配置文件的位置,默认就是etc
-DMYSQL_DATADIR=/usr/local/mysql/data \数据目录 错误日志文件
-DINSTALL_MANDIR=/usr/share/man \ 帮助文档的目录
-DMYSQL_TCP_PORT=3306 \ 默认端口号3306
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ 用来做网络通信,启动的时候才会产生
-DDEFAULT_CHARSET=utf8 \默认字符集
-DEXTRA_CHARSETS=all \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_READLINE=1 \可以上下翻历史命令
-DWITH_SSL=system \
-DWITH_EMBEDDED_SERVER=1 \ 嵌入式服务器
-DENABLED_LOCAL_INFILE=1 \ 支持从本机导入
-DWITH_INNOBASE_STORAGE_ENGINE=1 //默认存储引擎提示:boost也可以使用如下指令自动下载
-DDOWNLOAD_BOOST=1
模板:
[root@localhost mysql-5.7.43]#vi a.sh(加东西)
[root@localhost mysql-5.7.43]#bash a.sh
[root@localhost mysql-5.7.43]# make && make install
初始化:
[root@localhost ~]# cd /usr/local/mysql 把这个删了就相当于卸载
[root@localhost mysql-5.7.43]# mkdir mysql-files
[root@localhost mysql-5.7.43]#chown -R mysql.mysql /usr/local/mysql
[root@localhost ~]#ls /var/local/mysql/bin
[root@localhost ~]# cd /usr/local/mysql
[root@localhost mysql]# ./bin/mysqld --initialize --user=mysql -- basedir=/usr/local/mysql -- datadir=/usr/local/mysql/data
初始化,只需要初始化一次
设置环境变量;可以直接使用mysql相关命令:
PATH=$PATH:/usr/local/mysql/bin
设置开机启动,并用systemctl管理mysql服务:
3、数据库引擎:
数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是存储引擎
存储引擎查看
[root@localhost ~]# mysql -u root -p'QianFeng@123'
Support列的值表示某种引擎是否能使用:YES表示可以使用、NO表示不能使用、DEFAULT表示该引擎为当前默认的存储引擎
InnoDB存储引擎
InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键;InnoDB是默认的MySQL引擎
特点:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交和回滚
MyISAM存储引擎
MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事务
特点:插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比较低,也可以使用
MEMORY存储引擎
MEMORY存储引擎将表中的数据存储到内存中,为查询和引用其他表数据提供快速访问
特点:所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表
4、mysql事务
MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!
在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务
事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行
事务用来管理 insert,update,delete 语句
满足事务条件
原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样
一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作
隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)
持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失
云数据库:
华为云对于云数据库mysql:RDS