当前位置: 首页 > news >正文

MySQL数据库基础知识要点总结

目录

前言

一.数据库构成

1.1 表

1.2 关系

1.3 索引

1.4 查询语言

1.5 数据库管理系统

二.数据类型

2.1 整数

2.2 浮点

2.3 日期与时间

2.4 字符串

三.约束条件

3.1  主键约束

3.2  唯一约束

3.3  外键约束

3.4 非空约束

3.5 默认值约束

总结



前言

数据库是现代信息技术的重要组成部分,它在各个领域都有广泛应用,因此数据库专业人才的需求也非常高。学习数据库可以为你提供广阔的就业前景和良好的薪资待遇,同时也能够提升数据管理、数据分析和软件开发等多方面的技能。

本篇文章通过数据库构成,数据类型和约束条件这三个部分的内容,来让你了解数据库的基础知识。详细内容请看正文。


一.数据库构成

1.1 表

表(Table):用于组织和存储数据的矩阵结构。每个表包含一组字段(Columns)和记录(Rows),字段定义了数据的类型和属性,记录则是具体的数据实例。

示例代码:

CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50),age INT,gender VARCHAR(10)
);

1.2 关系

关系(Relationship):通过公共字段(主键和外键)连接不同表之间的数据关联。关系可以是一对一、一对多或多对多。

示例代码:

CREATE TABLE courses (id INT PRIMARY KEY,name VARCHAR(50),instructor_id INT,FOREIGN KEY (instructor_id) REFERENCES instructors(id)
);

1.3 索引

索引(Index):用于提高数据的检索效率,特别是对大型数据集进行快速搜索和排序。索引基于一个或多个列的值创建。

示例代码:

CREATE INDEX idx_students_name ON students(name);

1.4 查询语言

查询语言(SQL):用于与数据库进行交互,执行数据操作和检索。常见的查询语言是结构化查询语言(SQL)。

示例代码:

SELECT * FROM students WHERE age > 20;

1.5 数据库管理系统

数据库管理系统(DBMS):用于管理和操作数据库的软件。常见的DBMS包括MySQL、Oracle和SQL Server等。

示例代码(MySQL):

CREATE DATABASE mydb;
USE mydb;

二.数据类型

2.1 整数

整数类型一共有 5 种,包括 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)和 BIGINT。以下是MySQL中常见的日期和时间数据类型:

1. TINYINT:用于存储非常小的整数,范围是-128到127(有符号)或0到255(无符号)。占用空间1字节。

2. SMALLINT:用于存储较小的整数,范围是-32768到32767(有符号)或0到65535(无符号)。占用空间2字节。

3. MEDIUMINT:用于存储中等大小的整数,范围是-8388608到8388607(有符号)或0到16777215(无符号)。占用空间3字节。

4. INT(INTEGER):用于存储常见的整数,范围是-2147483648到2147483647(有符号)或0到4294967295(无符号)。占用空间4字节。

5. BIGINT:用于存储大整数,范围是-9223372036854775808到9223372036854775807(有符号)或0到18446744073709551615(无符号)。占用空间8字节。

这些整数数据类型可以根据需要选择有符号(可包含正负值)或无符号(仅包含非负值)。有符号整数可以表示正负整数,而无符号整数只能表示非负整数。

示例代码:

CREATE TABLE employees (id INT PRIMARY KEY,age TINYINT UNSIGNED,salary BIGINT NOT NULL,tenure SMALLINT
);

2.2 浮点

浮点数和定点数类型的特点是可以 处理小数 ,你可以把整数看成小数的一个特例。因此,浮点数和定点数的使用场景,比整数大多了。 MySQL支持的浮点数类型,分别是FLOAT、DOUBLE、REAL。以下是MySQL中常见的日期和时间数据类型:

1. FLOAT(M, D):用于存储单精度浮点数。M表示总位数(精度),D表示小数位数(标度)。FLOAT数据类型可以存储大约7位精度。
2. DOUBLE(M, D):用于存储双精度浮点数。M表示总位数(精度),D表示小数位数(标度)。DOUBLE数据类型可以存储大约15位精度。
3. DECIMAL(M, D):用于精确的十进制浮点数。M表示总位数,D表示小数位数。DECIMAL数据类型在存储和计算时具有固定的精度。

这些浮点数数据类型可以根据需要来选择合适的精度和范围。FLOAT和DOUBLE数据类型在存储大量数据时占用的空间相对较小,但存在一些舍入误差。DECIMAL数据类型提供了准确的十进制计算,但占用的存储空间相对较大。

示例代码:

CREATE TABLE products (id INT PRIMARY KEY,price FLOAT(8, 2),weight DECIMAL(6, 3)
);

2.3 日期与时间

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。以下是MySQL中常见的日期和时间数据类型:

1. DATE:用于存储日期值,格式为'YYYY-MM-DD'。

2. TIME:用于存储时间值,格式为'HH:MM:SS'。

3. DATETIME:用于存储日期和时间值,格式为'YYYY-MM-DD HH:MM:SS'。

4. TIMESTAMP:用于存储日期和时间戳值。存储的范围为'1970-01-01 00:00:01'到'2038-01-19 03:14:07',以UTC时间为基准。

5. YEAR:用于存储年份值,格式为'YYYY'。

示例代码:

CREATE TABLE events (id INT PRIMARY KEY,event_date DATE,event_time TIME,event_datetime DATETIME,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

2.4 字符串

MySQL数据库提供了多个字符串(String)数据类型,用于存储和处理文本和字符数据。以下是MySQL中常见的字符串数据类型:

1. CHAR:用于存储固定长度的字符串。在创建表时需要指定字符的最大数量。CHAR类型的字符串在存储时会被自动填充空格,因此它适合存储长度相等的数据。

2. VARCHAR:用于存储可变长度的字符串。在创建表时需要指定字符的最大数量。VARCHAR类型的字符串只会占用实际使用的存储空间,适合存储长度不等的数据。

3. TEXT:用于存储较长的文本数据,最大容量为65,535个字符。

4. ENUM:用于存储枚举值中的一个。ENUM类型提供给定选项的固定集合,您可以根据需要定义不同的选项。

5. SET:用于存储SET值中的一个或多个。SET类型提供给定选项的可变集合,您可以根据需要定义多个选项。

示例代码:

CREATE TABLE users (id INT PRIMARY KEY,first_name VARCHAR(50),last_name VARCHAR(50),email CHAR(100),bio TEXT
);

注意:

CHAR(M) 类型一般需要预先定义字符串长度。如果不指定(M),则表示长度默认是1个字符。
VARCHAR(M) 定义时, 必须指定 长度M,否则报错。char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。

三.约束条件

3.1  主键约束

主键约束(PRIMARY KEY):用于唯一标识表中的每一行数据。主键与记录之间的关系如同身份证和人之间的关系,他们是一一对应的。以下是MySQL中主键约束的一些重要特点:

1. 主键的值是唯一的:主键列的值在整个表中必须是唯一的,即每一行都有一个不同的主键值。
2. 主键不允许NULL值:主键列的值不能为NULL,确保每一行都有一个有效的主键值。
3. 主键的唯一索引:MySQL会自动为定义主键约束的列创建一个唯一索引,以提高查询效率。
4. 主键可以由一个或多个列组成:在创建表时,可以选择将多个列作为主键。这种情况下,这些列的组合必须是唯一的。
5. 主键的自动递增(AUTO_INCREMENT):通常情况下,我们会将主键列定义为自动递增的。这意味着MySQL会自动为主键列生成唯一的、递增的值。

示例代码:

CREATE TABLE users (id INT PRIMARY KEY,username VARCHAR(50),email VARCHAR(100)
);

在上述示例中,`id`列被定义为主键,它将唯一标识`users`表中的每一行。

通过使用主键约束,可以确保表中的每一行都有一个唯一的标识,帮助保持数据的一致性和完整性。主键还可以作为关联表之间的连接点,用于建立表之间的关系。

3.2  唯一约束

唯一约束(UNIQUE):用于确保某个列(或一组列)中的值是唯一的。唯一约束可以包含NULL值,但每个非NULL值都必须是唯一的。以下是MySQL中唯一约束的一些关键特点:

1. 唯一值的限制:唯一约束确保在指定的列中,每个值只能出现一次,并且不允许重复。这使得该列或组合列具有唯一性。

2. 包含NULL值:唯一约束允许在列中包含NULL值。NULL值被视为特殊值,因此在列中可以有多个NULL值,但非NULL值必须唯一。

3. 创建唯一索引:MySQL会自动为唯一约束的列创建唯一索引,以确保检索和查询的高效性。

4. 可以定义在单个列或多个列上:可以在单个列上定义唯一约束,也可以在多个列的组合上定义。对于多列的组合,这些列的组合值必须是唯一的。

示例代码:

CREATE TABLE users (id INT,username VARCHAR(50) UNIQUE,email VARCHAR(100) UNIQUE
);

在上述示例中,`username`和`email`列都被定义为唯一约束,确保表中每个用户的用户名和电子邮件地址都是唯一的。

需要注意的是,通过使用唯一约束,可以在列或组合列上强制实施数据的唯一性。这有助于避免数据重复或重复插入,并维护数据的一致性。

3.3  外键约束

外键约束(FOREIGN KEY):用于关联两个表,确保外键列中的值存在于关联表的主键列中。外键约束可以用于维护表之间的引用完整性。以下是MySQL中外键约束的一些重要特点:

1. 关联表之间的关系:外键约束用于定义表之间的关系,其中一个表中的列引用了另一个表的主键列。这种关系称为引用关系。

2. 父表和子表:在关系中,包含主键列的表称为父表,而包含外键列的表称为子表。

3. 引用完整性:外键约束确保在子表中的外键列中的值存在于父表的主键列中。这样可以防止在子表中插入无效的引用值。

4. 级联操作:在定义外键约束时,可以选择定义级联操作。这意味着在父表中进行更新或删除操作时,MySQL将自动更新或删除相关的子表中的行。

示例代码:

CREATE TABLE customers (id INT PRIMARY KEY,name VARCHAR(100)
);CREATE TABLE orders (id INT PRIMARY KEY,customer_id INT,order_date DATE,FOREIGN KEY (customer_id) REFERENCES customers(id)
);

在上述示例中,`orders`表中的`customer_id`列被定义为外键,引用了`customers`表中的`id`列。这样就建立了`customers`表和`orders`表之间的关联。

3.4 非空约束

非空约束(NOT NULL):用于确保某个列中的值不为空,即不允许NULL值。以下是MySQL中非空约束的一些关键特点:

1. 强制不为空值:非空约束要求在指定的列中插入的值不能为NULL。这意味着该列不能没有值,必须包含一个有效的值。

2. 默认情况下允许为NULL:在创建表时,如果没有显式地指定非空约束,那么表中的列默认情况下是允许为NULL的。

3. 在插入或更新时进行验证:当尝试插入或更新某一行的数据时,MySQL会自动验证非空约束,确保所要插入或更新的列不为空。

4. 阻止插入或更新空值:如果尝试插入或更新数据时提供了NULL值,而该列具有非空约束,MySQL将拒绝该操作,并抛出相应的错误或警告。

示例代码:

CREATE TABLE employees (id INT PRIMARY KEY,name VARCHAR(100) NOT NULL,age INT NOT NULL,department VARCHAR(50)
);

在上述示例中,`name`和`age`列被定义为非空约束,这表示在插入或更新数据时,这两个列必须包含非NULL的值。

3.5 默认值约束

默认值约束(DEFAULT):用于在插入数据时,如果未提供该列的值,则将使用默认值。以下是MySQL中默认值约束的一些关键特点:

1. 设置默认值:默认值约束用于指定列在插入时应具有的默认值。可以使用各种数据类型的字面值作为默认值,例如字符串、数字、NULL等。

2. 针对NULL值的默认值:当列的默认值设置为NULL时,如果未提供明确值或NULL以外的值,MySQL将自动插入NULL作为默认值。

3. 指定默认值的位置:在创建表时,可以在列定义之后使用DEFAULT关键字来指定默认值。也可以通过ALTER TABLE语句在已存在的表上添加默认值。

4. 修改默认值:可以随时通过ALTER TABLE语句修改现有列的默认值。

示例代码:

CREATE TABLE employees (id INT PRIMARY KEY,name VARCHAR(100) DEFAULT 'N/A',age INT DEFAULT 0,department VARCHAR(50) DEFAULT NULL
);

在上述示例中,`name`列的默认值设置为字符串'N/A',`age`列的默认值设置为整数0,`department`列的默认值设置为NULL。

通过使用默认值约束,可以确保在插入数据时如果未显式提供值,那么将使用默认值填充列,从而简化了对那些常见的默认值的重复输入,提高了数据插入的效率和简洁性。


总结

总的来说,数据库是一个组织和存储数据的系统。它可以被视为一个电子文件柜,用于收集、管理和提供对数据的访问。数据库通常由数据表、记录和字段组成,这些表用于存储不同类别的数据,并通过键值关系相互连接。
关注,点赞,收藏,希望友友们能一键三连哦!

相关文章:

MySQL数据库基础知识要点总结

目录 前言 一.数据库构成 1.1 表 1.2 关系 1.3 索引 1.4 查询语言 1.5 数据库管理系统 二.数据类型 2.1 整数 2.2 浮点 2.3 日期与时间 2.4 字符串 三.约束条件 3.1 主键约束 3.2 唯一约束 3.3 外键约束 3.4 非空约束 3.5 默认值约束 总结 前言 数据库是…...

基础运维(一)YUM仓库

一 自定义YUM仓库 1 Yum仓库特点 作为yum源需要准备的内容 大量的rpm 软件安装包文件针对这些软件包的 repodata/ 仓库档案 repodata/ 仓库档案数据 filelists.xml.gz // 软件包的文件安装清单primary.xml.gz // 软件包的基本/主要信息other.xml.gz // 软件包…...

递归算法讲解,深度理解递归

首先最重要的就是要说明递归思想的作用,在后面学习的高级数据接口,树和图中,都需要用到递归,即深度优先搜索,如果递归掌握的不好,后面的数据结构将举步为艰。 加油 首先看下如何下面两个方法有什么区别&a…...

网络通信(套接字通信)(C/C++)

1.网络编程必知概念 1.广域网和局域网 广域网:又称外网、公网。是连接不同地区局域网或城域网进行计算机通信的远程公共网络。 局域网:在一定的通信范围内,有很个多计算机组成的私有网络就叫局域网。(这些计算机相互之间是可以通信的,但是不能直接访问外网(可以通过网线…...

anaconda navigator启动时一直卡在 loading applications 页面

anaconda navigator启动时一直卡在 loading applications 页面 方法1 在安装目录找到D:\anaconda\Lib\site-packages\anaconda_navigator\api 然后打开conda_api.py, 在1358行找到data yaml.load(f),将其改为data yaml.safeload(f) 猜测为保证代码…...

力扣刷题-链表-删除链表的倒数第N个节点

19.删除链表的倒数第N个节点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5] 示例 2:输入:head [1], n 1 输出&…...

Blender DreamUV插件使用简明教程

DreamUV 是一个可让你在Blender的 3D 视口中操纵 UV的工具集合。 该工具集设计用于可重复使用的纹理,例如平铺纹理、装饰表和纹理图集。 其目的是让你无需退出 3D 视图即可对几何体进行纹理处理,从而节省时间并提高灵活性。 1、安装DreamUV 首先下载为…...

AI在线工具分享

1、ChatGPT ChatGPT是一种由OpenAI训练的大型语言模型。它的原理是基于Transformer架构,通过预训练大量文本数据来学习如何生成人类可读的文本,然后通过接受输入并生成输出来实现对话。 ChatGPT的用途非常广泛,可以用于自然语言处理&#xf…...

Matlab批量处理测试数据的方法:以VCO的调谐测试曲线处理为例

我们都知道得到的VCO调谐曲线是一根一根扫出来的,如果要手动对数据进行处理很麻烦。 (当然最好是搭建一个自动化测试平台,一边测试一边把数据抓取了,这个以后可以搞一下再更新) 目前还是手动测量的情况下,…...

VScode断点调试vue

VScode断点调试vue 1、修改launch.js文件(没有这个文件就新建)。 {// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlin…...

20吨屠宰鸡鸭鹅一体化污水处理设备加工厂家

20吨屠宰鸡鸭鹅一体化污水处理设备加工厂家 溶气气浮机主要构造说明 气浮系统气浮系统集进水、絮凝、分离、集水、出水于一体,与传统气浮设备类似,设有一个稳流室、溶气释放室,使处理性能更稳定,效果更优越。 稳定室:通…...

android被杀以后fragments缓存重建问题和测试方法

这个问题,其实不是太好复现。因为在android的缓存Fragment机制是写在androidx的库中。 主要的原因是android Framework机制: framework at yourpackage.onSaveInstanceState(XXXActivity.kt:118) at android.app.Activity.performSaveInstanceState(A…...

Visual Studio 2017 安装

C自学精简实践教程 目录(必读) 这篇文章会保证你第一次安装VS2017就成功运行Hello World! 下载Visual Studio Installer Gitee 下载 VS2017/vs2017_Community.exe CalmReason/VisualStudio - 码云 - 开源中国 (gitee.com) 百度云下载 链接:https://pan.baidu…...

day5|242.有效的字母异位词、349. 两个数组的交集

242.有效的字母异位词 题目链接:https://leetcode.cn/problems/valid-anagram/ 文章链接:https://programmercarl.com/0242.%E6%9C%89%E6%95%88%E7%9A%84%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D.html 视频链接:https://www.bilibili.…...

【Python基础】常用模块学习:sys|os|pytest

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…...

【煤矿虚拟仿真体验】VR采煤机技能培训有效提高训练效果

在我们的社会中,能源是至关重要的。它是推动我们日常生活和工作的主要动力。然而,我们在获取这种能源的过程中,也带来了许多环境问题。煤矿开采是其中的一个重要部分,因此我们需要寻找更环保、更安全的方式来进行煤矿开采。VR&…...

渲染路径RenderingPath

文章目录 前言一、什么是渲染路径二、渲染路径有哪些1、前向渲染路径2、延迟渲染路径3、顶点照明渲染路径(已过时)4、旧的渲染路径(已过时) 前言 渲染路径RenderingPath 一、什么是渲染路径 为进行光照计算而设计的渲染方式 二、渲染路径有哪些 1、前向…...

【Java】泛型 之 extends通配符

我们前面已经讲到了泛型的继承关系&#xff1a;Pair<Integer>不是Pair<Number>的子类。 假设我们定义了Pair<T>&#xff1a; public class Pair<T> { ... }然后&#xff0c;我们又针对Pair<Number>类型写了一个静态方法&#xff0c;它接收的参…...

光谱-空间特征分割提取:多光谱图像压缩

Spectral–Spatial Feature Partitioned Extraction Based on CNN for Multispectral Image Compression &#xff08;基于CNN的光谱-空间特征分割提取多光谱图像压缩&#xff09; 近年来&#xff0c;多光谱成像技术的迅速发展引起了各领域的高度重视&#xff0c;这就不可避免…...

绝缘子主要尺寸

声明 本文是学习GB-T 1000-2016 高压线路针式瓷绝缘子尺寸与特性. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了高压线路针式瓷绝缘子的结构型式、尺寸、机械特性和电气特性。 本标准适用于标称电压为10 kV 及以下、频率不高于…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...