首页 > 数据库 >Java学习 - MySQL对于数据库、表、数据类型的定义

Java学习 - MySQL对于数据库、表、数据类型的定义

时间:2024-06-16 10:03:16浏览次数:27  
标签:Java CREATE MySQL 数据类型 约束 表名 TABLE 主键 字段名

对于数据库的定义

创建库

CREATE DATABASE IF NOT EXISTS 库名
DEFAULT CHARACTER SET utf8    //设置默认字符集为utf8
COLLATE uf8_general_ci;       //不区分大小写 case insensitive

CREATE DATABASE IF NOT EXISTS 库名
DEFAULT CHARACTER SET utf8    //设置默认字符集为utf8
COLLATE uf8_general_cs;       //区分大小写 case sensitive

修改库

  • 直接修改文件夹的名称,不建议做

删除库

DROP DATABASE IF EXISTS 库名;

更改库的字符集

ALTER DATABASE 库名
CHARACTER SET gbk;

对于数据表的定义

创建表

CREATE TABLE 表名 (
    字段名 字段类型【(长度)】【约束】,
    字段名 字段类型【(长度)】【约束】,
    ...
    字段名 字段类型【(长度)】【约束】,
    字段名 字段类型【(长度)】【约束】
);

修改表

  • 修改字段名/类型/约束

    ALTER TABLE 表名
    MODIFY COLUMN 字段名 类型【(长度)】【约束】;
    
  • 添加新字段

    ALTER TABLE 表名
    ADD COLUMN 新字段名【(长度)】【约束】;
    
  • 删除字段

    ALTER TABLE 表名
    DROP COLUMN 字段名;
    
  • 修改表名

    ALTER TABLE 表名
    RENAME TO 新表名;
    

删除表

DROP TABLE IF EXISTS 表名;

表的复制

  • 仅仅复制结构

    CREATE TABLE 表名
    LIKE 目标表名;
    
  • 复制结构+数据

    # 全部复制
    CREATE TABLE 表名
    SELECT * FROM 目标表名;
    
    # 部分复制
    CREATE TABLE 表名
    SELECT 部分字段 FROM 目标表名
    WHERE 筛选条件;
    

数据类型

数值

  • 整数

    • 分类

      • Tinyint,1个字节
      • Smallint,2个字节
      • Mediumint,3个字节
      • Int,4个字节
      • Bigint,8个字节
    • 符号

      • 默认有符号
      • 设置无符号的方法,使用 UNSIGNED 关键字
      CREATE TABLE t (
          t1 INT,
          t2 INT UNSIGNED
      );
      
    • 长度

      • 长度表示最大显示宽度,当使用 zerofill 时,不够长度时,用0填空
      • 如果不配合zerofill,则整型的长度没用
    • 越界

      • 如果插入的数值超出范围,则报 out of range 异常,并插入最接近的临界值
  • 浮点数

    • Float,4个字节
    • Double,8个字节
  • 定点数

    • DECIMAL(M,D)
      • M:整数+小数的位数
      • D:小数的位数
      • M默认为10, D默认为0

字符型

  • 较短文本
    • char:固定长度,性能高,不能节约空间
    • varchar:可变长度,性能低,能节约空间
    • 长度为最大长度
  • 较长文本
    • text
  • 二进制
    • binary:类似char,存储的是二进制
    • varbinary:类似varchar,存储的是二进制
    • Blob:存储数据量大的二进制,比如视频,图片

日期型

  • date:2018-09-26
  • time:17:11:37
  • year:2018
  • datetime:2018-09-26 17:11:50,与时区无关,8个字节
  • timestamp:20180926171211,受MySQL版本影响,与时区有关,4个字节

数据约束

六大约束类型

  • 非空约束:NOT NULL
  • 默认约束:DEFAULT 值
  • 唯一约束:UNIQUE
  • 主键约束:PRIMARY KEY
  • 外键约束:FOREIGN KEY
  • 检查约束:MySQL不支持

列级约束与表级约束

  • 列级约束:约束语法都不报错,但是外键约束没有效果

  • 表级约束:支持主键约束,外键约束,唯一约束

    CREATE TABLE 表名(
        字段名 字段类型 列级约束
        字段名 字段类型
        CONSTRAINT 表级约束名 表级约束类型(字段名)
    )
    
  • 列级约束例子

    CREATE TABLE stuinfo (
        id      INT         PRIMARY KEY,                     # 主键约束
        stuName VARCHAR(20) NOT NULL,                        # 非空约束
        gender  CHAR(1)     DEFAULT 'm',                     # 默认约束
        seat    INT         UNIQUE,                          # 唯一约束
        major   INT         FOREIGN KEY REFERENCES major(id) # 外键约束,但是没有效果
    );
    
  • 表级约束例子

    CREATE TABLE stuinfo (
        id      INT         
        stuName VARCHAR(20) NOT NULL,                        # 非空约束
        gender  CHAR(1)     DEFAULT 'm',                     # 默认约束
        seat    INT,         
        major   INT,         
        
        CONSTRAINT pk PRIMARY KEY(id), # 主键约束
        CONSTRAINT uq UNIQUE(seat),    # 唯一约束
        CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id) # 外键约束
    );
    

主键约束和唯一约束的区别

约束类型保证唯一性是否允许为空允许多少个是否允许组合
主键保证不允许最多1个允许
唯一保证允许可以多个允许

外键使用注意事项

  • 外键关联的必须是Key,一般是 主键/唯一键
  • 插入数据时,先插入主表,再插入从表
  • 删除数据时,先删除从表,再删除主表

数据库表三大范式

第一范式

  • 表中的每一列的数据都是原子性的,即不可再分

第二范式

  • 满足第一范式的前提下,表中都要有主键,且每一列都与主键有关系

第三范式

  • 满足第一范式和第二范式的前提下,表中每一列与主键具有直接关系,不能是间接关系

三大范式作用

  • 数据库的三大范式是为了减少数据冗余

标签:Java,CREATE,MySQL,数据类型,约束,表名,TABLE,主键,字段名
From: https://blog.csdn.net/paofuluolijiang/article/details/139599617

相关文章

  • Java毕业设计-基于springboot开发的图书个性化推荐系统设计与实现-毕业论文(附毕设源代
    文章目录前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求/流程分析3、系统功能结构三、系统实现展示1、前台首页功能模块2、管理员功能模块3、学生功能模块四、毕设内容和源代码获取总结Java毕业设计-基于springboot开发的图书个性化推荐系统......
  • Java毕业设计-基于springboot开发的图书管理系统-毕业论文(附毕设源代码)
    文章目录前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求/流程分析3、系统功能结构三、系统实现展示1、个人中心2、管理员管理3、用户管理4、图书出版社管理5、公告类型管理6、所在书架管理7、图书类型管理8、论坛管理9、公告信息管理10、图书信息......
  • 成为MySQL DBA后,再看ORACLE数据库(十、事务与隔离级别)
    一、事务控制语句事务控制方式在ORACLE和MySQL中有着明显的不同,在ORACLE数据库中,当第一条可执行的SQL语句开始执行时,就隐性地开始了一个事务,然后继续执行随后的SQL语句,直到出现以下情况:1.commit,如果事务遇到commit语句,此前的所有更改将在数据库中永久生效;2.rollback,如果事务遇到......
  • Java高手的30k之路|面试宝典|精通跳表SkipList
    跳表SkipList跳表(SkipList)是一种数据结构,它在有序链表的基础上,通过增加多级索引来提高查找、插入和删除操作的效率。跳表的平均时间复杂度为O(logn),与平衡树(如红黑树、AVL树)相当,但实现起来更为简单。跳表的结构跳表由多层链表组成,每一层都是一个有序链表。底层(第0......
  • Java应用线上问题排查工具整理
    关于线上问题Java应用的线上问题,总结起来大概分为几类:CPU占用高,内存溢出,执行结果不对。CPU占用高引起CPU占用高的原因可能有多种,比如:代码进入死循环并发请求量大频繁FullGC打印日志太过于频繁内存溢出导致内存溢出的原因可能是:分配的Java堆空间不够,可以通过启动参数......
  • 第一百零九节 Java面向对象设计 - Java抽象类和方法
    Java面向对象设计-Java抽象类和方法Java可以定义一个类,其对象不能被创建。它的目的只是表示一个想法,这是其他类的对象共有的。这样的类称为抽象类。语法我们需要在类声明中使用 abstract 关键字来声明一个抽象类。例如,下面的代码声明一个Shape类的抽象:publicabstr......
  • 数据库MySQL——从0到1入门教程
    Q:为什么需要MySQL?A:网络服务中,我们需要存储、管理大量的数据,并确保数据的安全、实现增删改查操作的高效,因此需要一个系统用来专门管理数据,以实现上述的高性能要求,数据库管理系统应需而生八股如下:数据持久性:数据库能够持久化存储数据,确保数据在系统关闭或崩溃后依然存在......
  • Windows中搭建centos虚拟机和MySQL
    背景前一段时间,博主为了在家里搭建学习环境,想模拟一个生产环境,尝试了Windows安装WSL、Vmwareworkstationplayer安装Ubuntu、把Window删了直接装Ubuntu、把Ubuntu删了装回Windows(Windows一直无法安装到SSD,最后拆了电脑拔了机械硬盘才装成功)的多个阶段,发现还是Windows用的习惯......
  • 【JAVA开发笔记】实战演练,如何用EasyExcel导出表格,并且自定义合并单元格
    目录1.前言2.EasyExcel简介3.EasyExcel简单导出案例讲解3.1EasyExcel依赖引入3.2测试类创建3.3Excel导出实现4.EasyExcel合并单元案例讲解4.1实现自定义合并策略4.2 使用自定义合并策略5.总结1.前言项目上,需将一个列表数据导出Excel表格,并将指定列相同......
  • 《mysql必知必会》读书笔记
    信息《MySQL必知必会》福塔人民邮电出版社摘录基本概念数据库保存有组织的数据的容器(通常是一个文件或一组文件)。表某种特定类型数据的结构化清单。模式关于数据库和表的布局及特性的信息。有时,模式用作数据库的同义词。主键一列或一组列,其值可以唯一区分表中......