MySQL:MySQL下的常用类型,主键和唯一键

一、MySQL下的类型

整型

TINYINT , SMALLINT , INT , BIGINT

小数
  1. 浮点数(不是高精度) FLOAT/DOUBLE
  2. 保证精度 DECIMAL/NUMEROUS
几个坑
  1. bit 显式的时候是 ASCII 码
  2. CHAR 最多 255 个字符
  3. VARCHAR 最多是 65535 个字节,具体多少字符65535/3(每个utf8 占 3 字节)
字符类型
  1. 定长 CHAR(字符个数)
  2. 变长 VARCHAR(字符个数)
  3. TEXT 字符(常用于特别长的文字,文章)
  4. BLOB 字节流
日期、时间
  1. DATETIME 年-月-日 时:分:秒
  2. DATE 年-月-日
  3. TIME 时:分:秒
  4. TIMESTAMP 时间戳(1970 的秒数)
TIMESTAMPDATETIME
4 个字节8 个字节
1970 - 2037年0000-9999年
MySQL 规范上不建议使用 ENUM 和 SET
  1. 修改表结构的代价非常大
  2. ENUM/SET 信息保存在表结构中
  3. 所以,更新 ENUM 及 SET 都需要修改表结构,风险较大
  4. 所以不建议使用
带括号的数据类型
  1. CHAR(字符个数,会影响字段长度)
  2. VARCHAR(字符个数,会影响字段长度)
  3. BIT(位的长度,会会影响字段长度)
  4. FLOAT(整体的显式位数,小数点后显式位数;不影响字段长度)
  5. INT(显式长度,不影响字段长度) ZEROFILL

二、NULL

NULL 不区分大小写
NULL 的真实含义时,这个字段值不知道
所以一般来说,有 NULL 参与的运算结果都是 NULL
定义表时,字段后可以跟 NOT NULL 强制不允许出现空
没有特殊理由,建议都加上 NOT NULL

主键

  1. 主键,每个信息都有主键,用来唯一标识一条信息
    可以是一个字段,可以是多个字段组成(复合主键)

  2. 在 InnoDB 的引擎下,数据在硬盘存储是按照主键的排序方式存储的,为了避免中间插入主键,通常建议把主键设置成一个永远递增,永不修改的值

  3. 主键不允许为空/主键不允许重复

  4. 每个表上都有一个主键,通常用自增字段作为主键

唯一键

唯一键 Unique Key
相似的点:主键和唯一键都不允许重复
不同点:

  1. 主键不允许为空,唯一键允许为空
  2. 存储上,数据的存储是按照 主键 递增顺序保存的
    唯一键,看作另外有一套数据结构

举个栗子

创建一个学生表

//注意最后一行不能有逗号!!!
CREATE TABLE students (
	id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT "利用自增字段作为表主键",
	sn INT NOT NULL UNIQUE COMMENT "学号,事实上的主键,唯一键,不允许重复",
	name VARCHAR(10) NOT NULL COMMENT "姓名",
	gender TINYINT NOT NULL COMMENT "性别: 1 女  2 男 3 不想说",
	school VARCHAR (40) NOT NULL DEFAULT "西安财经大学" COMMENT "学校",
	registerd_at DATETIME NOT NULL COMMENT "报名时间",
	created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "入表时间"
) COMMENT "学生表";
CREATE TABLE students (
	...
	PRIMARY KEY (id, sn)		-- 支持单字段 或者 多字段
	UNIQUE KEY (sn, name)
)
insert into students(sn,name,gender,registerd_at) values (125,"王五",2,"2019-9-9 21:44:20");
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值