MySQL概述
什么是数据库?
存储数据
JavaSE存数据的方式:
1、使用集合存储数据,缺点:程序一旦重启,数据全部清空,无法做到持久化
2、XML文件同样可以保存数据,缺点:存取起来非常麻烦
<bean>
<id>1</id>
</bean>
3、使用IO流将数据存储到硬盘中,txt文件、world,缺点:数据之间没有结构化的关联关系
以上都只能做到暂时存储
如何解决这个问题,业务数据永久保存且方便存取、结构有序?
数据库来解决这个问题
数据库是一种专门的软件(服务),用来管理要存储的数据,这些数据按照特定的格式进行存储,通过数据库服务可以非常方便地对数据进行增删改查的操作,提升了数据管理的效率
这就是数据库管理系统:Database Management System 简称DBMS
Database就是一个存储数据的仓库
什么是MySQL?
MySQL是目前主流的数据库产品
MySQL的优势:
- 免费
- 开源
- 跨平台
- 速度快
CRUD:Creat 增、Read 删、Update 改、Delete 查
学习数据库需要掌握两部分内容
1、掌握数据库的使用,根据业务对数据完成增删改查操作
2、设计数据库,根据项目的需求,设计数据表之间的关联关系(高级)
MySQL的使用
1、通过命令行的方式进行操作
mysql -uroot -proot
MySQL是一个服务,在服务可以创建很多个数据库,在数据库中创建数据表,在数据表中存储数据
类似Excel表格
选择数据库
use test;
查询数据表
select * from user;
2、使用可视化管理工具操作数据库
DataGrip,更加方便地管理数据库
数据库的存储引擎
存储引擎:就是如何存储数据、如何建立索引、如何更新、查询数据等技术地具体实现,也可以称为是表的类型。
MySQL支持多种存储引擎,默认是InnoDB
show engines;
MySQL默认使用InnoDB存储引擎,InnoDB对于事务的处理能力非常强大,同时还支持主键自增,支持外键。
SQL分类
SQL也是一种编程语言,专门用来处理数据的
DML数据操作语言,操作数据库中存储的数据(insert、update、delete)
DDL数据定义语言,创建、删除、修改数据库、数据表(create、drop、aler)
DQL数据查询语言,查询数据库,查询数据库(select)
DCL数据控制语言,用来控制数据库组建的存取(事务commit、rollback)
创建数据库
create database 数据库名称 default character set utf8 collate utf8_general_ci;
collate设置数据库的校验字符集,是指当我们对某个字符串类型的数据进行排序查询的时候,数据排序的方式,如何比较两个字符串值的大小关系。
utf8_general_ci; 不区分大小写
utf8_bin; 区分大小写 按照ASCII码进行排序(如:B:66 b:77)
MySQL数据类型
MySQL支持的数据类型
整数类型
数据类型 | 大小 | 描述 |
---|---|---|
tinyint | 1 byte | 非常小的整数 |
smallint | 2 byte | 小的整数 |
mediumint | 3 byte | 中等大小的整数 |
int | 4 byte | 标准的整数 |
bigint | 8 byte | 大整数 |
小数类型
浮点型、定点型
数据类型 | 大小 | 描述 |
---|---|---|
float | 4 byte | 单精度浮点型 |
double | 8 byte | 双精度浮点型 |
float(M,D)
double(M,D)
M表示该小数最多需要的十进制有效数字个数(含小数点后)
D表示该小数小数点后的十进制数字个数
为了确保小数是精确的,MySQL还提供了定点型数据类型,decimal
日期和时间类型
数据类型 | 大小 | 描述 |
---|---|---|
year | 1 byte | 表示年份值 |
time | 3 byte | 表示时间值 |
date | 3 byte | 表示日期值 |
datetime | 8 byte | 日期+时间值 |
timestamp | 4 byte | 1970-01-01 00:00:01到现在的毫秒数 |
字符串类型
数据类型 | 大小 | 描述 |
---|---|---|
char(M) | M个字符 | 固定长度的字符串 |
varchar(M) | M个字符 | 可变长度的字符串 |
tinytext | 2^8-1 byte | 非常小的字符串 |
text | 2^16-1 byte | 小型字符串 |
mediumtext | 2^24-1 byte | 中等大小的字符串 |
longtext | 2^32-1 byte | 大型的字符串 |
二进制类型
数据类型 | 大小 | 描述 |
---|---|---|
bit(M) | M位二进制数据 | 小的二进制数据 |
binary(M) | M byte | 普通的二进制数据 |
varbinary(M) | 0~M的可变长二进制 | 普通的二进制数据 |
tinyblob | 0~255 byte | 大的二进制数据 |
blob | 0~2^16-1 byte | 大的二进制数据 |
mediumblob | 0~2^24-1 byte | 大的二进制数据 |
longblob | 0~2^32-1 byte | 大的二进制数据 |
管理数据库
创建数据库(上面已有)
删除数据库
drop database 数据库名称;
查看数据库
show databases;
选择数据库
use 数据库名称;
在创建数据表之前一定要先选择一个数据库,给指定的数据库中创建数据表
管理数据表
服务–》创建数据库–》创建数据表–》完成数据的CRDU
create table 数据表名称(
//列信息
字段名称 数据类型 是否为主键/是否可以为空/默认值
);
创建数据表
create table student(
id int,
name varchar(11),
age int
);
修改数据表
修改数据表的结构,也就是修改字段
1、新增字段
alter table 数据表名称 add 字段名称 数据类型;
2、修改字段
alter table 数据表名称 change 旧字段名称 新字段名称 数据类型
3、给字段设置默认值
alter table course alter column id set default 1;
4、删除字段
alter table 数据表名称 drop 字段名称
删除数据表
drop table 数据表名称;
查看数据表
show tables;
查看数据表结构
desc 数据表名称;
数据管理
增删改查
CRUD create、read、update、delete
增
insert into 数据表(字段列表) values(值列表)
insert into student(id, name, age) VALUES (1,'张三',20)
同时添加多条记录
insert into student(id