mysql 存储引擎
1)Myisam:表级锁 不支持外键事务行级锁。数据存在硬盘上,存三个文件,表结构,数据,和搜索目录。对于只读操作比较多的情况 查询速度相对快
2)Innodb:外键 行级锁(并发修改) 事务(客户管理系统)。
3)Memory:只能在内存中存储数据 重启server数据丢失。
mysql 基础数据类型 数字
int id/age/部门编号
float(8,2) salary
字符串
char 定长 越是长度固定char越节省空间 读写速度快
名字 部门名
varchar 变长 越是长度不固定varchar越节省空间 读写速度慢
部门描述
时间
year
date 入职日期 离职 开学 毕业
time
datetime 出生日期 交易记录 打卡时间
timestamp
enum 和 set
enum 单选
enum('male','female')
set 多选(去重)
完整性约束
id int unsigned
id int default 0
id int not null
id int unique
auto_increment 相当于非空+自增且只能用于整数类型
id int unique auto_increment
id int primary key auto_increment
非空 + 唯一
id int unique not null 如果没有主键,第一个设置非空唯一的就是主键
联合唯一
id int,
name char(12),
unique(id,name)
primary key 主键 一张表只能有一个主键
id int primary key
foreign key 外键
id int,
name char(12),
tid int,
foreign key(tid) references 外表(字段名) on update cascade on delete cascade
表的操作
创建表
create table 表名(
字段名 类型(长度约束) 其他约束,
字段名 类型(长度约束) 其他约束,
字段名 类型(长度约束) 其他约束);
删除表
drop table 表名
修改表
alter table 表名 rename 新表名;
add 新字段 类型(长度约束) 其他约束 first;
drop 字段 ;
modify 原字段名 新类型(新长度) 新约束 after 某字段;
change 原字段名 新字段名 新类型(新长度) 新约束;
查看表结构
desc 表名 == describe 表名
show create table 表名; 查看详细表结构,存储引擎 编码 更复杂的约束条件
默写
员工id 姓名 性别 年龄 入职日期 部门 部门描述 部门编号 薪资
create table staff(
id int primary key auto_increment,
name char(12) not null
sex enum('male','female') default 'male',
age int,
hire_date date,
post_name char(12),
post_comment varchar(255),
post_id int,
salary float(8,2) unique
)
拆分表
create table post(
post_id int primary key auto_increment,
post_name char(12),
post_comment varchar(255)
)
create table staff(
id int primary key auto_increment,
name char(12) not null
sex enum('male','female') default 'male',
age int,
hire_date date,
salary float(8,2) unique
post_id int,
foreign key(post_id) references post(post_id)
)
建立表之间的关系
一对多(多对一)
一个 (foreign key () references () on delete cascade on update cascade)
一对一 与一对多相似 一对一 的关联 为 unique (不同)
多对多 为多张表之间的关系 多个 (foreign key () references () on delete cascade on update cascade)
外键一定是另一个表的主键。