MySQL创建表完全指南-从零开始学习数据库设计

news2024/11/19 7:33:46

image.png

MySQL创建表快速指南

在大数据时代,掌握数据库技能至关重要。无论你是刚入门的开发者,还是经验丰富的数据分析师,了解如何创建MySQL表格都是必备技能。本文将为你详细讲解MySQL创建表格的全过程,帮助你快速上手数据库设计。
image.png

1. 连接到MySQL服务器

首先,确保你已经安装了MySQL并且服务正在运行。使用以下命令连接到MySQL服务器:

mysql -u your_username -p

输入密码后,你就成功进入了MySQL命令行界面。
image.png

2. 选择或创建数据库

在创建表格之前,你需要选择一个数据库。如果没有合适的数据库,可以先创建一个:

CREATE DATABASE my_database;
USE my_database;

image.png

3. 创建表格的基本语法

MySQL创建表格的基本语法如下:

CREATE TABLE table_name (
    column1 datatype constraints,
    column2 datatype constraints,
    ...,
    PRIMARY KEY (column_name)
);

image.png

4. 实际案例:创建一个用户表

让我们通过一个实际例子来学习如何创建表格:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

这个例子中,我们创建了一个名为users的表格,包含以下字段:

  • id: 自增的主键
  • username: 用户名,不允许重复
  • email: 邮箱,不允许重复
  • password: 密码
  • created_at: 创建时间,默认为当前时间
    image.png

5. 数据类型的选择

选择合适的数据类型对于表格设计至关重要。以下是一些常用的MySQL数据类型:

  • INT: 整数
  • VARCHAR(n): 可变长度字符串
  • TEXT: 长文本
  • DATE: 日期
  • TIMESTAMP: 时间戳
  • DECIMAL(m,n): 精确小数
    image.png

6. 约束条件

约束条件用于限制表中的数据。常用的约束包括:

  • NOT NULL: 字段不能为空
  • UNIQUE: 字段值必须唯一
  • PRIMARY KEY: 主键
  • FOREIGN KEY: 外键
  • CHECK: 检查约束
  • DEFAULT: 默认值

image.png

7. 查看和修改表结构

创建表格后,你可以使用以下命令查看表结构:

DESCRIBE users;

如果需要修改表结构,可以使用ALTER TABLE命令:

ALTER TABLE users ADD COLUMN age INT;

image.png

MySQL表格创建进阶技巧:优化设计与性能

在掌握了MySQL创建表格的基础知识后,让我们深入探讨一些进阶技巧和最佳实践,以帮助你优化数据库设计和提升性能。

1. 索引优化

索引是提高查询性能的关键。但过度使用索引也可能导致写入性能下降,因此需要权衡。

image.png

创建索引的基本语法:

CREATE INDEX index_name ON table_name (column1, column2, ...);

复合索引示例:

CREATE INDEX idx_username_email ON users (username, email);

提示:对经常一起使用的列创建复合索引,可以大大提高查询效率。

2. 分区表

分区可以提高大表的查询性能和管理效率。
image.png

创建分区表示例:

CREATE TABLE sales (
    id INT,
    amount DECIMAL(10,2),
    sale_date DATE
)
PARTITION BY RANGE (YEAR(sale_date)) (
    PARTITION p0 VALUES LESS THAN (2020),
    PARTITION p1 VALUES LESS THAN (2021),
    PARTITION p2 VALUES LESS THAN (2022),
    PARTITION p3 VALUES LESS THAN MAXVALUE
);

这个例子按年份对销售数据进行了分区,可以显著提高按日期查询的性能。

3. 存储引擎选择

MySQL提供多种存储引擎,最常用的是InnoDB和MyISAM。

  • InnoDB:支持事务,行级锁定,适合高并发写入场景。
  • MyISAM:适合大量读取操作,不支持事务。
    image.png

指定存储引擎:

CREATE TABLE mytable (
    id INT PRIMARY KEY
) ENGINE = InnoDB;

4. 字符集和排序规则

选择合适的字符集和排序规则对于国际化应用很重要。

CREATE TABLE users (
    name VARCHAR(50)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

utf8mb4支持emoji等特殊字符,unicode_ci提供了准确的排序和比较。

5. 虚拟列

MySQL 5.7+支持虚拟列,可以基于其他列的表达式自动计算。

CREATE TABLE rectangle (
    id INT PRIMARY KEY,
    length INT,
    width INT,
    area INT AS (length * width) VIRTUAL
);

这里的area是一个虚拟列,会自动根据长度和宽度计算。

6. 外键约束

外键可以维护数据的一致性,但也可能影响性能。

CREATE TABLE orders (
    id INT PRIMARY KEY,
    user_id INT,
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);

ON DELETE CASCADE表示当用户被删除时,相关的订单也会被自动删除。

7. 表压缩

对于InnoDB表,可以使用表压缩来节省存储空间。

CREATE TABLE compressed_table (
    id INT PRIMARY KEY
) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;

8. 命名约定

采用一致的命名约定可以提高代码的可读性和维护性。

  • 使用小写字母和下划线
  • 表名使用复数形式(如users, orders)
  • 主键列名为id
  • 外键列名为关联表名的单数形式加_id(如user_id)

MySQL表格创建进阶技巧:优化设计与性能

在掌握了MySQL创建表格的基础知识后,让我们深入探讨一些进阶技巧和最佳实践,以帮助你优化数据库设计和提升性能。

1. 索引优化

索引是提高查询性能的关键。但过度使用索引也可能导致写入性能下降,因此需要权衡。

创建索引的基本语法:

CREATE INDEX index_name ON table_name (column1, column2, ...);

复合索引示例:

CREATE INDEX idx_username_email ON users (username, email);

提示:对经常一起使用的列创建复合索引,可以大大提高查询效率。

2. 分区表

分区可以提高大表的查询性能和管理效率。

创建分区表示例:

CREATE TABLE sales (
    id INT,
    amount DECIMAL(10,2),
    sale_date DATE
)
PARTITION BY RANGE (YEAR(sale_date)) (
    PARTITION p0 VALUES LESS THAN (2020),
    PARTITION p1 VALUES LESS THAN (2021),
    PARTITION p2 VALUES LESS THAN (2022),
    PARTITION p3 VALUES LESS THAN MAXVALUE
);

这个例子按年份对销售数据进行了分区,可以显著提高按日期查询的性能。

3. 存储引擎选择

MySQL提供多种存储引擎,最常用的是InnoDB和MyISAM。

  • InnoDB:支持事务,行级锁定,适合高并发写入场景。
  • MyISAM:适合大量读取操作,不支持事务。

指定存储引擎:

CREATE TABLE mytable (
    id INT PRIMARY KEY
) ENGINE = InnoDB;

4. 字符集和排序规则

选择合适的字符集和排序规则对于国际化应用很重要。

CREATE TABLE users (
    name VARCHAR(50)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

utf8mb4支持emoji等特殊字符,unicode_ci提供了准确的排序和比较。

5. 虚拟列

MySQL 5.7+支持虚拟列,可以基于其他列的表达式自动计算。

CREATE TABLE rectangle (
    id INT PRIMARY KEY,
    length INT,
    width INT,
    area INT AS (length * width) VIRTUAL
);

这里的area是一个虚拟列,会自动根据长度和宽度计算。

6. 外键约束

外键可以维护数据的一致性,但也可能影响性能。

CREATE TABLE orders (
    id INT PRIMARY KEY,
    user_id INT,
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);

ON DELETE CASCADE表示当用户被删除时,相关的订单也会被自动删除。

7. 表压缩

对于InnoDB表,可以使用表压缩来节省存储空间。

CREATE TABLE compressed_table (
    id INT PRIMARY KEY
) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;

8. 命名约定

采用一致的命名约定可以提高代码的可读性和维护性。

  • 使用小写字母和下划线
  • 表名使用复数形式(如users, orders)
  • 主键列名为id
  • 外键列名为关联表名的单数形式加_id(如user_id)

结语

通过运用这些进阶技巧,你可以创建出更高效、更易维护的数据库结构。记住,数据库设计是一个需要不断优化的过程。随着数据量的增长和应用需求的变化,你可能需要重新评估和调整你的表结构。

持续学习和实践这些概念,你将能够设计出能够应对各种挑战的强大数据库架构。

MySQL表格创建与优化.png

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux 的超级记事本(代码编辑器) —— vim

Linux 的超级记事本(代码编辑器) —— vim 关于 vimvim 的使用入门级使用——多模式基础使用——多模式插入模式(Insert mode)理解 命令模式(command mode)理解命令集 底行模式(last line mode&…

Logback 快速入门

一、简介 Java 开源日志框架,以继承改善 log4j 为目的而生,是 log4j 创始人 Ceki Glc 的开源产品。 它声称有极佳的性能,占用空间更小,且提供其他日志系统缺失但很有用的特性。 其一大特色是,在 logback-classic 中本…

5G 基站特有的 5 个关键同步挑战

随着 5G 的推出和 O-RAN 联盟等举措,移动设备领域正在遭遇相当大的颠覆,这当然适用于基站和移动回程。 从手机到物联网设备,设备数量呈爆炸式增长,再加上移动视频流、工业物联网和汽车应用等新应用,给移动网络带来了容…

自学JavaScript(放假在家自学第一天)

目录 JavaScript介绍分为以下几点 1.1 JavaScript 是什么 1.2JavaScript书写位置 1.3 Javascript注释 1.4 Javascript结束符 1.5 Javascript输入输出语法 JavaScript(是什么?) 是一种运行在客户端(浏览器)的编程语言,实现人机交互效果。 2.作用(做什么?)网…

算法-插入排序

插入排序步骤 前面文章分享了两种排序算法:冒泡排序和选择排序。虽然它们的效率都是O(N2),但其实选择排序比冒泡排序快一倍。现在来学第三种排序算法——插入排序。你会发现,顾及最坏情况以外的场景将是多么有用。 插入排序包括以下步骤。 …

从0开始搭建vue + flask 旅游景点数据分析系统(一):创建前端项目

根据前面的爬虫课程,我们重新开一个坑,就是基于爬取到的数据,搭建一个vueflask的前后端分离的数据分析系统 1 通过这个系列教程可以学习到什么? 从0开始搭建一个 vue flask 的数据分析系统;了解系统的整体架构&…

BSPTool工具

BSPTool工具 链接:https://pan.baidu.com/s/1UxMPjJtCHHkadFwnOfLqww?pwd1234 提取码:1234 1.使用方式 下载下来后,双击exe即可 2.MTK常用工具 2.1 MTK导出日志功能 2.2 导fulldump日志 2.3 .合并日志: 2.4 ADB指令集合 2.5 Fastboot指…

传统自然语言处理(NLP)与大规模语言模型(LLM)详解

自然语言处理(NLP)和大规模语言模型(LLM)是理解和生成人类语言的两种主要方法。本文将介绍传统NLP和LLM的介绍、运行步骤以及它们之间的比较,帮助新手了解这两个领域的基础知识。 传统自然语言处理(NLP&…

指针!!C语言(第三篇)

目录 一. 二维数组传参的本质 二. 函数指针变量和函数指针数组 三. typedef关键字 四. 转移表 五. 回调函数以及qsort使用举例 一. 二维数组传参的本质 🍟首先我们先回顾一下二维数组是怎样传参的?我们需要传入数组名以及行数和列数,这…

VS C++ Project(项目)的工作目录设置

如果只是简单创建一个VS CProject或者MFC Project,可能很多时候,只关心将Project放在硬盘的那个位置,与Project目录相关的的其他问题,并不引人注意,我们也不是十分在意。有时我们不得不进行工作目录方面的设置&#xf…

Javascript前端面试(七)

JavaScript 部分 1. JavaScript 有哪些数据类型,它们的区别? JavaScript 共有八种数据类型,分别是 Undefined、Null、Boolean、 Number、String、Object、Symbol、BigInt。 其中 Symbol 和 BigInt 是 ES6 中新增的数据类型: ●Sym…

卷积神经网络(一)---原理和结构

在介绍卷积神经网络之前,先提出三个观点,正是这三个观点使得卷积神经网络能够真正起作用。 1. 局部性 对于一张图片而言,需要检测图片中的特征来决定图片的类别,通常情况下这些特征都不是由整张图片决定的,而是由一些…

暑期集训周报三

题解 SMU Summer 2024 Contest Round 8-CSDN博客 CSDN 积累题目 dp 1.花店橱窗 思路:用dp[i][j]表示第i个放在j位置上的最大价值,那么我们可以枚举i-1被放在了区间[i-1,j-1]的那个位置,找到最大价值部分,然后更新dp[i][j]&a…

gitee的远程连接与公钥SSH的连接

目录 1. 登录注册gitee1.1 登录注册1.2 创建仓库 2. 远程连接3. 公钥连接4. 参考链接 1. 登录注册gitee 1.1 登录注册 gitee官网 进入后进行登录注册 1.2 创建仓库 2. 远程连接 在你想要上传文件的文件夹中进行git初始化(我在其他文章已经写过,链接…

FastAPI(七十六)实战开发《在线课程学习系统》接口开发-- 课程详情

源码见:"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 这个接口用户可以不登录,因为我们的课程随意浏览 那么我们梳理下这里的逻辑 1.根据课程id判断课程是否存在 2.课程需要返回课程的详情 3…

X-AnyLabeling标注软件使用方法

第一步 下载 官方X-AnyLabeling下载地址 github:X-AnyLabeling 第二步 配置环境 使用conda创建新的虚拟环境 conda create -n xanylabel python3.8进入环境 conda activate xanylabel进入X-AnyLabeling文件夹内,运行下面内容 依赖文件系统环境运行环…

【把玩数据结构】详解队列

目录 队列介绍队列概念队列的结构生活中的队列 队列的实现队列的初始化队列的销毁队尾入队列队头出队列获得队头元素获得队尾元素统计队列元素个数 队列介绍 队列概念 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表。队列遵…

Python 代码中的 yield 到底是什么鬼?

在Python编程中,有一个强大而神秘的关键字,那就是yield。初学者常常被它搞得晕头转向,而高级开发者则借助它实现高效的代码。到底yield是什么?它又是如何在Python代码中发挥作用的呢?让我们一起来揭开它的面纱。 Pyth…

Chrome浏览器设置暗黑模式 - 护眼模式 - 亮度调节 - DarkReader - 地址栏和书签栏设置为黑色背景

效果图 全黑 浅灰 (DarkReader设置开启亮色亮度-25) 全白 前言 主要分两部分需要操作, 1)地址栏和书签栏 》 需要修改浏览器的外观模式 2)页面主体 》 需要安装darkreader插件进行设置 步骤 1)地址栏和…

Unity UGUI 实战学习笔记(3)

仅作学习,不做任何商业用途 不是源码,不是源码! 是我通过"照虎画猫"写的,可能有些小修改 不提供素材,所以应该不算是盗版资源,侵权删 拼UI 提示面板的逻辑 using System.Collections; using System.Col…