MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,增加了速度并提高了灵活性。
基础操作
1.显示所有的数据库
show databases;
2.创建数据库
create database [if not exists] 名字 character set utf8mb4;
3.使用数据库
use 数据库名;
4.删除数据库
drop database [if exists] 数据库名;
删除数据库是一种非常危险的操作,一般不使用。
5.查询当前数据库服务使用的编码集
show variables like '%character%';
6.查看警告信息
show warnings;
数据类型
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 | 和DECIMAL一样 | BigDecimal |
说明:在设计表的时候,涉及到ID字段(自动增长),直接使用
bigint
;涉及到金额等比较敏感的数据时,可以使用decimal
类型,也可以使用bigint
或int
表示。
2.字符串类型
数据类型 | 大小 | 说明 | 对应Java类型 |
---|---|---|---|
VARCHAR (SIZE) | 0-65,535字节 | 可变长度字符串 | String |
TEXT | 0-65,535字节 | 长文本数据 | String |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 | String |
BLOB | 0-65,535字节 | 二进制形式的长文本数据 | byte[] |
说明:在
VARCHAR
类型中,size表示的是字符的长度。字符和字节是不同的概念,比如,对于hello这种英文字母来说,它有5个字符, 也是5个字节;对于‘你好’这种中文来说,它也有5个字符,但是字节的多少和编码格式有关,比如GBK
编码使用两个字节表示一个汉字,UTF-8
编码使用三个或四个字节来表示一个字符。
文本格式和二进制格式的区别:用文本编辑器打开的文件,可以明文打开的就是文本,如果打开后是乱码就是二进制。
3.日期类型
数据类型 | 大小 | 说明 | 对应Java类型 |
---|---|---|---|
DATATIME | 8 字节 | 范围从1000到9999年,不会进行时区的检索及转换 | java.util.Date、java.sql.Timestamp |
TIMESTAMP | 4字节 | 范围从1970到2038年,自动检索当前时区并进行转换 | java.util.Date、java.sql.Timestamp |
说明:涉及到日期建议使用
DATATIME
数据类型。
创建表
进入数据库之后,查看当前数据库是否有表,使用show tables
命令。
1.创建表
CREATE TABLE 表的名字 (
字段名1 数据类型,
字段名2 数据类型,
字段名3 数据类型
);
多个字段用逗号隔开,最后一个字段没有逗号,所有关于字段的定义包在小括号中。
2.查看表结构
DESC 表名;
3.删除表(危险操作):可以一次删除多张表。
DROP [TEMPORARY] TABLE [IF EXISTS] 表名 [, 表名] ...
练习:
有一个商店的数据,记录客户及购物情况,有以下三个表组成:
商品goods(商品编号goods_id,商品名goods_name, 单价unitprice, 商品类别category, 供应商provider)。
-- 创建一个商品表
# 创建一个商品表
/*
创建一个商品表
*/
create table goods(
goods_id bigint,
goods_name varchar(255),
unitprice decimal,
category varchar(255),
provider varchar(255)
);
继续加油~