数据库基础概念
为了方便存储数据,实现了数据的持久化,可以统一管理,方便查询
DB(database)
DB:(数据库)存储数据的"仓库",保存一系列有组织的数据
DBMS(database Management System)
DBMS:(数据库管理系统)也称数据库软件,管理DB中的数据,数据库是通过DBMS创建和操作的容器,
常见数据库管理系统:MySQL,Oracle,DB2,SqlServer等
SQL(Structure Query Language)
SQL:(数据化查询语言)专门用来与DBMS通信的语言
1.不是某个数据库供应商特有的语言,几乎所有的DBMS都支持SQL
2.是一种强有力的语言,可以进行非常复杂和高级的数据库操作
数据库特点
1.将数据放到表中,然后将表放到库中
2.一个数据库可以有多个表,每个表都有自己的名字,用来标识自己.表具有唯一性
3.表具有一些特性,,这些特性定义了在数据库如何存储,类似java中的"类"
4.表由列组成,我们称为字段.所有表都有一个或者多个列组成,每一列类似java中的"属性"
5.表中数据按行存储,类似java中的"对象"
数据库分类
关系型数据库
数据库中表与表之间的固定关系
MySQL:早起是瑞典一家公司开发,免费的,现在已被Oracle收购
Oracle:Oracle公司开发
DB2:IBM 收费的,大型数据库
SqlServer:微软,收费的
非关系型数据库
没有固定关系,数据以key--value的形式存储
Redis:做缓存,计数器,简单的消息队列,session服务器
为什么要使用数据库
1.数据保存在内存中
优点: 存取速度快
缺点: 数据不能永久保存
2.数据保存在文件中
优点: 数据可以永久保存
缺点: 数据比内存中操作慢,频繁的IO操作;查询数据不方便
3.数据保存在数据库中
1)可以做到数据永久保存
2)使用SQL语句,查询效率高
3)管理数据方便
MySQL
MySQL是一款关系型数据库管理系统,由瑞典MySQLAB公司开发,属于Oracle旗下产品.MySQL是最流行的关系型数据库管理系统之一,在Web应用方面,MySQL是最好的RDBMS应用软件之一.在java企业级开发中非常常用,因为MySQL是开源免费的,并且方便扩展.
数据库三大范式
1.保证列的原子性,每列是不可再拆分的;
2.在第一范式的基础上,非主键列完全依赖于主键,而不是依赖主键的一部分;
3.在第二范式的基础上,非主键列只依赖于主键,不依赖其它非主键
MySQL有关权限表
MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在MySQL数据库里,由mysql_install_db脚本初始化.权限表分别有:user,db,table_priv,columns_priv和host.
user权限表:记录允许连接到服务器的用户账号信息,里边的权限是全局级的
db权限表:记录各个帐号在各个数据库上的操作权限
table_priv权限表:记录数据表级的操作权限
columns_priv权限表:记录数据列级的操作权限
host权限表:配合db权限表对给定主机上数据库级操作权限作更细致的控制;这个权限表不受GRANT和REVOKE语句的影响
数据类型
整数型:
tinyint(很小的整数(8位二进制) )
smallint (小的整数(16位二进制))
mediumint(中等大小的整数(24位二进制))
int(integer)(普通大小的整数(32位二进制))
小数类型:
float(单精度浮点数)
double(双精度浮点数)
decimal(m,d)(压缩严格的定点数)
日期格式:
year(年YYYY)
time(时:分:秒HH:MM:SS)
date(年-月-日YYYY-MM-DD)
datetime(年-月-日 时:分:秒YYYY-MM-DDHH:MM:SS)
timestamp(YYYYMM-DDHH:MM:SS)
文本格式:
char(0-65535之间的整数)
varchar(0-65535之间的整数多个字符)
text(0-65535之间的整数 文本)
longtext(0~4294967295字节)