数据库基础
数据库基础
1、什么是数据库?
存储信息的一个管理平台;对数据进行有效的管理
2、与文件相比数据库的优势?
-
文件存在安全性问题;
-
文件不方便进行存储海量数据;
-
文件不利于查询和管理;
-
在程序中操作数据库更方便;
3、存储介质:
磁盘、内存
4、主流的数据库:
-
SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。适用于C/S模式
-
Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
-
MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。
-
PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
-
SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
-
H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。
-
国内:大金数据库,达梦数据库。
5、服务器、数据库、表的关系:
关系型数据库---一对一、一对多、多对多
6、MySQL架构图:
-
客户端:代码层次
-
连接池:登录判断->操作
-
存储引擎: 数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。----不指定默认为InnoDB.
MyISAM--不支持事务、保存点,支持全文搜索,检索速度较高
InnoDB--支持事务、保存点,分布式的,临时的
Federated--存储引擎访问在远程数据库的表中的数据,而不是本地的表。
Archive--这个引擎只允许插入和查询,不允许修改和删除
Merge--把一组MyISAM数据表当做一个逻辑单元来对待,让我们可以同时对他们进行查询
Memory---将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。
Cluster--也叫NDB Cluster 存储引擎,主要用于MySQL Cluster 分布式集群环境,
Example--
-
MySQL文件系统
NTFS--是 WindowsNT 环境的文件系统
ext4--是Linux系统下的日志文件系统,是ext3文件系统的后继版本
常见的三种MySQL引擎MyISAM,InnoDB,Memory:https://www.cnblogs.com/yuxiuyan/p/6511837.html
7、SQL分类
-
DDL(数据定义语言)---维护存储数据的结构
create、drop、alter
-
DML(数据操纵语言)---对数据进行操作
insert、delete、update
-
DQL(数据查询语言)
select
-
DCL(数据控制语言)---负责权限管理和事务
grant、revoke、commit
8、连接数据库
mysql -h [127.0.0.1] -P 3306 -u root -p[密码]
127.0.0.1-本机回环地址
9、数据类型
表的数据类型: 数据类型在前端、代码、数据库层次都要进行控制
数值类型:
bit[(M)] : 位字段类型。M表示每个值的位数,范围从1到64。如果M被忽略,默认为1。存储的是对应的 ASCII 值
float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节。float表示的精度大约是7位。
decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数。decimal整数最大位数m为65。支持小数最 大位数d是30。如果d被省略,默认为0、如果m被省略,默认是10。
文本类型:
char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255。
varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节。有1 - 3 个字节用于记录数据大小,所以说 有效字节数是65532。
当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844[因为utf中,一个字符占用3个字节],如果编码是gbk,varchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符占用2字节)
常用的时间日期类型:
-
datetime 时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从1000到9999,占用八字节
-
date:日期 'yyyy-mm-dd',占用三字节
-
timestamp:时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss格式和datetime完全一致,占用四字节
枚举和集合:
-
enum:枚举,“单选”类型;
enum('选项1','选项2','选项3',...); 最大65535个
-
set:集合,“多选”类型;
set('选项值1','选项值2','选项值3', ...); 最大64个
集合查询,使用find_in_set(sub, str_list):如果sub在str_list中,返回下标;否则返回0;str_list用逗号隔开
-
-
查询--select * from student;