文章目录
MySQL (2)
前言:
在 进入MySQL 第二部分开始,我们 回忆一下上文的内容.
数据库 是 一类软件 往往 把数据存储在硬盘上(持久化储存) ,方便进行 增删查改.
另外 MySQL 是一个客户端 服务 器 结构的软件
在控制台输入的任何一个命令 ,本质上都是通过网络的方式,和服务器进行交互。
服务器 :被动接收请求的一方
客户端 :主动发起请求的一方
请求 :客户端给 服务器发的数据
响应 : 服务器给 客户端返回的数据
SQL
关于数据库的操作 (此处所提到的数据库,指的是一些逻辑上的数据集合) 一个MySQL 服务器上可以同时管理多组这样的数据集合。
如 e 宝的 商城 和库 。
-
显示 数据库
show databases;
-
创建数据库
create database 数据库名;
如果 数据库名 为 关键字可以通过反引号 (``)来创建
-
选中 数据库
use 数据库名;
-
删除 数据库(非常危险操作)
drop database 数据库名;
这里 一旦删除数据极有可能无法恢复。
接下来让我 进入 MySQL 的 第二部分
数据表操作
在学习 数据表操作 开始前,我们先来了解一mysql 管理数据的方式
看到了这里 mysql 管理的数据的方式
那么这里的 数据表又是什么呢?
这里我们 要如何 去 描述 数据表的信息呢?
描述数据表信息
这里我们 为了 描述这个数据表中列的信息,在创建表的时候,就需要指定“ 表头
”
(表头 就是一个表格 第一行的描述 信息)
如:
学生表:
学号 姓名 班级 班级
这 就叫表头 (这个表头是不是 就描述了 有 几列,每一列 是啥意思,每一列是啥类型)
注意: 这里不是 所有的数据 都是 按照 表格 的方式来组织数据的 、 比如 这里 Redis , HBase ,MongoDB 就不要求使用表格的方式组织(类似 文档 / 键值对) 称为 “非关系型数据库”
而 我们的 MySQL , Oracle ,SQL Server 都是 按照表格来组织 ,称为“关系型数据库”
下面我们在学习 MySQL 中对于数据表的操作
这里我们 先要了解一下 MySQL 中的数据类型、
MySQL 中的数据类型
数值类型
分为 整形 和 浮点型
数据类型
大小
说明
对应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
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
decimal 表示 更加精确的小数。
回忆 一下 浮点数 (double ,float) 是不是 都基于 IEEE 754 标准来 进行使用的 ,但是 基于 IEEE 754 规则表示的浮点数 , 会有 一个 很大的问题
对于某些数字来说是不能够精确的表示的 (存在误差)
如 : 1.70
实际可能 就 为 1.7000000002
这里 decimal 就能够 精确的表示 小数, 对应 在 Java中 的 BigDecimal 这个类 就实现了 对应的功能。
回忆一下 :
我们的 float 和 double 是不是 不能 直接使用 == 来比较
这里 需要 作差然后判定结构 是不是 小于预期的误差范围。
补充:
数值类型可以指定为无符号(unsigned),表示不取负数。
这里 java 相比 c 是 没有 unsigned 回忆一下 我们 c 中 是不是 踩过 这个 unsigned
如果 a = -10 b = -20 这里b - a 是 等于 -10 吗,这里 就是一个坑,这里 会溢出 ,会 是一个很大的数字
1字节(bytes)= 8bit。
对于整型类型的范围:
- 有符号范围:-2(类型字节数*8-1)到2(类型字节数*8-1)-1,如int是4字节,就
是-231到231-1- 无符号范围:0到2(类型字节数*8)-1,如int就是232-1
尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其
如此,还不如设计时,将int类型提升为bigint类型。
字符串类型
数据类型
大小
说明
对应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) 可以 根据实际需要,来指定要占用多少空间 ,这里 size 的单位是 字符(字符 可能是由多个字节构成);
blob 这里 表示二进制 数据 这里 mp3 文件,jpg文件 class … 都属于我们的 二进制文件 txt , .java .c 都是 文本文件
日期类型
这里 日期 类型的数据我们 是 可以通过 varchar 的形式来表示的.
但是 用 可以varchar 表示 但是是不好,这里 就 缺少 对日期合法性的校验,比如 2022 -03 - 100
,这里就不是 一个合法的日期。
这里就可以使用MySQL 中的 日期 类型 来创建 日期。
数据类型
大小
说明
对应java类型
datetime
8字节
范围从1000到9999年,不会进行时区的
检索及转换。
java.util.Date、
java.sql.Timestamp
timestamp
4字节
范围从1970到2038年,自动检索当前时
区并进行转换。
java.util.Date、
java.sql.Timestamp
补充 : timestamp 时间搓
时间搓 的 概念 : 以 1970 年1月 1日 0分 0秒作为基准时刻 ,来计算当前时刻和基准时刻的秒数/毫秒之差 。
了解完了MySQL 的 数据类型,那么我们就来学习一下 数据表的操作吧。
关于数据表的操作
1.创建数据表
create table 表名 (列名 类型 列名 类型 .....);
这里我们 先来创建一张 表,由 学生 id 学生 姓名, 学生成绩 组成。
进行表操作之前,要先选中数据库(use)
这里就是没有 选中数据创建表头,就会报出错误(没有选中数据库)。
这里我们就成功将这张 表创建出来了,
注意:在指定列表的时候,列名在前,类型在后.
这里相比 其他 编程语言是 有区别的 ,大部分的 都是 先类型 后面才是 变量 名.
补充 : 这里 我们 在创建表的时候,可以使用 comment
给某个列后面加上注释。
除了 使用 comment 还可使用** -- 呃呃呃
** 这里就算 注释了 呃呃
(这里 不能少了 空格, 少了 是 非法的 这里 与 java 中 的 // 类似表示 这一行就算注释了)
2.查看表
查看表 : show tables;
注: 这个 操作的前提 也是的先选中数据库(use)
这里就可以看到我们创建的 student 表了
3.查看表结构
查看某个表里面有几列,每一列都是啥类型,每一列都是啥名字 ,每一列其他补充信息。
这里通过 desc 表名;
进行操作。
desc --> describe(描述)
4.删除表
这里通过 **drop table 表名;**
来进行删除表操作
这里我们 如果在删除 student2 就会报错这里我们来看一下,眼熟 一下
了解 了 这些 SQL 操作 那么我们 来做一些练习熟悉一下他们。
SQL 练习
有一个商店的数据,记录客户及购物情况,有以下三个表组成:
商品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)
补充: 在代码中 表示 “钱” 一般 有两种方式:
1.使用 Decimal/ BigDecimal
2.使用 int(单位是 分) 这是一个常见的手段 (运算效率要比 Decimal 高很多)。
1.创建商品 goods
这里 我们 就 可以 创建 第一个 商品 create table goods(goods_id int, goods_name varchar(50), unitprice int,cataegory varchar(50), provider varchar(50));
补充 :这里 我们 如果害怕在 控制台 写错 那么我们 就可以在记事本 或 IDEA 上来 编写我们 的SQL 语句
这里我们就 可以 通过 File 创建 一个 .sql 的文件 如(test.sql) 这里就可以 编写我们的SQL 。
2.创建客户customer
这里我们就现在IDEA 上 编写 在 放到 控制台上 创建 。
这可以看到我们就创建出了 我们的客户表。
3.创建购买purchase
这里我们 的三张表就创建完成了
这里我们 还能通过 desc 加表名来查看表
这 三张表就 展现出来。
补充 : 在cmd中 复制 是 选中 加回车 才为复制, 而 Ctrl + c 表示 中断 当前的输入(一个 sql 输入 一半 ,你不想要了,Ctrl + c
就可以 重新输入了) 这里 粘贴 还是 Ctrl + v
第二部分就到此,下一部分 我们 将学习 MySQL 中的 增删查改 CURU
C 创建 U修改 R 查询 D 删除。
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦