数据库概论-MySQL的数据表的基本操作

大家好,这次给大家带来的是我的新的专栏:数据库,数据库相对来说难度不是那么高,大家只要勤加练习、熟记语法,我相信学好数据库不是什么问题,博主会从0剖析,逐步讲解数据库的知识点,并且会举很多实例。最重要的是,博主不会采用软件,使用最原始的方式 -> 命令行来讲解,这样讲解的好处是逐个语句进行书写,不会造成读者思路跟不上的问题!

👀QQ:162196770

👀微信:PRIDE_Xu_

👀Gitee:https://gitee.com/jialebihaitao

👀上一篇博客传送门:

👀下一篇博客传送门:

👀文章专栏:

👀B站:建设中,以后会考虑在B站上讲解一些知识点等等

内容

数据表的操作

2.1 MySQL管理数据的方式

我们其实已经介绍过一遍了 , 再重新给大家介绍一下

image-20220425181659052

image-20220425181947319

注意:

不是所有的数据,都是按照表格的方式来组织数据的

Oracle、MySQL、SQL Server都是按照表格的形式来组织数据的,称为关系型数据库

Redis、HBase、MongoDB这种的都不是按照表格方式组织的(类似于 文档/键值对),称为非关系型数据库

2.2 MySQL当中的数据类型

有了数据库之后,要想真的去存储、组织数据,还需要数据表。创建表的时候就需要指定表结构,表结构中就涵盖了有哪些字段,以及每个字段的类型是什么?

数据类型一方面能够方便我们对数据进行处理 , 一方面也能够针对数据进行校验和检查 .

2.1 数值类型

数据类型大小说明对应java的类型
bit[(m)]m指定位数,默认为1二进制数,M范围从1到64,存储范围从0到2^M-1常用Boolean对应bit,此时默认是1位,即只能存0/1
tinyint1字节Byte
smallint2字节Short
int4字节Integer
bigint8字节Long
float(m,d)4字节单精度,m指定长度,d指定小数点后面的位数,会发生精度丢失Float
double(m,d)8字节双精度,m指定长度,d指定小数点后面的位数,会发生精度丢失Double
decimal(m,d)m/d最大值+2双精度,m指定长度,d表示小数点位数.精确数值BigDecimal
numeric(m,d)m/d最大值+2双精度,m指定长度,d表示小数点位数.精确数值BigDecimal
  1. 这里面的 (m,d) 实际上表示的就是总共有 m 位 , 小数点后面有 d 位

    比如 : decimal(3,1) ,满足这个条件的数字 比如 : 98.3 , 54.9

  2. decimal 比 double / float 更能精确的保存浮点数 , 因为它是通过字符串的方式来进行存储的 . 不过就是计算的时候消耗的时间更多 , 存储空间消耗的越多 . 平常用 double 就足够了 . 特别需要的时候再考虑 decimal

2.2 字符串类型

数据类型说明对应Java类型
varchar(size)可变长度字符串String
text长文本数据String
mediumtext中等长度文本数据String
BLOB二进制形式的长文本数据byte[]

说明:

  1. varchar可以根据实际需要,来指定要占用多大内存空间(size的单位是字符,不是字节,一个字符可能有多个字节构成)

    比如 : varchar(25) 代表的就是这个字段最多可以存储25个字符 , 动态的根据存储的数据长度来去自动适应空间

  2. BLOB用于表示二进制的数据

    MP3文件、jpg文件、.class文件都属于二进制文件

    txt.java.c都属于文本文件

    在 C 语言阶段 , 我们学习过文件操作

    fopen()

    rb 读方式打开二进制文件

    rt 读方式打开文本文件

  3. 一个需要记下来的小知识点

    一个字节可以表示的整数 : -128 ~ + 127

    无符号 : 0 ~ +255

    两个字节可以表示的整数 : -32768 ~ + 32767

    无符号 : 0 ~ + 65535

    四个字节可以表示的整数 : -21亿 ~ +21亿

    无符号 : 0 ~ +42亿九千万

2.3 日期类型

数据类型大小说明对应Java规则
datetime8字节范围从1000到9999年,不会进行时区的检索及转换。java.util.Date、java.sql.Timestamp
timestamp4字节范围从1970到2038年,自动检索当前时区并进行转换。java.util.Date、java.sql.Timestamp

那么有一个小问题:日期在数据库当中能不能用varchar进行存储?

当然可以,不过不太好(有现成的还用啥varchar)

如果使用varchar,就失去了对于日期正确性的校验功能了

使用datetime如果插入的数据格式不符合要求,就会直接提示咱们

推荐输入格式:2022-04-29 21:37:00

这两个数据类型,都可以存储年月日时分秒

小故事:

timestamp:意思是时间戳(以1970年1月1日0时0分0秒作为基准时刻,来计算当前时刻和基准时刻的秒数/毫秒之差~)

我们目前timestamp是4个字节,到2038年,4个字节就不够用了

之前有个千年虫事件:以前计算机表示年份只有2位,即90、91、92…年,到了2000年就完蛋了,不够存了,程序员连续加班终于把这个问题给解决掉了!这样才没出现问题。

2.3 创建表

语法:

create table 表名(列名 类型,列名 类名...);

在进行表的操作之前,要先选中数据库(use操作)

image-20220425185451851

和常见的其它编程语言不同 , SQL 中的变量是定义在名字后面的 , 我们要区分清楚 .

现在也有很多语言是这样的定义方式 , 比如 Go 语言 , Python 语言 .

创建表的时候 , 我们要明确表的结构 . 也就是需要有哪些列 每一列的数据类型 每一列叫啥名 以及相关约束等等

注意 : 在同一个数据库当中 , 不能有重名的情况 .

image-20220718105020020

2.4 查看表

语法:

show tables;//与 show databases 类似 

查看表之前,也需要先选中数据库
image-20220430120750830

2.5 查看表结构

查看某个表里面有几列,每一列都是啥类型,每一列是啥名字,以及每一列的补充信息

语法:

desc 表名;

这里面的desc其实就是describe(描述)

当然我们也可以写成这样

describe 表名;

image-20220425190352718

2.6 删除表

语法:

drop table 表名;

image-20220425202020561

注意:

删除表也是一个高危操作!!!跟数据库被删了都一样可怕!

甚至删表操作比删库操作还要可怕 !

表面上来看,删除数据库直接就玩完 . 但是我们删除了表的话 , 短时间内或者一直都不会报错 . 但是因为缺失了这个表 , 到时计算出来的数据都是错误的 , 而且排查起来也很困难 . 当前的状态其实就是 “带伤作战”

2.7 SQL当中的注释

两种方式:(推荐方式二)

方式一:创建表的时候,可以使用comment来给某个列后面加上注释

image-20220425204640836

方式二:–空格

这个是更普遍的注释方式

-- 注释

image-20220425205506853

接下来,我们来做一个小练习熬~ 很简单~~~

有一个商店的数据,记录客户及购物情况,有以下三个表组成:

  • 商品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当中,"钱"有两种表示方式

  1. 使用decimal

  2. 使用int!这个更常用一些!而且效率也比decimal高很多

    用 int 代替小数 , 这时候单位是 分 , 就相当于把小数转化成整数了

然后,我推荐大家在敲一个比如这样的容易出错的语句的时候,使用记事本敲完再复制进去,这样错误率会大大降低,而且会好更改。我个人用的是Sublime Text3。要清楚的是 , 在cmd当中,复制不再是ctrl+c,选中你想复制的内容,回车就已经复制了,ctrl+c是当你输错了不想在输入的时候,输入ctrl+c就可以了 , 终端输入也可以输入 \c

Sublime Text3传送门

具体操作如下:

image-20220425211346524

那么我有个小问题:

image-20220425212242677

这里面的数字为啥是50或者10?

其实现在我们自己日常学习的时候随便写,别太离谱就行。

等到上班的时候,这个数就是产品经理指定的了 .

产品经理的工作就是分析老板 / 用户的需求 , 调查清楚了把它交给程序员 , 程序员按照给定的标准进行设计

工作时候 , 大家都叫 产品经理 “产品”

image-20220425212638363

下面我把代码贴过来~

create table goods (
	goods_id int,
	goods_name varchar(50),
	unitprice int,
	categoory varchar(50),
	provider varchar(50) 
);

create table customer (
	customer_id int,
	name varchar(50),
	address varchar(50),
	email varchar(50),
	sex varchar(10),
	card varchar(50)
);

create table purchase (
	order_id int,
	customer_id int,
	goods_id int,
	nums int
);

最后最后,再给大家推荐一个命令行工具,我也是刚开始使用,初步体验不错。(下载不了的话去微软商店搜索windows terminal即可)

windows terminal

windows terminal中操作数据库的命令:

mysql -u root -p
  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加勒比海涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值