1. 数据库的操作
1.1 显示当前的数据库
1.2 创建数据库
语法:
说明:
大写的表示关键字
[]
是可选项
CHARACTER SET:
指定数据库采用的字符集
COLLATE:
指定数据库字符集的校验规则
示例:
创建名为
db_test1
的数据库
说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:
utf8
,校验规则
是:
utf8_ general_ ci
如果系统没有
db_test2
的数据库,则创建一个名叫
db_test2
的数据库,如果有则不创建
如果系统没有
db_test
的数据库,则创建一个使用
utf8mb4
字符集的
db_test
数据库,如果有则
不创建
SHOW DATABASES;
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
CREATE DATABASE db_test1;
CREATE DATABASE IF NOT EXISTS db_test2;
CREATE DATABASE IF NOT EXISTS db_test CHARACTER SET utf8mb4;
数据类型
对应
java
类型
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
说明:
MySQL
的
utf8
编码不是真正的
utf8
,没有包含某些复杂的中文字符。
MySQL
真正的
utf8
是
使用
utf8mb4
,建议大家都使用
utf8mb4
1.3 使用数据库
use 数据库名;
DROP DATABASE [IF EXISTS] db_name;
drop database if exists db_test1;
drop database if exists db_test2;
1.4 删除数据库
语法:
DROP DATABASE [IF EXISTS] db_name;
说明:
数据库删除以后,内部看不到对应的数据库,里边的表和数据全部被删除
2. 常用数据类型
2.1 数值类型:
数据类型
对应
java
类型
VARCHAR (SIZE)
0-65,535
字节
可变长度字符串
String
TEXT
0-65,535
字节
长文本数据
String
MEDIUMTEXT 0-16 777 215
字节 中等长度文本数据
String
BLOB
0-65,535
字节 二进制形式的长文本数据
byte[]
数据类型
对应
java
类型
DATETIME 8 字 节
范围从
1000
到
9999
年,不会进行时区的
检索及转换。
java.util.Date
、
java.sql.Timestamp
TIMESTAMP4 字节
范围从
1970
到
2038
年,自动检索当前时
区并进行转换。
java.util.Date
、
java.sql.Timestamp
1
字节(
bytes
)
= 8bit
。
对于整型类型的范围:
1.
有符号范围:
-2^
(类型字节数
*8-1
)到
2^
(类型字节数
*8-1
)
-1
,如
int
是
4
字节,就
是
-2^31
到
2^31-1
2.
无符号范围:
0
到
2^
(类型字节数
*8
)
-1
,如
int
就是
2^32-1
尽量不使用
unsigned
,对于
int
类型可能存放不下的数据,
int unsigned
同样可能存放不下,与其
如此,还不如设计时,将
int
类型提升为
bigint
类型。
2.2 字符串类型
2.3 日期类型
3. 表的操作
需要操作数据库中的表时,需要先使用该数据库:
3.1 查看表结构
use db_test;
desc
表名
;
示例:
3.2 创建表
语法:
可以使用
comment
增加字段说明。
示例:
create table stu_test (
id int,
name varchar(20) comment '姓名',
password varchar(50) comment '密码',
age int,
sex varchar(1),
birthday timestamp,
amout decimal(13,2),
resume text
);
3.4 删除表
语法格式:
示例:
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
-- 删除 stu_test 表
drop table stu_test;
-- 如果存在 stu_test 表,则删除 stu_test 表
drop table if exists stu_test;
4. 实例
有一个商店的数据,记录客户及购物情况,有以下三个表组成:
商品
goods(
商品编号
goods_id
,商品名
goods_name,
单价
unitprice,
商品类别
category,
供
应商
provider)
客户
customer(
客户号
customer_id,
姓名
name,
住址
address,
邮箱
email,
性别
sex
,身份证
card_id)
购买
purchase(
购买订单号
order_id,
客户号
customer_id,
商品号
goods_id,
购买数量
nums)
SQL:
-- 显示
show databases;
-- 创建
create database xxx;
-- 使用
use xxx;
-- 删除
drop database xxx;
-- 查看
show 表;
-- 创建
create table 表名(
字段1 类型1,
字段2 类型2,
...
);
-- 删除
drop talbe 表名;
-- 创建数据库
create database if not exists bit32mall
default character set utf8 ;
-- 选择数据库
use bit32mall;
-- 创建数据库表
-- 商品
create table if not exists goods
(
goods_id int comment '商品编号',
goods_name varchar(32) comment '商品名称',
unitprice int comment '单价,单位分',
category varchar(12) comment '商品分类',
provider varchar(64) comment '供应商名称'
);
-- 客户
create table if not exists customer
(
customer_id int comment '客户编号',
name varchar(32) comment '客户姓名',
address varchar(256) comment '客户地址',
email varchar(64) comment '电子邮箱',
sex bit comment '性别',
card_id varchar(18) comment '身份证'
);
-- 购买
create table if not exists purchase
(
order_id int comment '订单号',
customer_id int comment '客户编号',
goods_id int comment '商品编号',
nums int comment '购买数量'
);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现