1.1数据库的概念
1.1.1数据集存储的方法
大脑记住、写纸上、写在计算机的内存、卸载磁盘文件
1.1.2企业的数据库面临的问题
存储大量的数据、大量数据的检索和访问、保持数据的一致完整
数据的共享和安全、通过分析产生更加有用的信息。
1.1.3数据库的基础
(1)什么是数据库
数据库一个长期储存在计算机内的,有组织,共享的,统一管理的数据集合,它是一个按数据结构来存储和管理数据的计算机软件系统。
是用户存放数据、访问数据、操作数据的仓库,用户的各种数据被有组织的存放在数据库中,可以随时被有权限的用户查村,统计,添加,删除,修改。
(2)数据库的特点
实现数据共享,减少数据的冗余,采用特定的数据类型;具有较高的数据独立性;具有统一的数据控制功能
(3)表
数据库的表是一系列二维数组的集合,用来存储数据和操作数据的逻辑结构,被称之为记录,是组织数据的单位;列被称为字段,每一列表示记录的属性。
(4)数据类型
数据类型决定这数据在计算机中的存储格式,代表着不同的信息类型,常用的数据类型有,整数数据类型,浮点型数据类型,精准小数类型,二进制数据类型,日期时间数据类型,字符串数据类型,表中的耨个字段就是某个指定的数据类型
(6)主键
使用唯一标识表中的每一条记录,可以定义表中的一列或者多列为主列,主键列上不能有相同的值或者为空。
1.1.4数据库的构成
(1)数据库系统
数据库:存储数据的地方
数据库管理系统:用于管理数据的软件,授权,提供数据的操作机制,维护数据的安全性,完整性和可靠性
数据库应用程序:为了提高数据系统的处理能力所使用的管理数据 库的软件补充
1.1.5数据库的种类
目前最常用的数据库模型就两种,关系型数据库和非关系型数据库。
1、关系型数据库
网络数据库和层次数据库很好的解决了数据的集中和共享问题,但是在数据独立性和抽象级别上仍有用户对这两种数据库进行存取时,依然需要明确的数据的存储结构,支出存储路径。而关系型数据库就解决这些问题。
关系型数据库就是把复杂的数据结构归结为简单的二元关系(既二维表格形式)
(1)关系模型
关系数据结构(存储)关系操作结构(操作)关系完整性约束(约束)
(2)关系型数据库存储在磁盘中(永久存储)
(3)关系型数据库系统模型有四层结构
数据库管理系统:管理系统运行
数据库:数据存储的管理者
数据字段:依赖于数据表,实际数据存储者
(4)关系型数据库产品
大型:oracle DB2
中型:mysql 、SQL server
小型:Sybase 、access
2、非关系型数据库
所有不是关系型数据库的统称
数据库存储模型不是二维表,而是键对值
存储的位置通常是内存
不能永久性存储
常见的非关系型数据库产品
MONGODB
Redis
Memcached
NOsql 通常是与关系型数据库配合使用的,他们彼此是一种互补关系
NOsql运行在内存,在解决效率问题
I/O问题 效率问题
mysql运行在磁盘,解决稳定问题
安全问题(永久) 稳定
1、NOSQL不是否定关系数据库,而是作为关系型数据库的一个重要的补充
2、NOSQL为了我高性能,高并发而生,忽略影响高性能,高并发的功能
3、NOSQL典型产品memcached(纯内存)、redis(持久化缓存),mongodb(文档的数据库)
2、MySQL的安装部署
2.1 安装包获取
MySQL :: Download MySQL Community Serverhttps://dev.mysql.com/downloads/mysql/
2.2RPM包安装
相关软件包
方法一:官方YUM源方式安装
官方yum源安装的速度很慢
MySQL :: Download MySQL Yum Repositoryhttps://dev.mysql.com/downloads/repo/yum/
下载真的很慢,不建议尝试
方法二:下载rpm包安装:
1、卸载mariadb
rpm -e mariadb-libs postfile
2、安装
创建一个MySQL的组和用户
创建一个MySQL的目录,方便一会儿解压的时候放在这个目录中
mysql-8.0.16-2.el7.x86_64.rpm-bundle.tar这个包在第一个网址里面就能下载,使用外面下载包在拉到终端解压就是为了方便快捷。
进入刚才创建的mysql的目录中,然后使用yum localinstall * (localinstall和*中间是有空格的)
这个命令是一个安装本地的rpm包的命令。
3、启动
MySQL数据库启动的时候是mysqld
systemctl list-unit-files|grep mysqld 这个是查看数据库的启动情况
4、MySQL安装完成以后,在/var/log/mysql.log文件给root生成一个默认密码,通过下面的命令可以找到root的默认密码,然后登陆MySQL修改原始密码改成自己的密码
现在就登陆了数据库,需要设置自己的密码才能操作数据库
ALTER USER 'root'@'localhost' IDENTIF'Nebula@123';
查看密码规范
MySQL命令行基本操作
1、查看数据库
当我们安装MySQL8.0并且初始化数据库以后,默认会创建一下的数据库系统
MySQL:存储数据库mysql服务器正常运行所需要的各种信息
information_schema :提高访问数据库元数据的各种视图,包括数据库、表,字段类型以后访问权限。
perforance_schema: 为mysql服务器的运行时状态提供一个底层的监控功能
sys:包含了一系列方便DNA和开发人员利用 perforance_schema性能数据库进行性能调优和诊断的视图。
2、显示某个数据库中的表
USE DATABASE NAME; 进入数据库
SHOW TABLES; 查看数据库的表。
3、创建数据库
create database 库名;
例如: create database test;
4、建表
use 库名;
create table 表名;
例如:在刚创建的aaa库中建立表name,表中有id(序号,自动增长),name(姓名),sex(性别),birth(出身年月)四个字段
use test;
mysql> create table name (id int(3) auto_increment not null primary key, xm char(8),xb char(2),csny date);
可以用describe命令察看刚建立的表结构。
describe name;
6、增加记录
例如:增加几条相关记录
insert into name values (NULL, 张三,'男','1988-08-02');
insert into name values (NULL, 张三,'男','1988-08-02');
7、修改记录
例如:将张三的出生年月日改成1997-02-08
update name set csny=‘1997-02-08’
8、删除记录
mysql> delete from name where xm='张三';
9、修改表
alter table t1 modify name char(3);
10、删除库和表
drop database 库名;
drop table 表名;
11、备份
例如:将上例创建的库备份到文件back_test
cd /mysql
mysqldump -uroot -p -opt test > back_test
12、恢复
mysql -u root -p test < back_test
总结:
库的操作:
增: CREATE DATABASE 库名;
查:SHOW DATABASES; 查看所有的库 show CREATE DATABASE 库名 查看单独的某个库
改: alter database test charset latin1; 修改库的字符集
删: drop database test ;
切换库: use 库名
表的操作:
show create table t1; 查看单表的创建信息 desc t1; 以列表形式查看单表信息
修改表名
alter table emplpyee6 rename employee6;
drop table t1;
delete from t1; 如果有自增id,新增的数据,仍然是以删除前的最后一行作为起始。
truncate table t1; 数据量大,删除速度比上一条快,且直接从零开始
数据的操作:
insert into t1 values (1," 张三 "), (2," 李四 ");
select * from t1; 查看 t1 表的所有字段数据
select id, name from t1; 查看t1表的id, name字段的信息
update t1 set name=" 王五 " where id=2;
delete from t1 where id=1;

mysql -u root -p < db.sql
mysql -uroot -ppassword #登陆数据库
进入库中,然后在SOURCE /HOME/MYSQL/TEST.SQL

数据库迁移/备份
insert into 新表 select * from 旧表
insert into 新表 (字段1, 字段2......) select 字段1, 字段2...... from 旧表
MySQL事务
MySQL事务主要是hi处理操作量答大、复杂度高度的数据,比如说,人员在离职时要删除人员的基本资料,也要删除该人员相关的信息,这种事情就会成一种事务
一般来说必须满足4个条件:原子性、一致性、隔离性、持久性
原子性:一个操作要么完成要么全部不完成,
一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏,这表示写入的资料必须完全符合有的预设规则,者包含资料的精准度,串联性以后及数据库可以自主完成预设的工作
隔离性:数据库允许多个事务同时对其数据进行读写和修改的能力,隔离性就是防止多个事务同时并发执行由于交叉而导致数据的不一致,事务隔离分为不同的级别:读未提交、读提交、可重复读和串行化。
持久化:事务处理结束后,对数据的修改时永久的,即便系统故障也不会丢失。