目录
数据库概念
数据库是一个软件(是一类软件):这一类软件功能就是"管理数据".实现数据库软件的内部,会广泛的使用到各种数据结构.
数据库管理的数据一般保存在硬盘上.也有少数数据库,是把数据存在内存中的(Redis,Tair…)
MySQL就是一个具体的数据库软件.MySQL这个数据库,是一个"客户端-服务器"结构的程序.
主动发起请求的一方,称为客户端.
被动接受请求的一方,称为服务器.
客户端给服务器发送的数据,称为“请求".
服务器给客户端返回的数据,称为"响应"
通过SQL来操作"数据库”,此处的数据库指的是一个MySQL
服务器上,所管理的一个独立的数据集合.
一个独立的分组(数据集合)就称为是一个数据库.一个MySQL服务器上可以管理多个数据库.
内存和外存的区别
1.内存的存储空间较小(8G,16G),外存的存储空间较大(512G,1T).
2.内存的访问速度快,外存的访问速度慢.(大概要差3-4个数量级).
3.内存成本高,外存成本低.
4.内存中的数据,断电后消失.外存中的数据,断电后还在.
一、数据库基本操作
1.1 显示当前的数据库
show databases;
1.2 创建数据库
create database 数据库名字;
数据库的名字,可以随便起,但是不能是SQL
中的关键字.(如果实在要使用关键字,可以使用``引起来(esc
下面,1
前面的那个键)).
- 如果系统没有
db_test2
的数据库,则创建一个名叫db_test2
的数据库,如果有则不创建:
create database if not exists db_test2;
create database if not exists db_test2 character set utf8mb4;
character set
:指定数据库采用的字符集.
utf8mb4
:这里是数字和汉字的对应关系,表格是存在多个版本的.常用的主要是两个版本:1.GBK , 2.UTF-8
这是当前最主要使用的汉字编码方式.
1.3 使用数据库
use 数据库名;
1.4 删除数据库
数据库删除以后,内部看不到对应的数据库,里边的表和数据全部被删除.
drop database [if exists] 数据库名;
二、常用数据类型
像MySQL, Oracle, SQL Server
都是按照表格来组织.称为"关系型数据库"
像Redis,HBase, MongoDB
不要求按照表格方式组织(类似于文档/键值对)称为“非关系型数据库".
一个数据库中,可以有很多个数据表.
每个数据表有很多行.每一行称为是一条"记录",每一行又有很多列,每一列称为是一个“字段".
MySQL这样的数据库,就要求每一行这里的列都是一致的.(第一行是三列,第二行也是三列-….每一行都是三列.第一行的第一列是一个整数,第二行的第一列也是一个整数……第一行的第二列是一个字符串,第二行的第二列也是一个字符串…)
为了描述这个数据表中的列的信息,在创建数据表的时候,就需要指定"表头"(表头就是一个表格第一行的那个描述信息).
2.1 数据类型
分为整型和浮点型:
数据类型 | 大小 | 说明 | 对应java类型 |
---|---|---|---|
bit[(m)] | m指定位数,默认为1 | 二进制数,M范围从1到64,存储数值范围从0到2^M-1 | 常用Boolean对应BIT,此时默认是1位,即只能存0和1 |
tinyint | 1字节 | Byte | |
smallint | 2字节 | Short | |
int | 4字节 | Integer | |
bigint | 8字节 | Long | |
float(M,D) | 4字节 | 单精度,M指定长度,D指定小数位数。会发生精度丢失 | Float |
double(M,D) | 8字节 | Double | |
decimal(M,D) | M/D最大值+2 | 双精度,M指定长度,D表示小数点位数。精确数值 | BigDecimal |
numeric(M,D) | M/D最大值+2 | 双精度,M指定长度,D表示小数点位数。精确数值 | BigDecimal |
2.2 字符串类型
数据类型 | 大小 | 说明 | 对应java类型 |
---|---|---|---|
varchar(size) | 0-65535字节 | 可变长度字符 | String |
text | 0-65535字节 | 长文本数据 | String |
mediumtext | 0-16777215字节 | 中等长度文本数据 | String |
blob | 0-65535字节 | 二进制形式的长文本数据 | Byte[] |
varchar
可以根据实际需要,来指定要占用多少空间(SIZE的单位是字符)一个字符可能是由多个字节构成的.
BLOB
用于表示二进制的数据.mp3
文件, jpg
文件,.class
…都属于二进制文本件.txt,java,.c
都属于文本文件.
2.3 日期类型
数据类型 | 大小 | 说明 | 对应java类型 |
---|---|---|---|
datetime | 8字节 | 范围从1000到9999年,不会进行时区的检索及转换. | java.util.Date. java.sql.Timestamp |
timestamp | 4字节 | 范围从1970到2038年,自动检索当前时区并进行转换。 | java.util.Date. java.sql.Timestamp |
三、表的操作
需要操作数据库中的表时,需要先使用该数据库:
3.1 创建表
create table 表名(列名 类型,列名 类型,...)
示例:
创建表的时候,可以使用comment
来给某个列后面加上注释.
在代码中表示"钱”一般有两种方式:
1.使用Decimal/BigDecimal
⒉使用int
(单位是分即可)这是一个常见的手段~(运算效率要比 Decimal
高很多)
3.2 查看表
show tables;
示例:
3.3 查看表的结构
desc 表名;
3.4 删除表
drop table [if exists] 表名;
示例:
以上.