【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
**开源地址:https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB **
修改字段名
ALTER TABLE student
CHANGE address home_address VARCHAR(200) not null;
删除字段
ALTER TABLE student
DROP home_address,
DROP home_tel;
中间可以通过desc student;
来查看修改前后的变化
2.数据类型
数字型一般使用int即可,4个字节,精准保存浮点数时,使用DECIMAL
,将数字保存为字符串,就不会缺失一些小数点后的数
如果使用double或者float类型,小数点后面只是无限接近,不能真正等于这个小数,小数点后一位为1时,是1/2,小数点后第二位为1时,是1/4,以此类推
可以在navicat上演示:
CREATE TABLE temp(
id INT UNSIGNED PRIMARY KEY,
num float(20,10)
);
此时的num字段,保留小数点后10位,往表中添加数据时,num填入0.2,保存之后得到的是:
并不等于0.2,当小数点位数取比较多(此处保留小数点后10位)时能明显看出
当使用decimal
类型保存数据时:
CREATE TABLE temp(
id INT UNSIGNED PRIMARY KEY,
num DECIMAL(20,10)
);
此时num输入0.2并保存时:
此时保存的是准确的浮点数
字符串一般使用char或者varchar,后面带一个括号指定最大的字符长度
text,mediumtext,longtext是不确定字符串长度,以此类型定义字段时不能指定最大字符长度,一般不使用,如果需要存储这么长的字符串,建议用nosql
另外补充一个枚举的数据类型,sex enum('男','女') not null;
,代表sex这个字段只能从男/女这个范围中选
mysql默认将boolean布尔型转称tinyint类型,true用1代替,false用0代替
可以在建表时,设置married boolean not null default false
,代表married这个字段为“布尔型”,非空,默认为false
3.索引机制
需要满足范式
第一范式:原子性,不满足此范式就不是关系型数据库
第二范式:唯一性,要有表明该记录不重复的字段,即唯一标识:主键
第三范式:关联性,除了和主键有依赖,其余字段之间不能有传递依赖关系,
一般要满足第三范式即可,满足此范式,检索速度也会快一些,根据主键来检索,速度是快的,主键一般用整数类型
数据库有以下几个约束:主键约束,外键约束,唯一约束,非空约束
主键约束包含了唯一(unique)和非空(not null)的限制
一般不使用外键约束
外键约束,涉及两种角色,一种是父表,一种是子表,外键约束一般写在子表上。假设父表上的某一个记录与子表有关联,要想删除该记录,就需要先删除子表中相关的记录。