什么是数据库
```bash
DB,DataBase
——数据库 :按照数据结构来组织、存储和管理数据的仓库
DBMS,DstaBase Management System
——数据库管理系统:用来操纵和管理数据库的大型服务软件
DBS,DataBase System
——数据库系统:既DB+DBMS,指带有数据库并整合了数据库
E-R数据模型
实体-关系 模型
——Entity-Relationship model
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6a2fb944d7504c4188684cc1c911eac1.png#pic_center)
主流数据库服务软件
```bash
Oracle Database Oracle (甲骨文)
MySQL Oracle(甲骨文)
SQL Server Microsoft(微软)
Access Microsoft(微软)
DB2 IBM
SQLite 手机迷你数据库
主要特点
——适用于中小规模、关系型数据库
——支持Linux/Unix、Windows等多种操作系统
——使用C和C++编写,可移植性强
——通过API接口支持Python/Java/Perl/PHP等语言
安装MySQL
基本需求
——采用CentOS7系统搭建MySQL服务器
——关闭防火墙
——关闭SELinux
——软件 MySQL-5.7.17-1
安装MySQL
官方下载RPM软件包
——http://dev.mysql.com/downloads/mysql/
——适用于当前系统的bundle集合包
mysql-community-client //客户端应用程序
mysql-community-common //数据库和客户端库共享文件
mysql-community-devel //客户端应用程序的库和头文件
mysql-community-embedded //嵌入式函数库
mysql-community-embedded-compat //嵌入式兼容函数库
mysql-community-embedded-devel //头文件和库文件作为MySQL的嵌入式库文件
mysql-community-libs //MySQL数据库客户端应用程序的共享库
mysql-community-libs-compat //客户端应用程序的共享兼容库
安装MySQL 续
准备工作(如果以安装过mariadb须执行该操作)
——停止mariadb服务
——删除文件 /etc/my.cnf
——删除数据
——卸载软件包
[root@localhost ~]# systemctl stop mariadb
[root@localhost ~]# rm -rf /etc/my.cnf
[root@localhost ~]# rm -rf /var/lib/mysql/*
[root@localhost ~]# rpm -e --nodeps mariadb-server
安装MySQL
采用U升级安装,可替换冲突文件
[root@localhost ~]# tar –xf mysql-5.7.17.tar -C /root/mysql
[root@localhost mysql]# yum -y install net-tools // //安装MySQL需要的依赖包
[root@localhost ~]# yum -y install perl-Data-Dumper //安装MySQL需要的依赖包
[root@localhost ~]# yum -y install perl-JSON //安装MySQL需要的依赖
[root@localhost ~]# rpm -Uvh mysql-community-*.rpm //升级安装MySQL
启动MySQL数据库服务
[root@localhost ~]# systemctl start mysqld //启动服务
[root@localhost ~]# ps -C mysqld //查看服务进程
[root@localhost ~]# systemctl status mysqld //查看服务状态
[root@localhost ~]# ss -anptul | grep mysqld //查看服务状态
[root@localhost ~]# systemctl enable mysqld //设置服务开机自启
**
MySQL服务相关参数
**
主配置文件:/etc/my.cnf
数据库目录:/var/lib/mysql
默认端口号:3306
进程名:mysqld
传输协议:TCP
进程所有者:mysql
进程所属组:mysql
MySQL初始配置
修改root口令
——默认的数据库管理账号 root 允许从 localhost 访问 ——首次登录密码在安装时随机生成 ——存储在错误日志文件里
/var/log/mysql.log
[root@localhost ~]# grep -i password /var/log/mysqld.log
用初始密码登录MySQL服务器
[root@localhost ~]# mysql -uroot –p’0Yy7GFBpud:g’
修改MySQL初始密码
密码安全策略变量:validate_password_policy
mysql> set global validate_password_policy=0; //只验证长度(LOW策略)默认为1
mysql> set global validate_password_length=6; //修改密码长度,默认是 8个字符
修改MySQL初始密码
操作方法
用 alter user 重设口令
mysql> alter user root@“localhost” identified by “123456”; //修改登录密码
mysql> exit
[root@localhost ~]# mysql -uroot -p123456 //使用新密码
重新登录
永久修改密码策略
修改/etc/my.cnf
**
[root@localhost ~]# vim /etc/my.cnf
.. ..
[mysqld]
validate_password_policy=0 //密码验证策略
validate_password_length=4 //密码长度
.. ..
[root@localhost ~]# systemctl restart mysqld
**
数据库基本管理
数据存储流程
客户端把数据存储到服务器上的步骤
——连接数据库
——建库 //类似于系统文件夹
——建表 //类似于系统文件
——插入记录 //类似于文件里的行
——段开连接
连接MySQL服务器
使用MySQL命令
—— mysql -h服务器 -u用户名 -p密码
—— exit 或 quit 退出
使用MySQL操作指令
操作类型
——MySQL指令:环境切换、看状态、退出等控制
——SQL指令:数据库定义/操纵/授权语句
基本注意事项
——操作指令不区分大小写(密码、变量值除外)
——每条SQL指令以;结束或分隔
——不支持Tab键补齐
——ctrl+c 取消命令
使用MySQL管理环境
常用的SQL操作指令
——DDL 数据定义语言(create、alter、drop)
——DML 数据库操作语言(insert、update、delete)
——DCL 数据控制语言(grant、revoke)
——DTL 数据事物语言(commit、rollback、savepoint)
MySQL基本操作
库管理命令
——show databases; //显示已有的库
——use 库名; //切换库
——select database(); //显示当前所在的库
——create database 库名; //创建新库
——show tables; //显示已有的表
——drop database 库名; //删除库
数据库命名规则
数据库命名规则
——可以使用数字/字母/下划线,但不能纯数字
——区分大小写,具有唯一性,不能重复
——不可使用指令关键字、特殊符号
创建test库
mysql> create database test;
表管理命令
新建指定名称的表
create table 库名.表名(
字段名1 字段类型(宽度) 约束条件,
字段名2 字段类型(宽度) 约束条件,
.. .. ..
字段名N 字段类型(宽度) 约束条件
);
创建表
创建一个存储用户信息的表,表字段为姓名、性别、爱好
mysql> create table user(
-> name char(10),
-> gender char(10),
-> hobby char(50)
-> );
表管理命令
desc 表名; //查看表结构
select * from 表名; //查看表记录
insert into 表名 values(值列表); //插入表记录
update 表名 set 字段=值; //修改表记录
delete from 表名; //删除表记录
drop table 表名; //删除表
MySQL数据类型
数值类型 续(1)
unsigned 指定使用无符号存储范围
mysql> create table tab2(
-> age tinyint unsigned
-> ); //unsigned 指定使用无符号存储范围
解释:使用无符号存储范围时,不可以存负数
查看表结构
mysql> desc tab2;
枚举类型
ENUM:从给定值的集合中选择单个值
——定义格式:enum(值1,值2,值N)
SET:从给定值集合中选择一个或多个值
——定义格式:set(值1,值2,值N)