mysql数据库模式编写入门指南

用一个文本编辑器和这个基本的结构大纲或“模式”创建你自己的mySQL数据库...

在开发一个软件项目时,最重要的、基本的和内在的方面之一是一个结构合理的数据库模式。这相当于建造一所需要确保地基适当铺设的房子,否则建造优质房屋的机会大大减少。

Create a mySQL database schema

令人惊讶的是,这比人们想象的要容易得多,让我们学习一下用于编写结构良好的数据库模式的各个方面。

创建表语法

首先,打开您喜爱的文本编辑器。创建数据库架构只需要一个纯文本文件。数据库由多个表组成,每个表由列组成,CREATE TABLE语法用于创建单个表。下面是一个基本示例:

CREATE TABLE users (id INT NOT NULL,is_active TINY INT NOT NULL,full_name VAR CHAR(100) NOT NULL,email VARCHAR(100) NOT NULL);

如您所见,这将创建一个名为users的数据库表,该表由四列组成。这应该是一个相当直截了当的SQL语句,以CREATE TABLE开头,后跟数据库表的名称,然后在括号内用逗号分隔表的列。

使用正确的列类型

如上所示,表中包含的列用逗号分隔。每个列定义由三个相同的部分组成:

COL_NAME TYPE [OPTIONS]

列的名称,后跟列类型,然后是任何可选参数。稍后我们将讨论可选参数,但重点是列类型,下面列出了可用的最常用列类型:

出于所有目的,上面的列类型都是编写构造良好的mySQL数据库模式所需要的。

定义列选项

定义列时,还可以指定各种选项。下面是CREATE TABLE语句的另一个示例:

CREATE TABLE users (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,username VARCHAR(100) NOT NULL UNIQUE,status ENUM('active','inactive') NOT NULL DEFAULT 'active',balance DECIMAL(8,2) NOT NULL DEFAULT 0,date_of_birth DATETIME,created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP);

上面这些看起来有点吓人,但不用担心,很简单。分解一下,下面是在上面的陈述中发生的事情:

  • 您应该始终在所有可能的列上使用notnull,以帮助提高表的速度和性能。这只是指定**行时列不能为空/空。
  • 始终尽量保持列大小尽可能小,因为这有助于提高速度和性能。
  • id列是一个整数,也是表的主键,这意味着它是唯一的,并且每次**一条记录时都会增加一个。这通常应用于您创建的所有表,以便您可以轻松地引用表中的任何一行。
  • 状态列是枚举,必须具有“active”或“inactive”值。如果未指定值,则新行将以“活动”状态开始。
  • 对于每一新行,“余额”列从0开始,其格式为两个小数点。
  • “出生日期”列只是一个日期,但也允许空值,因为在创建时可能不知道出生日期。
  • 最后,created_at列是一个时间戳,默认为**行的当前时间。

上面是一个结构良好的数据库表的示例,应该用作以后的示例。

将表与外键约束链接在一起

使用关系数据库(如mySQL)的最大优点之一是它非常支持外键约束和级联。这是指通过列将两个表链接在一起,形成父子关系,因此删除父行时,也会自动删除必要的子行。

举个例子:

CREATE TABLE users (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,username VARCHAR(100) NOT NULL UNIQUE,full_name VARCHAR(100) NOT NULL,created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP) engine=InnoDB;CREATE TABLE orders (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,userid INT NOT NULL,amount DECIMAL(8,2) NOT NULL,product_name VARCHAR(200) NOT NULL,FOREIGN KEY (userid) REFERENCES users (id) ON DELETE CASCADE) engine=InnoDB;

您将注意到外键子句是最后一行。这一行只是说明这个表包含子行,这些子行由userid列链接到它们的父行,父行是users表的id列。这意味着,每当从users表中删除一行时,mySQL都会自动从orders表中删除所有相应的行,从而确保数据库的结构完整性。

还要注意上面语句末尾的engine=InnoDB。尽管InnoDB现在是默认的mySQL表类型,但并不总是这样,所以为了安全起见,应该添加它,因为级联只适用于InnoDB表。

自信地设计

现在,您可以很好地构建可靠、结构良好的mySQL数据库模式了。利用以上知识,您现在可以编写组织良好的模式,同时提供性能和结构完整性。

在您的模式就位后,确保您知道如何将其与这些基本的SQL命令一起使用。

  • 发表于 2021-03-26 19:24
  • 阅读 ( 213 )
  • 分类:编程

你可能感兴趣的文章

如何用java连接mysql数据库

Java提供JDBC(Java数据库连接),作为JavaSDK(软件开发工具包)的一部分。使用这个API,很容易连接到关系数据库,并执行查询、**、更新和删除记录等常见操作。 ...

  • 发布于 2021-03-11 17:39
  • 阅读 ( 331 )

如何在windows上安装mysql数据库

如果您经常编写连接到数据库服务器的应用程序,那么如果您知道如何在Windows机器上安装MySQL数据库以进行测试,这会有所帮助。 ...

  • 发布于 2021-03-11 21:33
  • 阅读 ( 347 )

如何在raspberry pi上托管wordpress站点

...个阶段,你有一个网站,你可以开始使用。我们的WordPress入门指南将在这里提供帮助。别忘了选择一个主题和一些有用的插件。你还需要一个从互联网访问网站的方法。 ...

  • 发布于 2021-03-21 11:33
  • 阅读 ( 247 )

如何在一个树莓圆周率主持自己的网站

...令重新启动Apache。现在已经安装了LAMP服务器,可以安装数据库驱动的PHP web应用程序和网站了。 ...

  • 发布于 2021-03-21 14:29
  • 阅读 ( 222 )

如何在多个设备上同步或共享kodi媒体库

...动并运行。服务器将成为媒体库的后端,从而取代Kodi库数据库。使用Emby后端还可以在设备之间同步视频的观看状态。 ...

  • 发布于 2021-03-25 01:38
  • 阅读 ( 589 )

什么是wordpress开发者?5种必备技能

... 5mysql数据库 ...

  • 发布于 2021-03-26 19:49
  • 阅读 ( 457 )

为下一个项目考虑6个数据库引擎

对于软件开发中的数据库引擎来说,并不是一刀切的,因为这完全取决于您的项目需求。 ...

  • 发布于 2021-03-28 09:56
  • 阅读 ( 257 )

如何使用mysql跨多个设备同步kodi库

... 你需要什么 我们将要实现的同步魔法的核心是一个MySQL数据库。如果你以前从未使用过,不要惊慌!它确实需要一点技术诀窍,但我们在这里指导您的每一步。如果你紧跟其后,就不会有任何问题。 我们要做的是安装一个免...

  • 发布于 2021-04-07 04:56
  • 阅读 ( 436 )

如何建立自己的同步rss阅读器与微型rss

...b服务器,他们支持PHP并且已经安装了它,并且使设置MySQL数据库成为一键式的事情。或者,如果你不想使用网络主机,你可以在家里的Linux电脑上安装微型RSS。这有点复杂,您需要自己安装PHP和MySQL,但并不太难。在本指南中,...

  • 发布于 2021-05-24 05:41
  • 阅读 ( 467 )

(用熟石膏、木板等)装天花板(ceil)和sql中的楼层(floor in sql)的区别

...,而FLOOR有助于获得小于或等于一个数字的最大整数值。 数据库管理系统(DBMS)是一种帮助存储和管理数据库中数据的软件。遵循关系模型的DBMS是关系DBMS(RDBMS)。有各种RDBMS,比如MySQL。程序员可以执行结构化查询语言(SQL)...

  • 发布于 2021-07-01 10:01
  • 阅读 ( 251 )
zogiqa0385
zogiqa0385

0 篇文章

相关推荐