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

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

前言 

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

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

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

表格的约束

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) 来创建复合主键。
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. 唯一键的本质和主键差不多, 唯一键允许为空 ,而且可以 多个为空
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
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)-> );

致谢

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/38827.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web3智能合约与数据交互安全性探讨

Web3智能合约与数据交互安全性探讨 随着区块链技术的飞速发展,Web3的概念已经成为技术圈的热门话题。Web3不仅仅是技术迭代,它代表了一种全新的互联网交互方式,其中智能合约扮演着核心角色。智能合约是自动执行、控制或文档化法律事件和行动…

人工智能赋能山西乡村振兴:智能空间规划与可持续发展

摘要:随着人工智能技术的快速发展,山西乡村振兴面临着从传统农业到智能化现代化转型的重大机遇。本文探讨了人工智能在山西乡村振兴中的具体应用,重点分析了智能空间规划、生态保护与环境治理、产业转型以及基础设施升级的可能路径。文章从数…

QT三 自定义控件

一 自定义控件 现在的需求是这样: 假设我们要在QWidget 上做定制,这个定制包括了关于 一些事件处理,意味着要重写QWidget的一些代码,这是不实际的,因此我们需要自己写一个MyWidget继承QWidget,然后再MyWi…

【C++ 进阶】语句:从基础到实践

目录 一、输入输出体系的范式革命 1.1 C语言的格式化 1.2 C的流抽象革命 二、字符串处理的抽象跃迁 2.1 C语言的字符指针 2.2 C的string类革命 三、结构体到类的类型系统进化 3.1 C语言的结构体局限 3.2 C类的革命性演进 四、基础控制语句差异 4.1 条件语句&#xf…

C语言操作符

🌟 各位看官好,我是maomi_9526! 🌍 种一棵树最好是十年前,其次是现在! 🚀 今天来学习C语言的相关知识。 👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更…

PostgreSQL:语言基础与数据库操作

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

KMP算法

KMP算法 为什么叫做KMP呢。 因为是由这三位学者发明的:Knuth,Morris和Pratt,所以取了三位学者名字的首字母。所以叫做KMP next数组就是一个前缀表(prefix table)。 前缀表是用来回退的,它记录了模式串与…

3D点云数据处理中的聚类算法总结

1.欧式聚类: 基于点的空间距离(欧几里得距离)来分割点云,将距离较近的点归为同一簇。 欧式聚类需要的参数:邻域半径R,簇的最小点阈值minPts,最大点数阈值maxPts。 实现效率: O(n * log n) 实现…

WRC世界机器人大会-2024年展商汇总

2024世界机器人大会 时间:2024年8月21日至25日 地点:北京经济技术开发区北人亦创国际会展中心 大会主题:共育新质生产力,共享智能新未来 2024世界机器人博览会亮点纷呈,20余款人形机器人整机将亮相博览会&#xff…

拉取镜像,推送到阿里云镜像仓库

需求背景:在学习k8s,虚拟机无法正常拉取 wangyanglinux/tools:busybox 镜像。 解决办法:将墙外镜像拉到国内(阿里云)再使用 准备工作需要创建对应的镜像仓库,然后再进行推送 1. 拉取镜像 docker pull …

DeepSeek和Kimi在Neo4j中的表现

以下是2个最近爆火的人工智能工具, DeepSeek:DeepSeek Kimi: Kimi - 会推理解析,能深度思考的AI助手 1、提示词: 你能帮我生成一个知识图谱吗,等一下我会给你一篇文章,帮我从内容中提取关键要素,然后以N…

哈尔滨工业大学DeepSeek公开课人工智能:大模型原理 技术与应用-从GPT到DeepSeek|附视频下载方法

导 读INTRODUCTION 今天继续哈尔滨工业大学车万翔教授带来了一场主题为“DeepSeek 技术前沿与应用”的报告。 本报告深入探讨了大语言模型在自然语言处理(NLP)领域的核心地位及其发展历程,从基础概念出发,延伸至语言模型在机器翻…

redis解决缓存穿透/击穿/雪崩

文章目录 1.缓存穿透1.1 概念1.2 解决方案1.2.1 缓存空对象1.2.2 布隆过滤 1.2 店铺查询使用缓存穿透解决方案1.2.1 流程 2.缓存雪崩2.1 什么是缓存雪崩?2.2 雪崩解决方案 3.缓存击穿3.1 什么是缓存击穿?3.2解决方案3.2.1 基于互斥锁解决缓存击穿问题&am…

不连续平面提取

不连续平面提取 提取流程 #mermaid-svg-Y87uP8WsVRmPYriG {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Y87uP8WsVRmPYriG .error-icon{fill:#552222;}#mermaid-svg-Y87uP8WsVRmPYriG .error-text{fill:#552222;s…

大语言模型-2.2/3-主流模型架构与新型架构

简介 本博客内容是《大语言模型》一书的读书笔记,该书是中国人民大学高瓴人工智能学院赵鑫教授团队出品,覆盖大语言模型训练与使用的全流程,从预训练到微调与对齐,从使用技术到评测应用,帮助学员全面掌握大语言模型的…

数据库操作练习

一.向heros表中新增一列信息,添加一些约束,并尝试查询一些信息 //向表中添加一列age信息 alter table heros add column age int;//id列添加主键约束,设置自增 alter table heros modify column id int auto_increment primary key;//name列…

CTF【WEB】学习笔记1号刊

Kali的小工具箱 curl www.xxx.com:查看服务器响应返回的信息 curl -I www.xxx.com:查看响应的文件头 一、cmd执行命令 ipconfig:ip地址配置等; 二、 Kali操作 1.sudo su; 2.msfconsole 3.search ms17_010 永恒之蓝&#xff…

在 SaaS 应用上构建 BI 能力的实战之路

SaaS 产品在持续运营过程中积累了大量数据,这些数据不仅是数字的记录,更是洞察市场趋势、优化产品功能、提升用户体验的宝贵资源。 因此,大部分的 SaaS 产品在发展到一定阶段后,都会开始构建自己的报表模块或分析模块,…

gonet开源游戏服务器环境配置

1.mysql搭建 搜索mysql-server apt安装包名 sudo apt search mysql-server 安装mysql-server sudo apt-get install mysql-server 安装完成后会,启动mysql服务及创建系统服务 查看服务状态 systemctl status mysql.service 使用超级权限登陆mysql sudo mysql 授…

STM32基础篇(五)------TIM定时器比较输出

简介 定时器的类型 在《STM32F10xxx参考手册(中文).pdf》中可以看到下面三个章节 因此可以得到 高级定时器含有通用定时器的所有功能,通用定时器含有基本定时器的所有功能!!!!!…