• MySQL数据库——第一节 — MySQL数据库基础


    本节重点
    在这里插入图片描述

    数据库介绍

    什么是数据库

    在这里插入图片描述

    数据库分类

    数据库大体可以分为 关系型数据库 和 非关系型数据库
    关系型数据库(RDBMS):对于内部的数据组织有严格要求
    是指采用了关系模型来组织数据的数据库。 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
    基于标准的SQL,只是内部一些实现有区别。常用的关系型数据库如:

    1. Oracle:甲骨文产品,适合大型项目,适用于做复杂的业务逻辑,如ERP、OA等企业信息系
      统。收费。
    2. MySQL:属于甲骨文,不适合做复杂的业务。开源免费。
    3. SQL Server:微软的产品,安装部署在windows server上,适用于中大型项目。收费。

    非关系型数据库:
    (了解)不规定基于SQL实现。现在更多是指NoSQL数据库,如:

    1. 基于键值对(Key-Value):如 memcached、redis
    2. 基于文档型:如 mongodb
    3. 基于列族:如 hbase
    4. 基于图型:如 neo4j

    关系型数据库与非关系型数据库的 区别:在这里插入图片描述

    数据库 和 数据结构 的区别

    在这里插入图片描述

    客户端(发送请求)服务器(进行响应)

    在这里插入图片描述

    服务器的概念

    在这里插入图片描述

    内存和外存的区别(空间,速度,成本,断电)

    在这里插入图片描述

    数据库的结构

    在这里插入图片描述
    在这里插入图片描述

    SQL分类

    1. DDL数据定义语言,用来维护存储数据的结构
      代表指令: create, drop, alter
    2. DML数据操纵语言,用来对数据进行操作
      代表指令: insert,delete,update
      DML中又单独分了一个DQL,数据查询语言,代表指令: select
    3. DCL数据控制语言,主要负责权限管理和事务
      代表指令: grant,revoke,commit

    以上SQL我们主要会在后面学习DDL和DML的操作

    1. 数据库的操作

    1.1 显示当前的数据库

    SHOW DATABASES;
    
    • 1

    注意事项

    在这里插入图片描述
    在这里插入图片描述

    1.2 创建数据库

    CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, 
    create_specification] ...]
    
    create_specification:
     [DEFAULT] CHARACTER SET charset_name
     [DEFAULT] COLLATE collation_name
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    说明:

    1. 大写的表示关键字
    2. [] 是可选项(IF NOT EXISTS 在批量操作时,可以避免创建重复数据库而报错,就是避免报错)
    3. CHARACTER SET: 指定数据库采用的字符集
    4. COLLATE: 指定数据库字符集的校验规则

    示例:

    1. 创建名为 db_test1 的数据库
    CREATE DATABASE db_test1;
    
    • 1
    1. 如果系统没有 db_test2 的数据库,则创建一个名叫 db_test2 的数据库,如果有则不创建
    CREATE DATABASE IF NOT EXISTS db_test2;
    
    • 1
    1. 如果系统没有 db_test 的数据库,则创建一个使用utf8mb4字符集的 db_test 数据库,如果有则不创建
    CREATE DATABASE IF NOT EXISTS db_test CHARACTER SET utf8mb4;
    
    • 1

    注意事项

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    1.3 使用数据库

    use 数据库名;
    
    • 1

    注意事项

    在这里插入图片描述

    1.4 删除数据库

    语法:

    DROP DATABASE [IF EXISTS] db_name;
    
    • 1

    说明:

    数据库删除以后,内部看不到对应的数据库,里边的表和数据全部被删除

    drop database if exists db_test1;
    drop database if exists db_test2;
    
    • 1
    • 2

    注意事项

    在这里插入图片描述

    2. 常用数据类型

    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字节Double
    DECIMAL(M,D)M/D最大值+2双精度,M指定长度,D表示小数点位数。精确数值BigDecimal
    DECIMAL(M,D)M/D最大值+2和DECIMAL一样BigDecimal

    扩展资料
    在这里插入图片描述
    数值类型可以指定为无符号(unsigned),表示不取负数。
    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类型。

    2.2 字符串类型

    数据类型大小说明对应java类型
    VARCHAR (SIZE)0-65,535字节可变长度字符串String
    TEXT0-65,535字节长文本数据String
    MEDIUMTEXT0-16 777 215字节中等长度文本数据String
    BLOB0-65,535字节二进制形式的长文本数据byte[]

    2.3 日期类型

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

    常用类型

    在这里插入图片描述

    3. 表的操作

    需要操作数据库中的表时,需要先使用该数据库:

    use db_test;
    
    • 1

    3.1 查看表结构

    desc 表名;
    
    • 1

    在这里插入图片描述

    3.2 创建表

    语法:

    CREATE TABLE table_name (
     field1 datatype,
     field2 datatype,
     field3 datatype
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5

    可以使用comment增加字段说明
    示例:

    create table stu_test (
       id int,
       name varchar(20) comment '姓名',
       password varchar(50) comment '密码',
       age int,
       sex varchar(1),
       birthday timestamp,
       amout decimal(13,2),
       resume text
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    3.3 查看当前数据库 的表

    在这里插入图片描述

    3.4 删除表

    语法格式

    DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
    
    • 1

    示例:

    -- 删除 stu_test 表
    drop table stu_test;
    -- 如果存在 stu_test 表,则删除 stu_test 表
    drop table if exists stu_test;
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    4. 内容重点总结

    在这里插入图片描述在这里插入图片描述

    操作数据库:

    -- 显示
    show databases;
    -- 创建
    create database xxx;
    -- 使用
    use xxx;
    -- 删除
    drop database xxx;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    常用数据类型:在这里插入图片描述

    操作表:

    -- 查看
    show;
    -- 创建
    create table 表名(
     字段1 类型1,
     字段2 类型2,
     ...
    );
    -- 删除
    drop talbe 表名;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    5. 作业

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

    1. 商品goods(商品编号goods_id,商品名goods_name, 单价unitprice, 商品类别category, 供
      应商provider)
    2. 客户customer(客户号customer_id,姓名name,住址address,邮箱email,性别sex,身份证
      card_id)
    3. 购买purchase(购买订单号order_id,客户号customer_id,商品号goods_id,购买数量nums)

    SQL:

    -- 创建数据库(同时设置 字符串为utf8)
    create database if not exists bit32mall default character set utf8 ;
    
    -- 选择数据库
    use bit32mall;
    -- 创建数据库表
    -- 商品
    create table if not exists goods
    (
       goods_id  int comment '商品编号',
       goods_name varchar(32) comment '商品名称',
       unitprice  int comment '单价,单位分',
       category  varchar(12) comment '商品分类',
       provider  varchar(64) comment '供应商名称'
    );
    
    -- 客户
    create table if not exists customer
    (
       customer_id  int comment '客户编号',
       name varchar(32) comment '客户姓名',
       address  varchar(256) comment '客户地址',
       email  varchar(64) comment '电子邮箱',
       sex bit comment '性别',
       card_id varchar(18) comment '身份证'
    );
    -- 购买
    create table if not exists purchase
    (
       order_id  int comment '订单号',
       customer_id int comment '客户编号',
       goods_id  int comment '商品编号', 
       nums  int comment '购买数量'
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
  • 相关阅读:
    leetcode:100相同的数
    Valkyrie网络测试仪的使用技巧100例--No.000 目录篇
    【Leetcode】212.单词搜索II(Hard)
    【LeetCode热题100】--73.矩阵置零
    【学生个人网页设计作品】使用HMTL制作一个超好看的保护海豚动物网页
    面向对象高级
    2022ICPC 网络赛第二场 F Infinity Tree
    zookeeper+kafka消息队列群集部署
    数据库安全策略与实施措施
    关于content-type的理解
  • 原文地址:https://blog.csdn.net/m0_63571404/article/details/126368496