MySQL之数据库基础


提示:以下是本篇文章正文内容,Java系列学习将会持续更新

数据库基础

一、数据类型

类型表示说明
小数decimalDECIMAL(3,1) 表示共有3位数,有1位是小数
整型inttiny int < small int < int < big int
字符型varchar(n)Varchar(300字以内变长) < text < longtext
char(n)定长,如果插入的长度小于定义长度时,则用空格填充。
二进制文件blob(n)blob < longblob
时间型date年-月-日
time时:分:秒
datetime年-月-日 时:分:秒 表达式DEFAULT:current_timestamp表示自动插入当前系统时间
timestamp时间戳:从1970-01-01 00:00:00 经过的秒数

二、字段约束

缩写全称说明
PKPrimary Key主键,每条数据的唯一标识
NNNot Null不允许为NULL
UQUnique唯一键,不允许重复
AIAuto_Increment自增的,自动增长
UNUnsigned无符号的
BBinary
ZFZero Fill
GGenerated
FKForeign Keys外键

初学者行为准则:

  1. 每张表都有一个id,无所谓叫什么。没有业务含义,只是作为编号主键。类型为int,约束为PK、NN、AI
  2. 每个字段都带上Not NULL
  3. 如果有的字段需要保持唯一,则勾选UQ。如用户账号

在这里插入图片描述

三、外键

外键:将一张表和其它表的主键关联起来,防止出现非一致性的操作。

 比如,我们的图书管理系统中有三张表booksreadersrecords,当我们在records表中增删借阅记录时,理想中是应该影响到其它两张表中的信息。但实际上 books表中书的状态没有发生改变,readers中借阅者的信息也没有改变。

所以我们为了数据的一致性,在 records 表中设置外键,并且锁定到另外两张表的唯一主键。
在这里插入图片描述
在这里插入图片描述

SQL语句:

ALTER TABLE `lib_0403`.`records` 
ADD INDEX `fk_bid_idx` (`bid` ASC),
ADD INDEX `fk_rid_idx` (`rid` ASC);
;
ALTER TABLE `lib_0403`.`records` 
ADD CONSTRAINT `fk_bid`
  FOREIGN KEY (`bid`)
  REFERENCES `lib_0403`.`books` (`bid`)
  ON DELETE NO ACTION
  ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_rid`
  FOREIGN KEY (`rid`)
  REFERENCES `lib_0403`.`readers` (`rid`)
  ON DELETE NO ACTION
  ON UPDATE NO ACTION;
外键约束说明
RESTRICT父表数据被删除,会阻止删除。默认就是这一项
NO ACTION在MySQL中,同RESTRICT
CASCADE级联删除
SET NULL父表数据被删除,子表数据会设置为NULL

回到目录…


总结:
提示:这里对文章进行总结:
以上就是今天的学习内容,本文是MySQL的学习,认识了MySQL的数据类型和字段约束,还有如何设置外键。之后的学习内容将持续更新!!!

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一只咸鱼。。

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

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

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

打赏作者

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

抵扣说明:

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

余额充值