MySQL (2)

文章目录

  • MySQL (2)
  • 前言:
  • 数据表操作
    • 描述数据表信息
  • MySQL 中的数据类型
    • 数值类型
    • 字符串类型
    • 日期类型
  • 关于数据表的操作
    • 1.创建数据表
    • 2.查看表
    • 3.查看表结构
    • 4.删除表
  • SQL 练习
    • 1.创建商品 goods
    • 2.创建客户customer
    • 3.创建购买purchase

MySQL (2)

前言:

在 进入MySQL 第二部分开始,我们 回忆一下上文的内容.

数据库 是 一类软件 往往 把数据存储在硬盘上(持久化储存) ,方便进行 增删查改.

另外 MySQL 是一个客户端 服务 器 结构的软件

在控制台输入的任何一个命令 ,本质上都是通过网络的方式,和服务器进行交互。

服务器 :被动接收请求的一方

客户端 :主动发起请求的一方

请求 :客户端给 服务器发的数据

响应 : 服务器给 客户端返回的数据

SQL

关于数据库的操作 (此处所提到的数据库,指的是一些逻辑上的数据集合) 一个MySQL 服务器上可以同时管理多组这样的数据集合。

如 e 宝的 商城 和库 。

  1. 显示 数据库

    show databases;

  2. 创建数据库

    create database 数据库名;

    如果 数据库名 为 关键字可以通过反引号 (``)来创建

  3. 选中 数据库

    use 数据库名;

  4. 删除 数据库(非常危险操作)

    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。
对于整型类型的范围:

  1. 有符号范围:-2(类型字节数*8-1)到2(类型字节数*8-1)-1,如int是4字节,就
    是-231到231-1
  2. 无符号范围: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开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

你可能感兴趣的:(面试,学习路线,阿里巴巴,android,前端,后端)