• MySQL数据库和表的基本操作


    在这里插入图片描述

    一、数据库的基础知识

    背景知识

    MySQL是一个客户端服务器结构的程序

    主动发送数据的这一方,客户端(client)
    被动接受数据的这一方,服务器(server)
    客户端给服务器发送的数据叫做: 请求(request)
    服务器给客户端发送的数据叫做: 响应(response)

    客户端和服务器之间是通过网络进行通信的
    服务器是存储数据的主体(数据是存储在主机的硬盘上的)
    在这里插入图片描述
    服务器当中存放多个数据库,每个数据库当中又可以存放多张表,每张表中又存储各自的数据
    数据库能够正常使用的前提条件是客户端与服务器是建立连接的

    数据库的基本操作

    1.显示所有数据库

    show databases;
    
    • 1

    这里databases后面是加s的,因为是所有数据库
    在这里插入图片描述
    2.创建数据库

    create database [if not exists] DB_name [charset charset_name] [ collate collate_name]
    
    • 1

    这里中括号所包含的都是可加可不加的,自己按具体情况选择。
    在这里插入图片描述
    这里我们看到Query OK,证明我们成功创建了一个名为test的数据库。
    在这里插入图片描述
    当我们再次创建test数据库时,系统报了一个错误(database exists),证明这个数据库已经存在。这时候我们就可以加一个判断( if not exists)
    在这里插入图片描述
    这里我们我们再次创建这个重复的数据库,发现系统并没有报错,而是告诉了一个警告。我们可以去看一下这个警告信息
    在这里插入图片描述
    这里我们可以发现报的是(database exists)的警告。这里大家就要注意了,错误和警告不是一个重量级的,在适当的时候我们可以加上(if not exists)来避免这些错误的出现。
    CHARACTER SET: 指定数据库采用的字符集
    字符集指的是某个范围字符的编码规则

    1.比如utf8字符集对于所有中文汉字采用3个字节来表示(编码),所以我们称utf8为一种字符集。
    这里的范围就是指所有的中文汉字
    编码规则就是指 都采用3个字节来表示一个汉字
    2.比如ASCII字符集对于所有英文字母采用1个字节来表示(编码),所以我们称ASCII为一种字符集。
    这里的范围就是指所有的英文字母
    编码规则就是指 都采用1个字节来表示一个字母

    Mysql中的utf8是伪utf8,当有些不满足时,可以替换为更全面的utf8bm4
    在这里插入图片描述
    COLLATE通常是和数据编码(CHARSET)相关的,一般来说每种CHARSET都有多种它所支持的COLLATE,并且每种CHARSET都指定一种COLLATE为默认值。例如Latin1编码的默认COLLATE为latin1_swedish_ci,GBK编码的默认COLLATE为gbk_chinese_ci,utf8mb4编码的默认值为utf8mb4_general_ci。
    在这里插入图片描述
    3.使用数据库
    当我们要对一个数据库进行操作时,那么这时我们得使用这个数据库。

    use DB_name;
    
    • 1

    在这里插入图片描述

    4.删除数据库
    删除数据库是一件十分危险的事情,大家在进行删库的时候一定要慎重再慎重

    drop database DB_name;
    
    • 1

    在这里插入图片描述
    但是如果删的库,服务器中不存在,那么就会报错误
    这时我们可以在数据库名前面加一判断

    drop database [if exists] test;
    
    • 1

    这时我们可以发现,即使该数据库服务器中不存在,只是报了一个警告
    在这里插入图片描述
    在这里插入图片描述

    二、数据类型

    我们在学习MySQL数据类型时,会发现有些数据类型设计的并不好,和java有一些区别,这是因为MySQL这里语言比较久远了,那时还没有Java这样语言,那个时候能够设计出来这样已经很厉害啦。

    字符串类型

    数据类型大小说明对应java类型
    varchar(size)0 - 65535 字节可变长度字符串String
    text0 - 65535 字节长文本数据String
    mediumtext0 -16777215 字节中等长度文本数据String
    blod0 - 65535 字节二进制长文本数据byte[ ]

    varchar(size):最常用的字符串的类型,带一个参数参数,这里表示存储的最大限度,varchar(50)表示这列最多存50个字符,至于这个size设置为多少,根据实际需求来制定,并不是size订多少就直接分配多少,而是动态分配,但是最大不会超过size。
    text,mediumtext:适用于比较长的字符串,比较存储一篇长文等,应用较少
    bold:主要是用来存储二进制的数据。

    数值类型

    数据类型大小说明对应java类型
    bit(M)M指定位数,默认为1二进制数常用boolean对应bit
    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

    数值类型可以指定为无符号(unsigned),不去取负数。
    尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其如此,还不如设计时,将int类型提升为bigint类型。
    float,double:并不适合用来需要精确存储的数据,因为IEEE 754标准,数据在内存中的存储就决定了无法精确表示数据。
    decimal: 可以精确的表示浮点数,因为它牺牲了空间和运算速度,换来的是更精确的表示方法。
    最常用的数值类型: int,double,decimal

    日期类型

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

    在表中插入时的类型为: ‘xxxx-xx-xx xx:xx:xx’
    timestamp: 这个类型有点危险,将在2038年耗尽

    三、表的基本操作

    在进行任何数据库的表时,都需要先使用该数据库

    use DB_name;
    
    • 1

    创建表

    create table table_name(
    filed1 type [comment xx},
    filed2 type [comment xx},
    filed3 type [comment xx}
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5

    comment为可增加解释字段
    在这里我们以创建一个学生表为例:

     create table student(
         id int comment '学号',
         name varchar(50),
         age int
         );
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    查看表结构

    desc table_name;
    
    • 1

    desc的全拼为describle.
    在这里插入图片描述
    这里我们可以查看表的结构。

    查看所有表

    可以查看当前数据库下的所有表

    show tables;
    
    • 1

    在这里插入图片描述
    因为当前数据库我们只创建了一个student的表。

    删除表

    删除表结构和删除数据库操作都是非常危险的使用的时候都要小心再小心

    drop table table_name;
    
    • 1

    在这里插入图片描述

  • 相关阅读:
    CAP项目集成带身份和证书验证的MongoDB
    理解 dlopen manual
    免费和开源的机器翻译软件LibreTranslate
    【JX-18A/1信号继电器】
    kotlin根据文件的filePath转化为uri
    对抗攻击方法一览
    记一次诡异的Cannot find declaration to go to,Cannot resolve method
    【嵌入式软件C编程】主函数free子函数malloc地址的两种方式以及注意事项
    答对这3个面试问题,薪资直涨20K
    Nginx配置虚拟主机
  • 原文地址:https://blog.csdn.net/buhuisuanfa/article/details/127713348