数据处理
-
数据处理概述
数据处理的基本目的是从大量的、可能是杂乱无章的、难以理解的数据中抽取并推导出对于某些特定的人们来说是有价值、有意义的数据。当下数据处理贯穿于社会生产和社会生活的各个领域。数据处理技术的发展及其应用的广度和深度,极大地影响了人类社会发展的进程。数据处理也是大数据,数据分析等后续科学的基本环节。
-
基本概念
- 数据 : 能够输入到计算机中并被识别处理的信息集合。
- 大数据:是指无法在一定时间范围内用一定工具进行捕捉、管理和处理的数据集合,是海量、高增长率和多样化的信息资产。
-
数据存储阶段
-
人工管理阶段:人为管理,没有固定的格式和存储方法,容易混乱。
-
文件管理阶段 :数据可以长期保存,存储数据量大,使用简单。
-
数据库管理阶段:高效,可以存储更大量数据,便于管理,更加专业。
-
1. 数据库
1. 数据库的英文单词: DataBase 简称 : DB
2. 什么数据库?
* 用于存储和管理数据的仓库。
3. 数据库的特点:
1. 持久化存储数据的。其实数据库就是一个文件系统
2. 方便存储和管理数据
3. 使用了统一的方式操作数据库 -- SQL
1.1概述
1.1.1 数据存储
-
人工管理阶段
缺点 : 数据存储量有限,共享处理麻烦,操作容易混乱
-
文件管理阶段 (.txt .doc .xls)
优点 : 数据可以长期保存,可以存储大量的数据,使用简单。
缺点 : 数据一致性差,数据查找修改不方便,数据冗余度可能比较大。
-
数据库管理阶段
优点 : 数据组织结构化降低了冗余度,提高了增删改查的效率,容易扩展,方便程序调用处理
缺点 : 需要使用sql 或者其他特定的语句,相对比较专业
1.1.2 数据库应用领域
数据库的应用领域几乎涉及到了需要数据管理的方方面面,融机构、游戏网站、购物网站、论坛网站 … …都需要数据库进行数据存储管理。
1.1.3 基本概念
-
数据库 : 按照数据一定结构,存储管理数据的仓库。数据库是在数据库管理系统管理和控制下,在一定介质上的数据集合。
-
数据库管理系统 :管理数据库的软件,用于建立和维护数据库。
-
数据库系统 : 由数据库和数据库管理系统,开发工具等组成的集合 。
1.1.4 数据库分类和常见数据库
- 关系型数据库和非关系型数据库
关系型: 采用关系模型(二维表)来组织数据结构的数据库
非关系型: 不采用关系模型组织数据结构的数据库
- 开源和非开源
开源:MySQL、SQLite、MongoDB
> 非开源:Oracle、DB2、SQL_Server
![在这里插入图片描述](https://img-blog.csdnimg.cn/8f158abe55014ab5b62ddf1074c282bf.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbTBfNTMwNzc1Mzc=,size_10,color_FFFFFF,t_70,g_se,x_16)
1.2 MySQL
1996年,MySQL 1.0发布,作者Monty Widenius, 为一个叫TcX的公司打工,当时只是内部发布。到了96年10月,MySQL 3.11.1发布了,一个月后,Linux版本出现了。真正的MySQL关系型数据库于1998年1月发行第一个版本。MySQL是个开源数据库,后来瑞典有了专门的MySQL开发公司,将该数据库发展壮大,在之后被Sun收购,Sun又被Oracle收购。
1.2.1 MySQL特点
- 是开源数据库,使用C和C++编写
- 能够工作在众多不同的平台上
- 提供了用于C、C++、Python、Java、Perl、PHP、Ruby众多语言的API
- 存储结构优良,运行速度快
- 功能全面丰富
1.2.2 MySQL安装
- Ubuntu安装MySQL服务
- 终端执行: sudo apt install mysql-server
- 配置文件:/etc/mysql
- 数据库存储目录 :/var/lib/mysql
- Windows安装MySQL
- 下载MySQL安装包(windows) https://dev.mysql.com/downloads/windows/installer/8.0.html
- 直接运行安装文件安装
-
安装
- 参见《MySQL基础.pdf》
-
卸载
- 去mysql的安装目录找到my.ini文件
- 复制 datadir=“C:/ProgramData/MySQL/MySQL Server 5.5/Data/”
- 卸载MySQL
- 删除C:/ProgramData目录下的MySQL文件夹。
- 去mysql的安装目录找到my.ini文件
-
配置
-
MySQL服务启动
- 手动。
- cmd–> services.msc 打开服务的窗口
- 使用管理员打开cmd
- net start mysql : 启动mysql的服务
- net stop mysql:关闭mysql服务
-
MySQL登录
- mysql -uroot -p密码
- mysql -hip -uroot -p连接目标的密码
- mysql --host=ip --user=root --password=连接目标的密码
-
MySQL退出
- exit
- quit
-
MySQL目录结构
- MySQL安装目录:basedir=“D:/develop/MySQL/”
- 配置文件 my.ini
- MySQL数据目录:datadir=“C:/ProgramData/MySQL/MySQL Server 5.5/Data/”
- 几个概念
- 数据库:文件夹
- 表:文件
- 数据:数据
- 几个概念
- MySQL安装目录:basedir=“D:/develop/MySQL/”
-
1.2.3 启动和连接MySQL服务
-
服务端启动
- 查看MySQL状态 : sudo service mysql status
- 启动/停止/重启服务:sudo service mysql start/stop/restart
-
连接数据库
mysql -h 主机地址 -u 用户名 -p
注意:
-
回车后深入数据库密码 (我们设置的是123456)
-
如果链接自己主机数据库可省略 -h 选项
-
-
关闭连接
ctrl-D exit
1.2.4 MySQL数据库结构
数据元素 --> 记录 -->数据表 --> 数据库
1.2.5 基本概念解析
- 数据表(table) : 存放数据的表格
- 字段(column): 每个列,用来表示该列数据的含义
- 记录(row): 每个行,表示一组完整的数据
2 SQL语言
2.1 什么是SQL
- 结构化查询语言(Structured Query Language),一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
- 其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。
2.2 SQL语言特点
- SQL语言基本上独立于数据库本身
- 各种不同的数据库对SQL语言的支持与标准存在着细微的不同
- 每条命令以 ; 结尾
- SQL命令(除了数据库名和表名)关键字和字符串可以不区分字母大小写
2.2.1 SQL通用语法
1. SQL 语句可以单行或多行书写,以分号结尾。
2. 可使用空格和缩进来增强语句的可读性。
3. MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。
4. 3 种注释
* 单行注释: -- 注释内容(注意空格) 或 # 注释内容(mysql 特有)
* 多行注释: /* 注释 */
2.2.2 SQL分类
1) DDL(Data Definition Language)数据定义语言
用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等
2) DML(Data Manipulation Language)数据操作语言
用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等
3) DQL(Data Query Language)数据查询语言
用来查询数据库中表的记录(数据)。关键字:select, where 等
4) DCL(Data Control Language)数据控制语言(了解)
用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等
2.3 数据库管理(DDL)
2.3.1 查看已有库/当前所在库
- 查看已有库
show databases;
- 查看当前所在库
select database();
2.3.2 创建库
create database 库名 [CHARACTER SET utf8] [COLLATE collation_name] ;
CHARACTER SET:指定数据库采用的字符集
COLLATE:指定数据库字符集的比较方式
(查看mysql存储位置 :show global variables like “%datadir%”;)
e.g. 创建stu数据库,编码为utf8
create database stu character set utf8;
create database stu charset=utf8;
注意:库名的命名
- 数字、字母、下划线,但不能使用纯数字
- 库名区分字母大小写
- 不要使用特殊字符和mysql关键字
2.3.3 查看数据库的创建方式
show create database db_name; 查看数据库的创建方式
2.3.4 切换库
use 库名;
e.g. 使用stu数据库
use stu;
2.3.5 删除库
drop database 库名;
e.g. 删除test数据库
drop database test;
2.4 数据表管理(DDL)
2.4.0 基本思考过程
- 确定存储内容
- 明确字段构成
- 确定字段数据类型
2.4.1 基础数据类型
2.4.1.1 数字类型
- 整数类型:INT,SMALLINT,TINYINT,MEDIUMINT,BIGINT
- 浮点类型:FLOAT,DOUBLE,DECIMAL
- 比特值类型:BIT
注意:
- 对于准确性要求比较高的东西,比如money,用decimal类型减少存储误差。声明语法是DECIMAL(M,D)。M是数字的最大数字位数,D是小数点右侧数字的位数。比如 DECIMAL(6,2)最多存6位数字,小数点后占2位,取值范围-9999.99到9999.99。
- 比特值类型指0,1值表达2种情况,如真,假
2.4.1.2 字符串类型
- 普通字符串: CHAR,VARCHAR
- 存储文本: text
- 存储二进制数据: BLOB
- 存储选项型数据:ENUM,SET
注意:
- char:定长,即指定存储字节数后,无论实际存储了多少字节数据,最终都占指定的字节大小。默认只能存1字节数据。存取效率高。
- varchar:不定长,效率偏低 ,但是节省空间,实际占用空间根据实际存储数据大小而定。必须要指定存储大小 varchar(50)
- enum用来存储给出的多个值中的一个值,即单选,enum(‘A’,‘B’,‘C’)
- set用来存储给出的多个值中一个或多个值,即多选,set(‘A’,‘B’,‘C’)
2.4.1.3 时间类型
-
日期 : DATE
-
日期时间: DATETIME,TIMESTAMP
-
时间: TIME
-
年份 :YEAR
-
时间格式
date :"YYYY-MM-DD" time :"HH:MM:SS" datetime :"YYYY-MM-DD HH:MM:SS" timestamp :"YYYY-MM-DD HH:MM:SS"
注意:
- datetime :以系统时间存储
- timestamp :以标准时间存储但是查看时转换为系统时区,所以表现形式和datetime相同
e.g. create table marathon ( id int primary key auto_increment, athlete varchar(32), birthday date, registration_time datetime, performance time );
-
日期时间函数
- curdate() 返回当前日期,格式对应date类型
- now() 返回服务器当前日期时间,格式对应datetime类型
- curtime() 返回当前时间,格式对应time类型
-
时间操作
时间类型数据可以进行比较和排序等操作,在写时间字符串时尽量按照标准格式书写。
select * from marathon where birthday>='2000-01-01'; select * from marathon where birthday>="2000-07-01" and performance<="2:30:00";
2.4.2 表的基本操作
2.4.2.1 创建表
create table 表名(字段名 数据类型 约束,字段名 数据类型 约束,…字段名 数据类型 约束);
- 字段约束
-
如果你想设置数字为无符号则加上 unsigned
-
如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
-
DEFAULT 表示设置一个字段的默认值
-
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
-
PRIMARY KEY 关键字用于定义列为主键。主键的值不能重复,且不能为空。
e.g. 创建班级表 create table class_1 ( id int primary key auto_increment, name varchar(32) not null, age tinyint unsigned not null, sex enum('w','m'), score float default 0.0, hobby set('sing','dance','draw'), level char not null, price decimal(6,2),remark text ); e.g. 创建兴趣班表 create table interest ( id int primary key auto_increment, name varchar(32) not null, hobby set('sing','dance','draw'), level char not null, price decimal(6,2), remark text );
-
2.4.2.2 复制表
create table 表名 like 被复制的表名;
create table 表名 select 查询命令;
- 表能根据实际需求复制数据
- 复制表时不会把KEY属性复制过来
2.4.2.3 查看数据表
show tables;
2.4.2.4 查看表结构
desc 表名;
2.4.2.5 查看数据表创建信息
show create table 表名;
2.4.2.6 删除表
drop table 表名;
2.4.2.7 修改表名
rename table 表名 to 新表名;
alter table 表名 rename 新表名;
2.4.2.8 修改表的字符集
alter table 表名 character set utf8;
2.4.3 表字段的操作(alter)
语法 :alter table 表名 执行动作;
2.4.3.1 添加字段(add)
alter table 表名 add 字段名 数据类型;
alter table 表名 add 字段名 数据类型 first;
alter table 表名 add 字段名 数据类型 after 字段名;
e.g.
alter table interest add tel char(11) after name;
2.4.3.2 删除字段(drop)
alter table 表名 drop 字段名/约束;
2.4.3.3 修改数据类型(modify)
alter table 表名 modify 字段名 新数据类型;
2.4.3.4 修改字段名(change)
alter table 表名 change 旧字段名 新字段名 新数据类型;
2.5 表数据基本操作(DML)
2.5.1 插入(insert)
insert into 表名 values(值1),(值2),...;
insert into 表名(字段1,...) values(值1),...;
e.g.
insert into class_1 values (2,'Baron',10,'m',91),(3,'Jame',9,'m',90);
insert into class_1 (name,age,sex,score) values ('Lucy',17,'w',81);
2.5.2 删除表记录(delete)
delete from 表名 where 条件;
注意:delete语句后如果不加where条件,所有记录全部清空
e.g.
delete from class_1 where name='Abby';
2.5.3 更新表记录(update)
update 表名 set 字段1=值1,字段2=值2,... where 条件;
注意:update语句后如果不加where条件,所有记录全部更新
e.g.
update class_1 set age=11 where name='Abby';
3 索引操作
3.1 概述
- 定义
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
- 优缺点
-
优点 : 加快数据检索速度,提高查找效率
-
缺点 :占用数据库物理存储空间,当对表中数据更新时,索引需要动态维护,降低数据写入效率
-
注意 :
- 通常我们只在经常进行查询操作的字段上创建索引
- 对于数据量很少的表或者经常进行写操作而不是查询操作的表不适合创建索引
3.2 索引分类
- 普通(MUL)
普通索引 :字段值无约束,KEY标志为 MUL
- 唯一索引(UNI)
唯一索引(unique) :字段值不允许重复,但可为 NULL,KEY标志为 UNI
- 主键索引(PRI)
一个表中只能有一个主键字段, 主键字段不允许重复,且不能为NULL,KEY标志为PRI。通常设置记录编号字段id,能唯一锁定一条记录
3.3 索引(index)
3.3.1 创建表时直接创建索引
create table 表名
(
字段名 数据类型,
字段名 数据类型,
index 索引名(字段名),
index 索引名(字段名),
unique 索引名(字段名)
);
3.3.2 在已有表中创建索引
create [unique] index 索引名 on 表名(字段名);
e.g.
create unique index name_index on cls(name);
3.3.3 主键索引添加
alter table 表名 add primary key(id);
3.3.4 查看索引
1、desc 表名; --> KEY标志为:MUL 、UNI。
2、show index from 表名;
3.3.5 删除索引
drop index 索引名 on 表名;
alter table 表名 drop primary key; # 删除主键
- 扩展: 借助性能查看选项去查看索引性能
set profiling = 1; 打开功能 (项目上线一般不打开)
show profiles 查看语句执行信息