MySQL建库建表


一、建表

1、数据类型

(1)数值类型

整数类型 字节 范围 用途
tinyint 1 -128~127 很小的整数
smallint 2 -32768~32767
mediumint 24位 -8388608~8388607
int 32位 -2147483648~2147483647
bigint 64位 ±9.22*10的18次方
浮点数类型 字节 说明
float 4 单精度
double 8 双精度
decimal 用于金钱,不会出现精度损失

(2)字符类型

类型 大小 用途
CHAR 0-255 bytes 定长字符串
VARCHAR 0-65535 bytes 变长字符串
TEXT 0-65 535 bytes 长文本数据
MEDIUMTEXT 0-16 777 215 bytes 中等长度文本数据
LONGTEXT 0-4 294 967 295 bytes 极大文本数据

charvarchar区别

写法 M的意思 特点 空间的耗费 效率
char(M) 最大的字符数,可省略,默认为1 固定长度的字符 比较耗费
varchar(M) 最大的字符数,不可以省略 可变长度的字符 比较节省

(3)日期类型

类型 字节 范围 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 ‘-838:59:59’/‘838:59:59’ HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01/9999-12-31 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4 1970-2038 YYYYMMDD HHMMSS 混合日期和时间值,时间戳

(4)二进制类型

类型 大小 用途
BLOB 0-65 535 bytes 二进制大对象(图片,音视频)
MEDIUMBLOB 0-16 777 215 bytes 二进制形式
LONGBLOB 0-4 294 967 295 bytes 二进制形式的极大对象

2、六大约束

USE students;
DROP TABLE stuinfo;
CREATE TABLE stuinfo(
    id INT PRIMARY KEY,#主键
    stuName VARCHAR(20) NOT NULL UNIQUE,#非空
    gender CHAR(1) CHECK(gender='男' OR gender ='女'),#检查(mysql不支持)
    seat INT UNIQUE,#唯一
    age INT DEFAULT  18,#默认约束
    majorId INT REFERENCES major(id)#外键

);
NOT NULL:非空,用于保证该字段的值不能为空
比如姓名、学号等
DEFAULT:默认,用于保证该字段有默认值
比如性别
PRIMARY KEY:主键,用于保证该字段的值具有唯一性,并且非空
比如学号、员工编号等
UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空
比如座位号
CHECK:检查约束【mysql中不支持】
比如年龄、性别
FOREIGN KEY:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值
在从表添加外键约束,用于引用主表中某列的值
比如学生表的专业编号,员工表的部门编号,员工表的工种编号

约束的添加分类:
    列级约束:
        六大约束语法上都支持,但外键约束没有效果

    表级约束:

        除了非空、默认,其他的都支持


主键和唯一的大对比:

        保证唯一性  是否允许为空    一个表中可以有多少个   是否允许组合
    主键    √        ×        至多有1个           √,但不推荐
    唯一    √        √        可以有多个          √,但不推荐
外键:
    1、要求在从表设置外键关系
    2、从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求
    3、主表的关联列必须是一个key(一般是主键或唯一)
    4、插入数据时,先插入主表,再插入从表
    删除数据时,先删除从表,再删除主表

二、存储引擎

对比项 MyISAM InnoDB
主外键 不支持 支持
事务 不支持 支持
行表锁 表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作 行锁,操作时只锁某一行,不对其它行有影响,适合高并发的操作
缓存 只缓存索引,不缓存真实数据 不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响表空间
表空间
关注点 性能 事务
默认安装 Y Y
用户表默认使用 N Y
自带系统表使用 Y N

  目录