【MySQL】从零开始:掌握MySQL数据库的核心概念(三)

人生碌碌,竞短论长,却不道枯荣有数,得失难量。

前言 

  这是我自己学习mysql数据库的第二篇博客总结。后期我会继续把mysql数据库学习笔记开源至博客上。

  上一期笔记是关于mysql数据库的数据类型,没看的同学可以过去看看:

【MySQL】从零开始:掌握MySQL数据库的核心概念(二)-CSDN博客https://blog.csdn.net/hsy1603914691/article/details/146318926?spm=1001.2014.3001.5501

表格的约束

1. 虽然数据类型本身提供了一定程度的约束,但这些基本的数据类型约束往往不足以覆盖所有的业务需求。为了更好地保证数据的合法性,从业务逻辑角度出发,通常需要添加一些额外的约束条件

null-not null-空属性

1. 空属性分为null(默认为空)not null(不能为空)两种。

2. null表示未插入,而' '表示已插入,且插入值0

3. 空属性无法参与计算。

default-默认值

1. default:如果用户输入了具体的数据,那么就使用具体的数据,如果没有,就使用默认的数据。

2. default和not null不推荐一起使用。但是两者一起使用时并不冲突:对于某一列,如果用户想插入数据,那么not null确保插入的数据不为空,如果用户不想插入数据,那么default确保用户忽略这一列插入时使用默认值。

3. 在创建表格时,如果语句中没有设定空属性和默认值,那么mysql会自动优化添加default null

comment-列描述 

1. comment,没有实际含义,专门用来描述字段,会根据表创建语句保存,用来给程序员来进行了解,类似于注释

zerofill-零填充

1. zerofill:给一列数据zerofill属性,如果实际宽度小于设定宽度,那么将按照设定宽度补齐,如果实际宽度大于设定宽度,则不发生改变。

2. zerofill对于有符号int默认为11位,无符号int默认为10位。

primary key-主键 

1. 主键用于约束字段中的数据, 确保其唯一且不能为空。一张表中 只能有一个主键,但主键可以由 单列或多列组合而成,后者称为 复合主键
2. 主键 所在的列通常是 整数类型
3.  创格建表格的时候 可以直接在字段上指定主键,当 表格创建好以后 但是没有主键的时候,也可以再次追加主键。
//在创建复合主键时,需要单独拿出一行来说明
primary key(column_name1,column_name2)
create table tb_name(
    id int auto_increment,
    qq varchar(30),
    primary key(id,qq)
);
//增设主键
alter table db_name add primary key(column_name);
//取消主键
alter table db_name drop primary key;

auto_increment-自增长 

1. auto_increment :如果 没有主动显式赋值,系统则会自动在该字段当前已有的最大值基础上 +1,生成一个新的值。
2.  自增长 通常和 主键 搭配使用,作为 逻辑主键
3.  自增长的特点 :任何一个字段要拥有自增长属性,前提是 本身是一个索引 自增长 字段必须是整数 ,一张表最多 只能有一个自增长字段

unique key-唯一键 

1. 一张表中可能有多个字段需要满足唯一性约束,即 数据不能重复,但一张表只能有一个主键。此时,可以通过 唯一键来解决 多个字段需要唯一性约束的问题。
2. 主键 可以视为 特殊化的唯一键 主键 不能重复 不能为空 唯一键 不能重复 可以为空

foreign key-外键

1. 外键用于 定义主表和从表之间的关系
2. 外键约束作用于 从表上,而 主表中与之关联的列必须具有 主键约束唯一键约束
//定义外键时,需要单独拿出一行来说明
foreign key (column1_name) references tb_name (column2_name)
create table tb_name1 (
    id int primary key,
    name varchar(30) not null
);

create table tb_name2 (
    stu_id int primary key,
    name varchar(30) not null,
    foreign key(stu_id) references tb_name1(id)
);

综合案例

现在有一个商店的数据,记录客户及购物情况,有以下三个表格组成:
1. 商品 goods (商品编号 goods_id ,商品名 goods_name ,单价 unitprice ,商品类别 category ,供应商 provider
2. 客户 customer (客户号 customer_id ,姓名 name ,住址 address ,邮箱 email ,性别 sex ,身份证 card_id
3. 购买 purchase (购买订单号 order_id ,客户号 customer_id ,商品号 goods_id ,购买数量 nums
create database sample;
alter database sample character set = utf8mb4 collate = utf8mb4_unicode_ci;
create table goods (
    -> goods_id int primary key auto_increment,
    -> goods_name varchar(30) not null,
    -> unitprice float not null,
    -> category enum('饮料','主食','服装','家电'),
    -> provider enum('万达','沃尔玛','华润万家')
    -> );
create table customer (
    -> customer_id int primary key auto_increment,
    -> name varchar(30) not null,
    -> address varchar(50) not null,
    -> email varchar(30) unique key,
    -> sex enum('男','女'),
    -> card_id varchar(30) unique key
    -> );
create table purchase (
    -> order_id int primary key auto_increment,
    -> customer_id int not null,
    -> goods_id int not null,
    -> nums int not null, 
    -> foreign key (customer_id) references customer(customer_id),
    -> foreign key (goods_id) references goods(goods_id)
    -> );

致谢

  感谢您花时间阅读这篇文章!如果您对本文有任何疑问、建议或是想要分享您的看法,请不要犹豫,在评论区留下您的宝贵意见。每一次互动都是我前进的动力,您的支持是我最大的鼓励。期待与您的交流,让我们共同成长,探索技术世界的无限可能!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值