MySQL中的常见类型
1、整数型:
- 整型
- 浮点型
2、字符型:
- 较短的文本:char 、varchar
- 较长的文本:text 、blob(较长的二进制数据)
3、日期型
一、整数型
1、常用的整型类型:
2、浮点型:
- float(M,D):M代表数据的长度(整数部分+小数部分),D代表保留的小数位数。如:12.6数中,M=3,D=1
- M和D都可以省略
3、定点数类型(常用来保存精度较高的数值):
- decimal(M,D) 中,省略时M默认为10,D默认为0
- 定点型精度相对较高
二、字符型
1、较短的文本:
- M 表示字符数,即有几个字符
- char 代表固定长度的字符,比较耗费长度,但效率较高,其M可以省略,默认为1
- varchar 代表可变长度的字符,比较节省空间,但效率低,其M不可以省略
2、Enum 枚举
3、set 集合
三、日期类型
- 使用日期类型时,插入日期数据时要加引号
1、应用实例:
# 创建表 thetime
CREATE TABLE thetime(t01 DATETIME,
t02 TIMESTAMP);
# 向所创建的表中插入数据
INSERT INTO thetime
VALUES(NOW(),NOW());
# 显示该表的内容
SELECT * FROM thetime;
SHOW VARIABLES LIKE 'time_zone'; # 显示时区
SET time_zone='+9:00'; # 设置时区为+9:00
************************************************************
四、常见约束
- 用于限制表中的数据,为确保表中的数据准确和可靠
- 创建表时或修改表时添加约束(必须是在添加数据之前)
1、MySQL 中的约束分为六类:
- not null :非空,用于保证该字段的值不能为空
- default :默认,用于保证该字段有默认值
- primary key :主键,用于保证该字段的值具有唯一性,且非空。能代表该行,如学号或编号
- unique:唯一,用于保证该字段的值具有唯一性,可以为空。
- check:检查约束 [ MySQL中不支持 ]
- foreign key:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值。在从表添加外键的约束,用于引用主表中某列的值。
2、创建表时添加约束实例:列级约束
# 创建一个新的库为students
CREATE DATABASE students;
# 在该库中创建表 major,并对各列添加限制
CREATE TABLE major(
id INT PRIMARY KEY, # 设为主键
majorName VARCHAR(20)
);
# 在该库中创建表stuinfo 并对各列添加限制
CREATE TABLE stuinfo(
id INT PRIMARY KEY, # 设为主键
stuName VARCHAR(20) NOT NULL, # 非空约束
gender CHAR(1) CHECK(gender='male' OR gender='female'), # 检查[MySQL不支持]
seat INT UNIQUE, # 设置唯一
age INT DEFAULT 18, # 默认约束
majorId INT REFERENCES major(id) # 外键[MySQL不支持]
);
SHOW INDEX FROM stuinfo; # 可以查看表的索引
3、创建表时添加约束:表级约束
# 语法:约束名自定,但primary key 的约束名无法修改
[CONSTRAINT 约束名] 约束类型
# 应用实例
CREATE TABLE stuinfo(
id INT,
seat INT,
CONSTRAINT cst01 PRIMARY KEY(id),
CONSTRAINT cst02 UNIQUE(seat),
);
4、修改表时,添加或删除约束:将表 stuinfo 的一些列添加约束
# 列 stuname 添加非空约束
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL;
# 列 stuname 删除非空约束
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20);
# 列 age 添加默认约束
ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18;
# 列 age 删除默认约束
ALTER TABLE stuinfo MODIFY COLUMN age INT;
# 添加主键
ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;
# 删除主键
ALTER TABLE stuinfo DROP PRIMARY KEY;
五、标识列:AUTO_INCREMENT
- 标识列又称为自增长列:可以不用手动的插入值,系统提供默认的序列值
- 一个表中至多有一个标识列
- 标识列的类型只能是数值型,一般为 int
- 标识列可以设置步长
1、创建表时添加标识列
CREATE TABLE tbIndex(
id INT PRIMARY KEY AUTO_INCREMENT, # 设置主键,设置标识
tname VARCHAR(20)
);
# 如果上面列没有设置标识,则下面的语句只能执行一次,而有标识列之后,可以多次执行,id值会自动增加
INSERT INTO tbIndex VALUES(NULL,'Tony');
2、修改表时添加标识列
ALTER TABLE tbindex MODIFY COLUMN id INT PRIMARY KEY AUTO_INCREMENT;
3、修改表时删除标识列
ALTER TABLE tbindex MODIFY COLUMN id INT;