(七)MySQL常见的数据类型、约束和标识列
一、MySQL常见数据类型
1、数值型:
①整型:tinyint、smllint、mediumint、int/integer、bigint

图源:尚硅谷李玉婷
案例1:关键表格teacher,分别添加有、无符号int型字段
CREATE TABLE teacher(
id INT UNSIGNED,
phone INT
);
注意:定义五符号型字段,直接在数据类型后面添加UNSIGNED,默认为有符号型。
案例2:插入数据的大小不在定义的数据类型范围中
INSERT INTO teacher VALUES(-100,12345678900);
插入数据后表中的数据:

注意:当插入的数据不在定义的范围中时,就近选择符合条件的数据插入。
案例3:插入一个显示宽带为7的int型字段
ALTER TABLE teacher ADD COLUMN mail_num INT(7);
注意:显示宽度表示在该字段中最多显示7个字符的数字。
②小数型:
浮点型:float(M,D)、double(M,D)
定点型:dec(M,D)、decimal(M,D)
注意:D代表小数点后保留D位(四舍五入),M代表小数点前后总位数,定点型精度要高于浮点型(表现在小数点后保留位数)
③字符型:
较短文本:char、varchar(常用)
其他:binary、varbinary、enum(枚举类型)、set(集合)
较长文本:text、blob
案例1:比较char和varchar
char:固定的长度 默认长度为1 效率高
varchar:非固定长度 定义时长度不可省略 效率低
案例2:创建新表包含enum类型(枚举类型),并插入新类型
CREATE TABLE my_str(
NAME ENUM('a','b','c')
);
INSERT INTO my_str VALUES('a');
注意:向枚举类型中插入数据,仅仅可以插入定义时后面跟随的诸多数据之一,且不可插入其它数据。
案例3:比较enum和set
INSERT INTO tab_enum VALUES('a');
INSERT INTO tab_set VALUES('a,c,d');
注意:enum同时只可以插入诸多数据之一,但set可同时插入多个,而且向set中插入数据时只能使用一个引号。
④日期型:datetime(8字节,时间范围大)、timestamp(4字节,受时区影响)
案例1:创建新表my_time,包含两个字段类型分别为datetime和imestamp,并插入当前时间
CREATE TABLE my_time(
t1 DATETIME,
t2 TIMESTAMP
);
INSERT INTO my_time VALUES(NOW(),NOW());
表中数据:

修改当前时区:
SET time_zone='+9:00';
再次查看表中数据:

比较上面两张图片可以看出t2的时间发生变化,说明t2的数据类型(TIMESTAMP)受时区影响。
二、MySQL常见约束
1、六大约束:
#1NOT NULL:非空
#2UNIQUE:唯一
#3PRIMARY KEY:主键(不可重复也不可为空)
#4DEDFAULT:默认
#5FOREIGN KEY:外键(与其他表相关联)
#6CHECK:检查约束(mysql中不支持)
2、语法:
CREATE TABLE 表名(
字段名 字段类型 列级约束,
字段名 字段类型,
表级约束
);
3、添加约束(通用写法)
从表:
CREATE TABLE IF NOT EXISTS stuinfo(
id INT PRIMARY KEY,
stuname VARCHAR(20),
sex CHAR(1),
age INT DEFAULT 18,
seat INT UNIQUE,
majorid INT,
CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)
);
主表:
CREATE TABLE major(
id INT PRIMARY KEY,
majorName VARCHAR(20)
);
注意:
①类型为UNIQUE的字段类型允许包含NULL但至多只能包含一个。
②添加外键时主表中与从表相关联的字段要为key类型(主键、唯一)。
③外键插入数据时先插入主表再插入从表,删除数据时先删除从表再删除主表。
4、添加/删除约束条件
#1.添加/删除非空约束
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL;
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NULL;
#2.添加/删除默认约束
ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18;
ALTER TABLE stuinfo MODIFY COLUMN age INT;
#3.添加/删除主键
ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;
ALTER TABLE stuinfo DROP PRIMARY KEY;
#4.添加/删除唯一
ALTER TABLE stuinfo MODIFY COLUMN seat INT UNIQUE;
ALTER TABLE stuinfo DROP INDEX seat;
#5.添加/删除外键
ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id);
ALTER TABLE stuinfo DROP FOREIGN KEY fk_stuinfo_major;#起名便于删除
注意:
①删除唯一约束:ALTER TABLE 表名 DROP INDEX 字段名
②添加外键:ALTER TABLE 从表名 ADD CONSTRAINT 别名 FOREIGN KEY(字段) REFERENCE 主表名(字段);
③删除外键:ALTER TABLE 从表名 DROP FOREIGN KEY 别名;
三、MySQL标识列
1、创建表时设置自增长列:
CREATE TABLE my_increase(
id INT PRIMARY KEY AUTO_INCREMENT
);
2、添加/删除自增长列:
ALTER TABLE test_1 MODIFY COLUMN id INT(11) AUTO_INCREMENT;
ALTER TABLE test_1 MODIFY COLUMN id INT(11);
注意:删除自增长列不使用DROP,而是直接修改表的性质。
3、设置自增长步长:
SET auto_increment_increment=3;
4、修改自增长起点的方法:先将起点数值插入到表中再自增长插入
自增长插入方法(可重复运行该语句):
INSERT INTO my_increase VALUES(NULL);
运行结果:

(七)MySQL常见的数据类型、约束和标识列的更多相关文章
- MySQL常见的数据类型(八)
不多说,直接上干货! MySQL常见的数据类型 一.数据类型是什么? 数据类型是指列.存储过程参数.表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型. 有一些数据是要存储为数字 ...
- MySQL 避免使用字符串类型作为标识列
避免使用字符串类型作为标识列: 消耗空间. 比数字类型慢(MyISAM 中对字符串使用压缩索引,查询会慢). 对于 MD5().UUID() 生成的随机字符串,这些值会分布在很大的空间内,导致 ins ...
- MySql常见的数据类型
⒈整型 名称 字节数 tinyint 1 smallint 2 mediumint 3 int/integer 4 bigint 8 特点: 1.如果不设置无符号还是有符号,默认是有符号,如果想设置无 ...
- mysql 常见数据类型
---恢复内容开始--- MySQL常见的数据类型 一.数据类型是什么? 数据类型是指列.存储过程参数.表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型. 有一些数据是要存储为 ...
- MySQL系列--3.数据类型和连接查询
1.存储引擎 数据创建,查询,更新和删除操作都是通过数据引擎来进行的.不同的存储引擎存储限制不同,支持不同的索引机制等. 查询数据库支持的存储引擎 MySQL 5.7.2支持的存储引擎有:InnoDB ...
- Mysql 常见数据类型及约束
Mysql 常见数据类型及约束 最近在跟几个不太懂技术的同事(哈哈, 其实我也不懂), 要整一个数据库项目, 然后前端, 后端, 都没有像样的, 数据输出还不是由我们控制.... 这可难受了, 然后总 ...
- MySQL常见建表选项以约束
一.CREATE TABLE 选项 1.在定义列的时候,指定列选项 1)DEFAULT <literal>:定义列的默认值 当插入一个新行到表中并且没有给该列明确赋值时,如果定义了列的默认 ...
- MySQL常见建表选项及约束
阅读目录---MySQL常见的建表选项及约束: 1.create table选项 1.指定列选项:default.comment 2.指定表选项:engine.auto_increment.comme ...
- 存储引擎,MySQL中的数据类型及约束
存储引擎,MySQL中的数据类型及约束 一.存储引擎 1.不同的数据应该有不同的处理机制 2.mysql存储引擎 Innodb:默认的存储引擎,查询速度叫myisam慢,但是更安全 支持事务, ...
随机推荐
- GreenPlum-数据存储目录迁移及常用操作
一.环境介绍 Greenplum5 3节点集群,Centos7.2虚拟机, 二.需求 因为/home目录磁盘空间已满,需要将Greenplum的数据存储目录转移到新的分区/opt目录下,虚拟机磁盘管理 ...
- 苏浪浪 201771010120 《面向对象程序设计(java)》第9周学习总结
实验九异常.断言与日志 实验时间 2018-10-25 1.实验目的与要求 (1) 掌握java异常处理技术: (2) 了解断言的用法: (3) 了解日志的用途: (4) 掌握程序基础调试技巧: 2. ...
- 蓝桥杯 试题 历届试题 发现环 并查集+dfs
问题描述 小明的实验室有N台电脑,编号1~N.原本这N台电脑之间有N-1条数据链接相连,恰好构成一个树形网络.在树形网络上,任意两台电脑之间有唯一的路径相连. 不过在最近一次维护网络时,管理员误操作使 ...
- 走迷宫(三):在XX限制条件下,是否走得出。
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010 题目前提条件:让你输入一个数组,包含一个起点S,一个终点D,一个时间T.(其中X代表墙,.代表此 ...
- SQL——SQL函数
avg(col) -- 返回数值列的平均值,NULL值不包括在计算中.count(col) -- 返回指定列的值的数目,NULL不计入:count(*)返回表中记录数:count(distinct c ...
- 干货!JNPF快速开发平台功能一览
JNPF,采用主流的两大技术Java/.Net开发,是一套低代码开发平台,可视化开发环境,有拖拽式的代码生成器,灵活的权限配置.SaaS服务,强大的接口对接,随心可变的工作流引擎,一站式开发多端使 ...
- SpringBoot整合SpringSecurity实现JWT认证
目录 前言 目录 1.创建SpringBoot工程 2.导入SpringSecurity与JWT的相关依赖 3.定义SpringSecurity需要的基础处理类 4. 构建JWT token工具类 5 ...
- 01.Django-基础
基础 1. 简介 Django是一个由Python写成的开放源代码的重量级Web应用框架. Django的目的是使常见的Web开发任务,快速和容易 2. 特点 MVC开发模式 内置进行快速web开发所 ...
- [批处理教程之Shell]001.文本处理
在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器).它类似于DOS下的command和后来的cmd.exe.它接收用户命令,然后调用相应的应用程序. 同时 ...
- unicode、encode、decode
1.encode与decode:unicode经过encode -> utf-8,反过来为decode. 爬虫读取网页内容和pandas读取csv时,会把读取到的文字内容转成unicode,当我 ...