深入MySQL的使用

深入MySQL的使用

一、数据类型

1.数值类型

1.整型

UNSIGNED(无符号) 主要用于整型和浮点类型,使用无符号。即,没有前面面的-(负号)。
存储位数更长。tinyint整型的取值区间为,-128~127。而使用无符号后可存储0-255个长度。

创建时在整型或浮点字段语句后接上:

Unsigned

MySQL数据类型 所占字节 值范围
tinyint 1字节 -128~127
smallint 2字节 -32768~32767
mediumint 3字节 -8388608~8388607
int 4字节 范围-2147483648~2147483647
bigint 8字节 ±9.22*10的18次方
2.浮点类型
MySQL数据类型 所占字节 值范围
float(m, d) 4字节 单精度浮点型,m总个数,d小数位
double(m, d) 8字节 双精度浮点型,m总个数,d小数位
decimal(m, d) decimal是存储为字符串的浮点数
3.字符类型
MySQL数据类型 所占字节 值范围
CHAR 0-255字节 定长字符串
VARCHAR 0-255字节 变长字符串
TINYBLOB 0-255字节 不超过255个字符的二进制字符串
TINYTEXT 0-255字节 短文本字符串
BLOB 0-65535字节 二进制形式的长文本数据
TEXT 0-65535字节 长文本数据
MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215字节 中等长度文本数据
LONGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295字节 极大文本数据
VARBINARY(M) 允许长度0-M个字节的定长字节符串 值的长度+1个字节
BINARY(M) M 允许长度0-M个字节的定长字节符串

2.时间类型

注意:

1.时间类型在web系统中用的比较少,很多时候很多人喜欢使用int来存储时间。插入时插入的是unix时间戳,因为这种方式更方便计算。在前端业务中用date类型的函数,再将unix时间戳转成人们可识别的时间。

2.上面的类型你可以根据实际情况实际进行选择有些人为了在数据库管理中方便查看,也有人使用datetime类型来存储时间。

MySQL数据类型 所占字节 值范围
date 3字节 日期,格式:2014-09-18
time 3字节 时间,格式:08:42:30
datetime 8字节 日期时间,格式:2014-09-18 08:42:30
timestamp 4字节 自动存储记录修改的时间
year 1字节 年份

二、约束

约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。

1.主键约束 primary key

主键约束相当于 唯一约束 + 非空约束 的组合,主键约束列不允许重复,也不允许出现空值。
每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别创建。
当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。

# 添加主键约束
CREATE TABLE student(
	id INT(32) PRIMARY KEY auto_increment,
	name VARCHAR(32),
	sex VARCHAR(32),
	age INT(3),
	salary FLOAT(8,2),
	course VARCHAR(32)
)

# 查询所有字段
SELECT * FROM student;

# 删除主键约束
ALTER TABLE student DROP PRIMARY KEY;

2.唯一约束

含义:该字段上的数据不能重复,但可以为null

注意:一张表中可以有多个唯一约束

# 唯一约束
# 添加唯一约束
ALTER TABLE student ADD UNIQUE(phone);

# 修改唯一约束
ALTER TABLE student MODIFY name VARCHAR(32) UNIQUE;

# 删除唯一约束
ALTER TABLE student DROP INDEX name;

3.非空约束

含义:该字段上的数据不能为null

注意:一张表中可以有多个非空约束

# 非空约束
# 添加非空约束
ALTER TABLE student MODIFY name VARCHAR(32) NOT NULL;

# 删除非空约束
ALTER TABLE student MODIFY name VARCHAR(32) NULL;

# 默认值
ALTER TABLE student MODIFY `name` VARCHAR(32) DEFAULT "defaultName" NULL;

4.外键约束

含义:外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系

外键的缺点:添加数据还会去外键所在的表中查询,效率很低

# 外键约束
# 添加外键约束
ALTER TABLE student ADD FOREIGN KEY(c_id) REFERENCES class(id);

# 删除外键约束
# 注意:获取外键名--SHOW CREATE TABLE student;
ALTER TABLE student DROP FOREIGN KEY student_ibfk_1;

三、索引

索引用于快速找出在某个列中有一特定值的行。

当然索引也不易过多,索引越多写入,修改的速度越慢。因为,写入修改数据时,也要修改索引。

1.索引的数据结构 — B+Tree

2.索引的优缺点:<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨霖先森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值