1.数据库管理 DDL操作,修改表结构 如增加字段,修改字段类型/约束/注释,修改字段名,删除字段,sql语句如下
# 增加字段 ALTER TABLE student ADD address VARCHAR(200) not null, ADD home_tel CHAR(11) NOT NULL; # 修改字段类型,约束,注释 ALTER TABLE student MODIFY home_tel VARCHAR(20) NOT NULL; # 修改字段名 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)的限制 一般不使用外键约束 外键约束,涉及两种角色,一种是父表,一种是子表,外键约束一般写在子表上。假设父表上的某一个记录与子表有关联,要想删除该记录,就需要先删除子表中相关的记录。 如此,大数据的操作下,可能会产生外键闭环,想要删除a就需要先删除b,想要删除b,就需要先删除c,想要删除c,就需要先删除a,构成这样的闭环,表中的数据就无法删除 因此,不建议使用外键约束
默认主键有加索引,所以根据主键查询会更快,毕竟排序过 但其他字段就不一定有索引了,如姓名,如果给姓名增加索引,同姓氏的名字会排在一个一起(集中区域),所以查找时,就不再是全表查询,而是范围查找 添加索引,可以在建表时创建,也可以在建表之后再添加:
# 在创建表时添加索引 create table t_message( id int UNSIGNED PRIMARY key, content VARCHAR(200) not null, type enum('公告','通报','个人通知') not null, create_time TIMESTAMP not null, INDEX idx_type (type) ); # 删除索引 drop INDEX idx_type on t_message; # 查看索引 show index from t_message; # 在创建之后添加索引 # 方式一 create index idx_type on t_message(type); # 方式二 alter table t_message add index idx_type (type);查看索引如下: 默认主键是有添加索引的