Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > mysql数据类型与表约束

MySQL数据库之数据类型与表约束

作者:澪贰

在MySQL数据库中,数据类型和表约束是非常重要的概念,它们帮助确保数据的完整性、准确性和安全性,下面我将分别介绍MySQL中的数据类型和表约束,感兴趣的朋友一起看看吧

MySQL 设计表结构时,数据类型选得对、约束用得好,表结构就稳了一半。这篇文章把「数据类型」和「表约束」两大核心知识点讲透

1.MySQL 数据类型

MySQL 数据类型主要分四大类:数值类型、字符串类型、日期时间类型、枚举/集合类型

1.1 数值类型

最常用: TINYINTINTBIGINTFLOATDECIMAL

整数类型

-- 无符号 tinyint(0~255)
create table tt2(num tinyint unsigned);

小数类型

-- 高精度小数,推荐用 decimal
create table tt8(
    salary float(10,8), 
    salary2 decimal(10,8)
);

BIT 类型

create table tt5(gender bit(1)); -- 只能存 0 或 1

1.2 字符串类型

CHAR(size)

name char(32); -- 永远占 32 字符空间

VARCHAR(size)

name varchar(60); -- 变长,节省空间

CHAR vs VARCHAR 怎么选?

1.3 日期时间类型

create table birthday (
    t1 date, 
    t2 datetime, 
    t3 timestamp
);

1.4 ENUM 与 SET(单选/多选)

create table votes(
    username varchar(30),
    hobby set('登山','游泳','篮球'),
    gender enum('男','女')
);

查询 SET 必须用 find_in_set

select * from votes where find_in_set('登山', hobby);

2.MySQL 表约束

约束 = 保证数据合法、不乱、不重复、不空。

2.1 NOT NULL 非空

字段不允许为 NULL业务字段强烈建议加

create table myclass(
    class_name varchar(20) not null,
    class_room varchar(10) not null
);

2.2 DEFAULT 默认值

插入时不填则自动用默认值。

age tinyint unsigned default 0,
sex char(2) default '男'

2.3 COMMENT 字段注释

必加!方便维护,通过 show create table 表名\G 可以看到该字段。

name varchar(20) not null comment '用户姓名';

2.4 ZEROFILL 补零

数字不足长度时前面补 0。

id int(5) unsigned zerofill;
-- 1 → 00001

2.5 PRIMARY KEY 主键

id int unsigned primary key auto_increment

复合主键

create table tt14(
id int unsigned,
course char(10) comment '课程代码',
score tinyint unsigned default 60 comment '成绩',
primary key(id, course) -- id和course为复合主键
);

如果有多个字段作为主键,可以使用复合主键,多个字段组合起来必须唯一

当表创建好以后但是没有主键的时候,可以再次追加主键

alter table 表名 add primary key(字段列表)

删除主键

alter table 表名 drop primary key;

2.6 AUTO_INCREMENT 自增长

配合主键使用,自动 +1,自增长字段必须是整数,一张表最多只能有一个自增长。

id int primary key auto_increment

2.7 UNIQUE 唯一键

值不能重复,但允许 NULL

email varchar(64) unique

2.8 FOREIGN KEY 外键

保证关联表数据合法性,防止无效关联。外键用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或 unique 约束。当定义外键后,要求外键列数据必须在主表的主键列存在或为 null

foreign key (class_id) references myclass(id)

建立外键的本质其实就是把相关性交给 mysql 去审核了,提前告诉 mysql表之间的约束关系,那么当用户插入不符合业务逻辑的数据的时候,mysql 不允许你插入

到此这篇关于MySQL数据库之数据类型与表约束的文章就介绍到这了,更多相关mysql数据类型与表约束内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文