mysql数据库part2

一、时间类型(数据类型续)

date YYYY-MM-DD 年月日
time HH:MM:SS 时分秒
year YYYY 年份值
datetime YYYY-MM-DD HH:MM:SS 年月日 时分秒

运行结果

select now() 获取当前时间
运行结果

timestamp YYYYMMDDHHMMSS(时间戳) 自动更新时间 数据上一次的修改时间

运行结果

手动修改数据:
运行结果

二、约束

对要进行编辑的数据进行类型上的限制,不满足限制条件的数据不允许操作

unsigned 无符号
not null 不为空
default 设置默认值
unique 唯一约束,数据唯一不重复
primary key 主键,标记数据的唯一特性(唯一且不为空)
auto_increment 自增加1(一般配合主键使用,或unique自增)
zerofill 零填充(配合整型int使用)
foreign key 外键,把多张表通过一个关联字段关联在一起

1、unsigned

运行结果

如图,只能插入正值

2、not null

运行结果

如图,插入数据不能为空,否则报错

3、default

设置默认值:
运行结果

如图,不指定name时自动生成默认值

4、unique

运行结果

如图,当指定唯一约束时,值不能出现重复
插入null:
运行结果

如图,当插入值为空时,不会出现报错,会将数据写入到表中

5、primary key

运行结果

如图,指定主键后,对应字段既不能重复也不能传入空值

一个表里只能存在一个主键:
运行结果

主键和唯一关联unique可同时存在:
运行结果

6、auto_increment

运行结果

如图,配合主键primary key使用,id自动累加

delete和truncate区别:
delete删除数据后累加的id号会保留,下次新插入数据会继续累加,truncate重制表

运行结果

7、zerofill

运行结果

如图,int指定zerofile长度,不足位补0

8、主键索引(PRI)、唯一索引(UNI)、普通索引(MUL)

1)联合唯一约束(字段都设置成not null + unique 显示PRI,联合在一起表达一种唯一性)

unique(字段1,字段2,字段3…) 把多个字段拼在一起表达一种唯一性:
运行结果

如图,在此例中IP+端口具有联合唯一性:

运行结果

联合唯一约束如果不加not null则可以设置空值

2)联合唯一索引可否与主键同时存在
运行结果

如图,可同时存在
联合主键写法与联合唯一索引一样
运行结果

二者区别:
前者可继续添加一个主键,后者不能再额外添加主键
主键可以是单个字段,也可以是联合主键,不能让多个单字段做主键

9、foreign key

外键所关联的其他字段必须具有唯一属性unique或primary key
语法:

foregin key(要绑定字段) references 要绑定的表(表中要绑定字段)

运行结果

如果我们此时要删除class1这个班级:
运行结果

如图,因为外键的存在,无法删除数据

联级删除:
on delete cascade
联级更新:
on update cascade

运行结果

如图联级删除时会把所有相关数据删除

表与表之间的关系:
1)一对一
2)一对多或多对一
3)多对多

三、存储引擎

show engines 查看所有的存储引擎

运行结果

表级锁:如果有人修改当前表,会直接上锁,其他用户无法进行修改,不能进行高并发
行级锁:如果有人修改这个表中的一条记录,当前这条数据会被锁定,其他数据仍然可被修改,速度快,允许高并发
事物处理:执行sql语句时,所有的操作必须成功,最终提交数据,否则数据回滚,回到刚开始没操作的状态
begin:开启事务
commit:提交数据
rollback:回滚操作

运行结果

MyISAM 支持表级锁(5.6版本前默认存储引擎)
InnoDB 事务处理、行级锁、外键(5.6版本后默认存储引擎)
MEMORY 把数据放在内存中,做一个临时缓存
BLACKHOLE 黑洞,产生binlog日志,不生产真实数据
用来同步主从数据库中的数据,场景发生在多服务集群中

MyISAM:
运行结果

InnoDB:
运行结果

MEMORY:

运行结果

从目录中找不到数据文件,因为存在了内存中

BLACKHOLE:
运行结果

如图,不存储任何值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值