什么是数据库?
可以从字面的意思简单理解,及时存放数据的仓库。
数据分类:
1、RDBMS:关系数据库
2、NoSql:非关系数据库
关系数据库介绍:
存放有持久性的,完整的,有效的,结果性的数据;
构成:Sever(服务器)和Client(客户端)
其中服务器中有系统库和自定义库,
系统库包含了规则,权限,角色,系统函数,MySQL等等
自定义库:
库>表/视图>列
表对象:自定义函数,存储过程,触发器
表优化:索引,表分区
非关系数据库的优点是性能好
其中:
Redis 相当于一个大的HashMap,,其中有键值对,优点速度快
kafka是MQ(消息列队)作用:缓存削峰
habase是列式数据库 优点:吞吐量大,宽表
mangodb是文件式数据库
…
数据库的优点
实体(行)完整性:确保每行数据的唯一性
域(列)完整性:
引用完整性
实体完整性
主键(primary key) 有单列主键和组合主键
唯一键(unique key)单列唯一
自增列 auto_increment
主键和唯一键的区别;
1、主键不能为空,唯一键可以为空,但是只能有一个为空
2、主键下面有索引,唯一键下面有唯一索引。前一个是物理索引,后一个是逻辑索引
域(列)完整性
数据类型(长度)
java | MySQL |
---|---|
char/String | char(n)【定长n<=255】/varchar(n)【不定长(最长为n<=65533)】/mediumtext【最大为16M】/kongtext【最大为4G】 |
byte | tinynit(n<=4)(范围是-128~127)/ unsigned tinyint 【范围是0~255】 |
short | smalint(n<=6) |
int | int(n<=11) |
long/Biglnteger | bigint(n<=20) |
float/double | float/double |
BiglnDecimal | dicemal(m,n)/unmeric(m,n) m是总长度,n是精度,m<=38 |
boolan | bit |
上面是java和MySQL中的基本类型的对照
默认值 default(VALUE)
非空 not null
引用(关系)完整性
下面数初步应用MySQL
在环境都配置好了之后
下面进行MySQL的对象级操作
//在下面代码中就可以写,可以不写的内容就写在[]中
#查看数据库
show databases;
show databases like '%CONTENT%';
#上面有两种查看数据库的方法,下面那种是查看指定数据库
#删除数据库
drop database [if exists] DATABASE_NAME;
#上面的意思是,[如果存在]就删除数据库
#创建数据库
create database [if not exists] DATABASE_NAME;
#如果不存在就创建数据库
#进入数据库
use DATABASE_NAME;
#创建数据表
create table TABLE_NAME(
COL_NAME COL_DATA_TYPES[(length)] CONSTRATINT , #表名称,表类型
...
);
#查看数据表
show tables [like '%TABKE_NAME%'];
#删除数据表
drop tables;
下面是一个简单的实例,分别对应上面的操作
#[如果不存在则]创建数据库
create database if not exists schoolkb12;
#查看数据库
show databasess like '%schoolkb12%';
#[如果存在则]删除数据库
#进入数据库
use schoolkb12;
#创建数据表(主表)
create table classinfo(
calssId in auto_increment primary key,
ckassName varchar(5) not null
);
#创建学生表(从表)
create table sudentinfo(
stuId int(4) zerofill auto_increment primary key,
stuName varchar(10) not null,
stuAge tinyint unsigned not null,
stuGender char(1) not null default '男',
mobile varchar(20) not null unique key,
tition decimal(7,2),
fkClassId int not null,
constraint fk_student_class_id foreign key (fkClassId) references classsinfp(classId)
);