首页 > 数据库 >MySQL

MySQL

时间:2024-10-01 16:33:42浏览次数:1  
标签:java 字节 int 数据库 MySQL create

MySQL

1. 前情提要

MySQL是一个 数据库软件

MySQL 是一个 “客户端-服务器”结构的软件

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

服务器(Server):被动接受请求的一方

他们是通过网络进行通信的

客户端给服务器发起的数据 称为 请求(Request)

服务器给客户端返回的数据 称为 响应(Response)

MySQL服务器是真正的本体,负责保存和管理数据

分布式?一台机器可以处理的数据是有限的

内存和硬盘的区别

内存反应速度快 比硬盘快 几千倍左右

内存成本高空间小

硬盘成本低空间大

以上都是相对而言的

MySQL 存储的内存是存储在硬盘中的 持久化存储 (相对于内存)

存储在内存中的数据是 易失的 (程序重启/掉电 就会丢失)

线上数据库/生产环境数据库 --------> 被用户访问的、真是信息的用户信息

线下数据库 -------->

对重要资料进行备份

2. MySQL的操作

SQL语言:大小写不敏感的

  1. 创建数据库

    语法:

    CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, 
    create_specification] ...]
    
    create_specification:
     [DEFAULT] CHARACTER SET charset_name
     [DEFAULT] COLLATE collation_name
    

    说明:

    • 大写表示关键字
    • [] 是 可选项
    • CHARACTER SET:指定数据库采用的字符集
    • COLLATE:指定数据库字符集的校验规则

    当我们创建数据库没有指定字符集和校验规则的时候 ,

    系统默认的字符集是 utf8

    校验规则是:utf8_general_ci

    实例:

    1. 创建名为 java109 的数据库

    create database 数据库名;

    create database java109;
    

    单词单词之间 空格隔开

    create 、database 都是 SQL语言的关键词

    1. 如果存在 名为 java109 的数据库则不创建 (用途 : 避免MySQL 报错 方便批量执行)
    create database if not exists java109;
    

    实际工作中,把一系列的sql写到一个文件中批量执行,如果出现了一条报错 后面的都不会执行

    1. 创建数据库的时候可以手动指令字符集

      character set 字符集/ charset 字符集

      create database if not exists java109 character set utf8mb4;
      

    咱需要在数据库中保存中文,必须要在创建数据库的时候,手动指定编码方式为支持中文的编码:GBK,UTF8

    一个汉字占几个字节?

    不同的字符集,不同的编码方式下,汉字占的字节不一样

    gbk中 汉字占 2 个字节

    utf8中 一个汉字通常的 3 个字节

    unicode 是给 一个字符进行编码 无法给字符串进行编码

    utf8 是 基于 unicode 演化出的 字符串编码的版本

    mySQL 的 utf8 是一个残本 不是完全体的 少了一些 emoji 表情

    建议使用 utf8mb4 有 emoji 表情

  2. 查看数据库

    show databases;
    
  3. 选择数据库

    use 数据库名;
    

    针对表进行增删改查

    表是从属于 数据库的

    要针对操作,就需要先把哪个数据库的表这个事情,指定清楚

  4. 删除数据库

    语法:

    drop database [if exists] db_test1;
    

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

    非常危险 的操作

3. 数据表的操作

3.1 数据库中的数据类型

数据类型 大小 说明 对应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(M,D) 4字节 单精度,M指定长度,D指定 小数位数。会发生精度丢失 Float
double(M,D) 8字节 Double
decimal(M,D) M/D最大值+2 精度高,但是同时牺牲了时间和空间,运算变慢 , 占用空间更多 BigDecimal
numeric(M,D) M/D最大值+2 BigDecimal

一起说明一下(M,D)

()用来描述精度

M 表示小数长度 包括小数点前

D 表示小数点后的位数

这里的 double 和 float 跟 java类似

都是 IEEE754 标准浮点数

会发生精度丢失 存在误差

3.2 字符串类型

数据类型 大小 说明 java类型
varchar(size) 0-65,535字节 可变长度字符串 String
text 0-65,535字节(64K) 长文本数据 String
mediumtext 0-16 777 215字节 中等长度文本数据 String
blob 0-65,535字节 二进制形式的长文本数据 byte[]
  1. varchar(size) 这里的 size 的意思是 存储空间

    但是注意

    当你写了 size 为10 他不是立刻给你10 的空间 而是先给你一部分的 如果不够 自动扩容 但是最大不超过10

  2. blob 是 存储二进制数据

    • 文本数据存储的都是字符,这些字符是可以在码表中对应的码中找到的
    • 在码表上查不到的,就是二进制数据
    • 图片,音乐,视频 都属于 二进制数据
  3. 一般很少会 在数据库的 某一列中 存储特别大的数据(几十M,几百M)的数据

    这么做会 大大影响到 数据库的 增删改查的效率

  4. 实际开发中如果需要保存图片,一般都是把图片放在专门的母驴中让数据库保存 图片路径

3.3 日期类型

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

上述类型中 只需要掌握:

  1. int
  2. long
  3. double
  4. decimal
  5. varchar
  6. datetime

3.4 表操作

针对数据表的操作 前提:选中数据库 use db_test

  1. 创建表

    语法:create table (列名 类型、列名、类型);

    create table table_name(field1 datatype);
    
    1. 如果确实想让表名和列名 和关键字一样 可以用 反引号`来表明、列名 引起来
    2. 这里注意 类型在 列名后面 跟 java不一样

    image-20240929102959918

    这里创建了一个 int 类型的 学号 以及 一个 name 的 最多存放 20 个 字符的 字符串

    0.03 sec 是 用了0.03 second (挺慢的时间)///

    mySQL 这样的数据库,性能是短板

  2. 查看数据库 中的所有表

    语法:

    show tables;
    

    image-20240929125322044

  3. 查看指定表的结构

    语法:

    desc student;//desc是 describe描述的缩写
    

    image-20240929125252437

    • Field:字段

    • Type:类型

      这里有要注意的点:

      int(11) 这里的 11 表示的是显示宽度(显示这个int类型的时候,最多是占据11个字符的宽度 和 存储时候的容量无关) int是 四个字节

    • Null 空值

      表格中的这个格子 是没填的

      这里的 YES 的意思是 这里允许是空的

      所以这里 Null 的意思就是 是否可以为空

    • Key 索引的类型

    • Default 默认值

    • Extra 扩充

  4. 删除表

    语法

    drop table [if exists] tbl_name;
    

课后作业

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 '供应商名称'
);

这里要注意看一个点 这里的单价 是利用了 int 数据 没有使用 decimal 数据

原因是 decimal数据虽然精度很高但是有致命缺陷就是 效率很低

所以这里利用了 int 数据

将钱 化为单位 分 来运算 比如

0.5元 = 50分

标签:java,字节,int,数据库,MySQL,create
From: https://www.cnblogs.com/ljy2003/p/18442950

相关文章

  • 【MySQL】MySQL 数据库主从复制详解
    目录1.基本概念1.1主从架构1.2复制类型2.工作原理2.1复制过程2.2主要组件3.配置步骤3.1准备工作3.2在主服务器上配置3.3在从服务器上配置4.监控和维护4.1监控复制状态4.2处理复制延迟4.3故障恢复5.备份策略5.1逻辑备份与物理备份5.2增量备份6.使......
  • MySQL数据库用户权限控制的实现方法
            控制用户权限在任何数据库管理系统中都是一个重要的需求。合理的权限管理能够保障数据的安全性和完整性。下面我们将讨论如何使用数据库来控制用户的权限,尤其是对于MySQL数据库的具体实现。1.概述权限控制通常涉及到以下几个方面:用户角色:定义不同的用户角......
  • Java项目实战II基于Java+Spring Boot+MySQL的大创管理系统(源码+数据库+文档)
    目录一、前言二、技术介绍三、系统实现四、文档参考五、核心代码六、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者一、前言在当前创新创业氛围浓厚的背景下,大学生创新创业项目(简称“大创”)如雨后春笋般涌现,为校园内外注入了无限活力。然而,项目......
  • Java项目实战II基于Java+Spring Boot+MySQL的免税商品优选购物商城(源码+数据库+文档)
    目录一、前言二、技术介绍三、系统实现四、文档参考五、核心代码六、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者一、前言随着全球贸易的日益繁荣和消费者需求的多样化,免税商品购物已成为众多旅行者和消费者的热门选择。为了提供一个更加便捷......
  • 【编程小白必看】MySQL 聚合函数操作秘籍一文全掌握
    【编程小白必看】MySQL聚合函数操作秘籍......
  • MySql学习笔记:什么是数据库?
    数据库的概念:         数据库(Database),简而言之可视为数字化的文件柜,是一个长期储存在计算机内有组织的、统一管理的数据集合,用于存储和管理大量相关信息。        数据库是一个按数据的结构来存储和管理数据的计算机系统,也就是说,数据库通常有两方面含义:......
  • 【深入浅出MySQL】「性能调优」高性能查询优化MySQL的SQL语句编写
    总体优化大纲(1)优化查询性能:通过索引降低全表扫描频率提升数据库查询性能的途径时,一个关键的战略就是降低全表扫描的频次。因为全表扫描往往会消耗显著的计算资源,从而导致查询过程变得迟缓且效率低下,为了有效地提高查询的响应速度和整体性能。优化方向那些在where筛选条件和orderby......
  • 搞懂MySQL 子查询,事务,权限并附加MySQL实战
    摘要:    本文主要用来讲解和介绍MySQL数据库中有关子查询,事务,权限等部分的内容,并附加了场景模拟和实战练习。用于快速掌握和理解子查询,事务,权限这些部分的语法和知识点。1.子查询子查询:一个sql语句嵌套了另一个或者多个查询语句。1.1子查询的四种结果标量子查询:返......
  • MySQL之多表关系篇与多表查询篇
    学习前思路拆解:1.理解数据为什么要拆表存储2.明白多表有几种数据关系3.掌握表关系限制的语法并实现4.掌握多表查询语法和练习数据库多表关系1.为什么要拆表存储数据?因为将数据全部存储在一个表中,容易出现数据冗余。例子:学生表和学生成绩表不拆表存储:拆表存储: ......
  • MySQL之数据表,数据类型,表约束类型的指令讲解和练习
        本篇博客主要用来记录和分享本人学习MySQL数据库的基本操作指令的笔记和心得,包括数据表操作、数据管理、数据类型的讲解以及表的约束。通过实际的示例和注意事项,帮助大家更好地理解和应用这些知识。一、数据表操作指令1.创建数据表使用CREATETABLE指令可以创......