Java学习 - MySQL对于数据库、表、数据类型的界说

打印 上一主题 下一主题

主题 868|帖子 868|积分 2604

对于数据库的界说

创建库

  1. CREATE DATABASE IF NOT EXISTS 库名
  2. DEFAULT CHARACTER SET utf8    //设置默认字符集为utf8
  3. COLLATE uf8_general_ci;       //不区分大小写 case insensitive
  4. CREATE DATABASE IF NOT EXISTS 库名
  5. DEFAULT CHARACTER SET utf8    //设置默认字符集为utf8
  6. COLLATE uf8_general_cs;       //区分大小写 case sensitive
复制代码
修改库



  • 直接修改文件夹的名称,不发起做
删除库

  1. DROP DATABASE IF EXISTS 库名;
复制代码
更改库的字符集

  1. ALTER DATABASE 库名
  2. CHARACTER SET gbk;
复制代码
对于数据表的界说

创建表

  1. CREATE TABLE 表名 (
  2.     字段名 字段类型【(长度)】【约束】,
  3.     字段名 字段类型【(长度)】【约束】,
  4.     ...
  5.     字段名 字段类型【(长度)】【约束】,
  6.     字段名 字段类型【(长度)】【约束】
  7. );
复制代码
修改表



  • 修改字段名/类型/束缚
    1. ALTER TABLE 表名
    2. MODIFY COLUMN 字段名 类型【(长度)】【约束】;
    复制代码
  • 添加新字段
    1. ALTER TABLE 表名
    2. ADD COLUMN 新字段名【(长度)】【约束】;
    复制代码
  • 删除字段
    1. ALTER TABLE 表名
    2. DROP COLUMN 字段名;
    复制代码
  • 修改表名
    1. ALTER TABLE 表名
    2. RENAME TO 新表名;
    复制代码
删除表

  1. DROP TABLE IF EXISTS 表名;
复制代码
表的复制



  • 仅仅复制结构
    1. CREATE TABLE 表名
    2. LIKE 目标表名;
    复制代码
  • 复制结构+数据
    1. # 全部复制
    2. CREATE TABLE 表名
    3. SELECT * FROM 目标表名;
    4. # 部分复制
    5. CREATE TABLE 表名
    6. SELECT 部分字段 FROM 目标表名
    7. WHERE 筛选条件;
    复制代码
数据类型

数值



  • 整数

    • 分类

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

    • 符号

      • 默认有符号
      • 设置无符号的方法,使用 UNSIGNED 关键字
      1. CREATE TABLE t (
      2.     t1 INT,
      3.     t2 INT UNSIGNED
      4. );
      复制代码

    • 长度

      • 长度表示最大显示宽度,当使用 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不支持
列级束缚与表级束缚



  • 列级束缚:束缚语法都不报错,但是外键束缚没有用果
  • 表级束缚:支持主键束缚,外键束缚,唯一束缚
    1. CREATE TABLE 表名(
    2.     字段名 字段类型 列级约束
    3.     字段名 字段类型
    4.     CONSTRAINT 表级约束名 表级约束类型(字段名)
    5. )
    复制代码
  • 列级束缚例子
    1. CREATE TABLE stuinfo (
    2.     id      INT         PRIMARY KEY,                     # 主键约束
    3.     stuName VARCHAR(20) NOT NULL,                        # 非空约束
    4.     gender  CHAR(1)     DEFAULT 'm',                     # 默认约束
    5.     seat    INT         UNIQUE,                          # 唯一约束
    6.     major   INT         FOREIGN KEY REFERENCES major(id) # 外键约束,但是没有效果
    7. );
    复制代码
  • 表级束缚例子
    1. CREATE TABLE stuinfo (
    2.     id      INT         
    3.     stuName VARCHAR(20) NOT NULL,                        # 非空约束
    4.     gender  CHAR(1)     DEFAULT 'm',                     # 默认约束
    5.     seat    INT,         
    6.     major   INT,         
    7.    
    8.     CONSTRAINT pk PRIMARY KEY(id), # 主键约束
    9.     CONSTRAINT uq UNIQUE(seat),    # 唯一约束
    10.     CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id) # 外键约束
    11. );
    复制代码
主键束缚和唯一束缚的区别

束缚类型包管唯一性是否允许为空允很多少个是否允许组合主键包管不允许最多1个允许唯一包管允许可以多个允许 外键使用注意事项



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

第一范式



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



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



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



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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

飞不高

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表