• 数据库概论-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 表名(列名 类型,列名 类名...);
    
    • 1

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

    image-20220425185451851

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

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

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

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

    image-20220718105020020

    2.4 查看表

    语法:

    show tables;//与 show databases 类似 
    
    • 1

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

    2.5 查看表结构

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

    语法:

    desc 表名;
    
    • 1

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

    当然我们也可以写成这样

    describe 表名;
    
    • 1

    image-20220425190352718

    2.6 删除表

    语法:

    drop table 表名;
    
    • 1

    image-20220425202020561

    注意:

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

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

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

    2.7 SQL当中的注释

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

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

    image-20220425204640836

    方式二:–空格

    这个是更普遍的注释方式

    -- 注释
    
    • 1

    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
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

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

    windows terminal

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

    mysql -u root -p
    
    • 1
  • 相关阅读:
    ABAP VOFM定价过程的例程创建
    数学建模:回归分析
    DC/DC开关电源学习笔记(七)低压大电流DC/DC变换技术
    java计算机毕业设计恒美服饰原材料采购预约配送系统MyBatis+系统+LW文档+源码+调试部署
    构造与析构
    Linux docker(02) docker实战-最简构建编译系统
    让STM32CubeMX带你飞,菜鸟秒变STM32高手
    【Call for papers】CSFW-2023(CCF-B/网络与信息安全/2023年2月3日截稿)
    【牛客刷题-SQL大厂面试真题】NO1.某音短视频
    Spring注解的使用
  • 原文地址:https://blog.csdn.net/m0_53117341/article/details/126023850