admin管理员组

文章数量:1034544

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

前言

这是我自己学习MySQL数据库的第二篇博客总结。后期我会继续把MySQL数据库学习笔记开源至博客上。 上一期笔记是关于MySQL数据库的数据类型,没看的同学可以过去看看:

表格的约束

1. 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。 2. 为了确保插入数据的正确性,我们需要使用字段的约束来控制。

null-not null-空属性

1. 空属性分为null(默认为空)not null(不能为空)两种。 2. null表示未插入,而' '表示已插入,且插入值0。 3. 空属性无法参与计算。

default-默认值

1. default:如果用户输入了具体的数据,那么就使用具体的数据,如果没有,就使用默认的数据。 2. defaultnot null并不冲突,而是互相补充的:对于某一列,如果用户想插入数据,那么not null确保插入的数据不为空,如果用户不想插入数据,那么default确保用户忽略这一列插入时使用默认值。但是不推荐两个一起用。 3. 在创建表格时,如果语句中没有设定空属性和默认值,那么mysql会自动优化添加default null

comment-列描述

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

zerofill-零填充

1. zerofill:给一列数据zerofill属性,如果实际宽度小于设定宽度,那么将按照设定宽度补齐,如果实际宽度大于设定宽度,则不发生改变。 2. zerofill对于有符号int默认为11位,无符号int默认为10位。

primary key-主键

1. primary key 用来约束该字段里面的数据, 不能重复不能为空 ,一张表中最多只能有一个主键,但不意味着主键只能有一列,多列共同构成一个 复合主键 。 2. 主键 所在的列通常是 整数类型 。 3. 创建表的时候 可以直接在字段上指定主键,当 表创建好以后 但是没有主键的时候,也可以再次追加主键。 4. 在创建表的时候,在所有字段之后,使用 primary key(column_name) 来创建主键,如果有多个字段作为主键,可以使用 primary key(column_name1,column_name2) 来创建复合主键。

代码语言:javascript代码运行次数:0运行复制
alter table db_name add primary key(column_name);
代码语言:javascript代码运行次数:0运行复制
alter table db_name drop primary key;

auto_increment-自增长

1. auto_increment :如果对应的字段 不主动给值 ,系统则会对当前字段中已经有的 最大值+1 ,得到一个新的不同的值。 2. 自增长 通常和 主键搭配使用 ,作为 逻辑主键 。 3. 自增长的特点 :任何一个字段要做自增长,前提是本身是一个 索引 , 自增长字段必须是 整数 ,一张表最多只能有 一个自增长

unique key-唯一键

1. 一张表中有往往有很多字段需要唯一性, 数据不能重复 ,但是一张表中只能有一个主键:唯一键就可以 解决表中有多个字段需要唯一性约束的问题。 2. 唯一键的本质和主键差不多, 唯一键允许为空 ,而且可以 多个为空 。 3. 主键 可以视为 特殊化的唯一键不能为空的唯一键

foreign key-外键

1. 外键 用于定义 主表从表 之间的关系: 外键约束 主要定义在 从表主表 则必须是有 主键约束唯一键约束 。 2. 定义外键时,需要单独拿出一行按照以下格式定义: foreign key (column1_name) references tb_name (column2_name)

综合案例

现在有一个商店的数据,记录客户及购物情况,有以下三个表组成: 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

代码语言:javascript代码运行次数:0运行复制
create database sample;
alter database sample character set = utf8mb4 collate = utf8mb4_unicode_ci;
代码语言:javascript代码运行次数:0运行复制
create table goods (
    -> goods_id int primary key auto_increment,
    -> goods_name varchar(30) not null,
    -> unitprice float not null,
    -> category enum('饮料','主食','服装','家电'),
    -> provider enum('万达','沃尔玛','华润万家')
    -> );
代码语言:javascript代码运行次数:0运行复制
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
    -> );
代码语言:javascript代码运行次数:0运行复制
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)
    -> );
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-03-26,如有侵权请联系 cloudcommunity@tencent 删除博客数据数据类型数据库mysql

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

前言

这是我自己学习MySQL数据库的第二篇博客总结。后期我会继续把MySQL数据库学习笔记开源至博客上。 上一期笔记是关于MySQL数据库的数据类型,没看的同学可以过去看看:

表格的约束

1. 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。 2. 为了确保插入数据的正确性,我们需要使用字段的约束来控制。

null-not null-空属性

1. 空属性分为null(默认为空)not null(不能为空)两种。 2. null表示未插入,而' '表示已插入,且插入值0。 3. 空属性无法参与计算。

default-默认值

1. default:如果用户输入了具体的数据,那么就使用具体的数据,如果没有,就使用默认的数据。 2. defaultnot null并不冲突,而是互相补充的:对于某一列,如果用户想插入数据,那么not null确保插入的数据不为空,如果用户不想插入数据,那么default确保用户忽略这一列插入时使用默认值。但是不推荐两个一起用。 3. 在创建表格时,如果语句中没有设定空属性和默认值,那么mysql会自动优化添加default null

comment-列描述

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

zerofill-零填充

1. zerofill:给一列数据zerofill属性,如果实际宽度小于设定宽度,那么将按照设定宽度补齐,如果实际宽度大于设定宽度,则不发生改变。 2. zerofill对于有符号int默认为11位,无符号int默认为10位。

primary key-主键

1. primary key 用来约束该字段里面的数据, 不能重复不能为空 ,一张表中最多只能有一个主键,但不意味着主键只能有一列,多列共同构成一个 复合主键 。 2. 主键 所在的列通常是 整数类型 。 3. 创建表的时候 可以直接在字段上指定主键,当 表创建好以后 但是没有主键的时候,也可以再次追加主键。 4. 在创建表的时候,在所有字段之后,使用 primary key(column_name) 来创建主键,如果有多个字段作为主键,可以使用 primary key(column_name1,column_name2) 来创建复合主键。

代码语言:javascript代码运行次数:0运行复制
alter table db_name add primary key(column_name);
代码语言:javascript代码运行次数:0运行复制
alter table db_name drop primary key;

auto_increment-自增长

1. auto_increment :如果对应的字段 不主动给值 ,系统则会对当前字段中已经有的 最大值+1 ,得到一个新的不同的值。 2. 自增长 通常和 主键搭配使用 ,作为 逻辑主键 。 3. 自增长的特点 :任何一个字段要做自增长,前提是本身是一个 索引 , 自增长字段必须是 整数 ,一张表最多只能有 一个自增长

unique key-唯一键

1. 一张表中有往往有很多字段需要唯一性, 数据不能重复 ,但是一张表中只能有一个主键:唯一键就可以 解决表中有多个字段需要唯一性约束的问题。 2. 唯一键的本质和主键差不多, 唯一键允许为空 ,而且可以 多个为空 。 3. 主键 可以视为 特殊化的唯一键不能为空的唯一键

foreign key-外键

1. 外键 用于定义 主表从表 之间的关系: 外键约束 主要定义在 从表主表 则必须是有 主键约束唯一键约束 。 2. 定义外键时,需要单独拿出一行按照以下格式定义: foreign key (column1_name) references tb_name (column2_name)

综合案例

现在有一个商店的数据,记录客户及购物情况,有以下三个表组成: 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

代码语言:javascript代码运行次数:0运行复制
create database sample;
alter database sample character set = utf8mb4 collate = utf8mb4_unicode_ci;
代码语言:javascript代码运行次数:0运行复制
create table goods (
    -> goods_id int primary key auto_increment,
    -> goods_name varchar(30) not null,
    -> unitprice float not null,
    -> category enum('饮料','主食','服装','家电'),
    -> provider enum('万达','沃尔玛','华润万家')
    -> );
代码语言:javascript代码运行次数:0运行复制
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
    -> );
代码语言:javascript代码运行次数:0运行复制
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)
    -> );
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-03-26,如有侵权请联系 cloudcommunity@tencent 删除博客数据数据类型数据库mysql

本文标签: MySQL从零开始掌握MySQL数据库的核心概念(三)