概述:
数据库的作用:通俗易懂的讲就是用于数据的存储。
传统的保存方式如文本、Excel等有诸多不足:
- 文本:文件过大时打开会卡顿,非常慢。
- Excel:保存的数据量非常少,不符合当今数据动不动就上百万条这种海量数据的需求。
数据库更加方便管理数据,通过sql语句更加有效率,编写SQL语句要注意:功能+性能!
数据库的分类:
- 结构化数据库,实质上就是关系型数据库,比如Oracle、MySQL等。二维表结构来逻辑表达和实现的数据, 对于表结构的每一列,都有着清晰的定义。
- 半结构化数据库,主要是键值对的形式存在。它的描述数据的结构和内容混在一起,没有明显的区分。比如xml、json
- 非结构化数据库,从形态上,非结构化数据主要包含三大块:第一是文本文字;第二是图像、图片等;第三是视频流、电视流。之前存储图片数据使用是blob格式,现在已被存储路径path形式代替了。
关系型数据库比较:
目前最流行的是Oracle和MySQL,对比如下:
Oracle:效率高,已经优化到极致,使用和维护成本高,对硬件的要求要比其他数据库高。
MySQL:开源,简单,性能优越,支持多用户,单进程多线程,c/s
MySQL执行流程:
- 启动MySQL服务
- 加载配置文件到服务器内存
- 生成MySQL数据库实例
- 简历MySQL客户端与MySQL数据库实例通信的链路
- MySQL客户端请求MySQL会话
- MySQL服务端响应客户端请求
MySQL表存储引擎:
MySQL的默认存储引擎是InnoDB;
引擎(Engine)是电子平台上开发程序或系统的核心组件。利用引擎,开发者可迅速建立、铺设程序所需的功能,或利用其辅助程序的运转。一般而言,引擎是一个程序或一套系统的支持部分。常见的程序引擎有游戏引擎,搜索引擎,杀毒引擎等。
简单来说,存储引擎就是指表的类型以及表在计算机上的存储方式。通过show engines来查看
InnoDB的特点:完善事务支持,主要体现在写入数据这方面,即增删改操作。
MyISAM的特点:读取速度快,用于查询;
两个结合可以达到一个读写分离的效果,从而优化数据库。
mysql默认数据库:
- information_schema存储源数据信息,即描述表结构的信息。
- mysql存储用户信息
- performance_schema跟踪运行的信息
- test做实验用的,也可以自己再建一个库
基础操作:(重点)
查询端口:netstat -ano|grep 3306
登录:mysql -uroot -p >>回车>> 输入连接密码
查看所有字符集:show variables like 'character%'; ---出现乱码时检查编码格式
查看数据库:show databases;
导入导出:(数据库的备份)
- mysqldump -uroot -p 数据库名>路径\文件名.格式 ==导出
- mysql -uroot -p 数据库名<路径\文件名.格式 ==导出
- mysql -uroot -p test<./test.sql --命令还原指定备份
查看字段值溢出是否截断:
--查看当前的sql_mode
select @@sql_mode;
--插入测试数据
insert into inttype values(128); //设置的字段最大值为127
- 无法插入,切换sql_mode模式
set sql_mode = 'ansi';
- 插入成功,但被截断
insert into inttype values(128);
获取系统时间:select now();select year(now()); ===获取年份
约束值范围:
create table person(
-> sex enum('male','female'),
-> interest set('sports','study','sing')
-> );
enum ----单选
set ----多选
其他
yinyint一个字节
smallint两个字节
mediumint三个字节
int四个字节
bigint八个字节TIMESTAMP[(M)]
时间戳。范围是’1970-01-01 00:00:00’到2037年。
后续有待更新,感谢阅读~