《PHP和MySQL Web开发从新手到高手(第5版)》一一2.5 创建表

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

本节书摘来自异步社区出版社《PHP和MySQL Web开发从新手到高手(第5版)》一书中的第2章,第2.节,作者: 【澳】Kevin Yank,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.5 创建表

PHP和MySQL Web开发从新手到高手(第5版)
目前为止,我们所遇到的SQL命令都相当简单。但是,表是如此具有灵活性。因此,需要一条较为复杂的命令才能创建它。这条命令的基本形式如下:

CREATE TABLE table_name (
 column1Name column1Type column1Details,
 column2Name column2Type column2Details,
 ⋮

) DEFAULT CHARACTER SET charset ENGINE=InnoDB
让我们继续讨论如图2.1所示的joke表。你还记得吧,这个表有3列:id(一个数字)、joketext(笑话的文本)和jokedate(输入笑话的日期)。以下是创建该表的命令:

CREATE TABLE joke (
 id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
 joketext TEXT,
 jokedate DATE NOT NULL
) DEFAULT CHARACTER SET utf8 ENGINE=InnoDB

看上去很费解是吧?让我们分解一下:

CREATE TABLE joke (

第一行相当简单,它表示想要创建一个名为joke的新表。开始的括号“”,表示其后是一个列表,将会列出表中的各个列。

id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

第二行表示我们想要一个名为id的列,其中包含了一个整数(INT)。也就是说,这是一个完整的数字。该行剩下的部分则表示这个列的细节:

1.首先,在这个表中创建一个行的时候,这个列不能为空(NOT NULL)。

2.接下来,在向该表添加一个新的条目的时候,如果不想为该列指定一个值,我们希望MySQL自动去选择一个值,这个值即是在表中当前最高值的基础上加1(AUTO_INCREMENT)。

3.最后,这个列充当表中的条目的一个唯一标识符。因此,该列中的所有的值都必须是唯一的(PRIMARY KEY)。

joketext TEXT,

第三行非常简单,它表示我们想要一个名为joketext的列,其中包含了文本(TEXT)。

jokedate DATE NOT NULL

第四行确定了最后一列,名为jokedate,它将包含一个不能为空(NOT NULL)的日期(DATE)。

) DEFAULT CHARACTER SET utf8

结束圆括号“”表示表中的列的列表到此结束。DEFAULT CHARACTER SET utf8告诉MySQL,我们将在表中存储UTF-8编码的文本。UTF-8是Web内容最常用的编码。因此,对于要在Web上使用的所有数据库表,都应该使用UTF-8编码。

ENGINE=InnoDB

如上所示,这告诉MySQL,使用哪个存储引擎(storage engine)来创建这个表。

请把存储引擎当作是文件格式。当你构建一个Web站点的时候,通常选择对站点上的照片使用JPEG格式。但是,对于构成站点设计的图像,请坚持使用PNG格式。这两种格式浏览器都能够支持,不过,每种格式都有自己的优点和缺点。同样,MySQL也支持多种格式的数据库表。

目前为止,对类似于我在本书中构建的Web站点数据库来说,InnoDB格式是最佳选择。然而,较早的MyISAM格式是默认的格式。因此,我们必须告知MySQL,期望它创建一个InnoDB表。

注意,我们为所创建的每一列都指定了一个特定的数据类型。id将包含整数,joketext将包含文本,jokedate将包含日期。MySQL要求提前为每一列指定数据类型。稍后你将会看到,这有助于组织好数据,还允许我们用强有力的方式来比较列中的值。要了解MySQL数据类型的列表,请参见附录D。

现在,如果你正确地输入了如上所示的命令并单击Go按钮,phpMyAdmin主窗口将确认查询正确地执行了,并将创建你的第一个表。如果你犯了录入错误,phpMyAdmin将告诉你所输入的查询有一个问题,并且将尝试指出它在理解你的意图的时候在哪里遇到了问题。

让我们查看新的表,并确认已正确地创建了它。在SQL查询窗口中输入如下的命令,并且单击Go按钮:

image
SHOW TABLES
phpMyAdmin应该会显示如图2.11所示的输出。

这个列表,是你的数据库(我们将其命名为ijdb)中的所有的表的列表。这个列表只包含了一个表:我们所创建的joke表。因此,到目前为止,一切似乎都很好。让我们使用一条DESCRIBE查询来进一步查看这个joke表:

DESCRIBE joke
如图2.12所示,该表中有3列(或字段)。因而,在这个结果表中有3行。虽然细节有点难以理解,但是如果你仔细看一下,应该能够搞清楚它们的含义。不过,不必担心。有更好的事情要做,诸如向表中添加一些笑话。

在做这件事情之前,我们还有一个任务:删除一个表。这个任务很简单,就像用一条DROP DATABASE命令删除一个数据库一样简单。只不过在这里,phpMyAdmin不会为你提供保护。除非你真的想要删除joke表,否则,不要对它运行这条命令。如果你真的想要删除它,那么,准备好从头开始创建joke表吧。

**image
DROP TABLE tableName**

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
24天前
|
前端开发 安全 JavaScript
2025年,Web3开发学习路线全指南
本文提供了一条针对Dapp应用开发的学习路线,涵盖了Web3领域的重要技术栈,如区块链基础、以太坊技术、Solidity编程、智能合约开发及安全、web3.js和ethers.js库的使用、Truffle框架等。文章首先分析了国内区块链企业的技术需求,随后详细介绍了每个技术点的学习资源和方法,旨在帮助初学者系统地掌握Dapp开发所需的知识和技能。
2025年,Web3开发学习路线全指南
|
27天前
|
存储 关系型数据库 MySQL
PHP与MySQL动态网站开发:从基础到实践####
本文将深入探讨PHP与MySQL的结合使用,展示如何构建一个动态网站。通过一系列实例和代码片段,我们将逐步了解数据库连接、数据操作、用户输入处理及安全防护等关键技术点。无论您是初学者还是有经验的开发者,都能从中获益匪浅。 ####
|
23天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
1月前
|
安全 关系型数据库 MySQL
PHP与MySQL动态网站开发实战指南####
——深入探索LAMP栈下的高效数据交互与处理技巧 ####
|
28天前
|
关系型数据库 MySQL PHP
php实现一个简单的MySQL分页
通过本文的详细步骤和代码示例,我们实现了一个简单的PHP MySQL分页功能。主要步骤包括计算总记录数、设置分页参数、查询当前页的数据以及生成分页链接。这种分页方式适用于大多数Web应用,能够有效提升用户体验和页面响应速度。
26 4
|
1月前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
34 7
|
1月前
|
关系型数据库 MySQL PHP
PHP与MySQL动态网站开发实战指南####
深入探索PHP与MySQL的协同工作机制,本文旨在通过一系列实战案例,揭示构建高效、稳定且用户友好的动态网站的秘诀。从环境搭建到数据交互,再到最佳实践分享,本文为开发者提供了一条清晰的学习路径,助力其在LAMP(Linux, Apache, MySQL, PHP/Perl/Python)栈上实现技术飞跃。 ####
|
1月前
|
关系型数据库 MySQL PHP
PHP与MySQL的无缝集成:构建动态网站的艺术####
本文将深入探讨PHP与MySQL如何携手合作,为开发者提供一套强大的工具集,以构建高效、动态且用户友好的网站。不同于传统的摘要概述,本文将以一个生动的案例引入,逐步揭示两者结合的魅力所在,最终展示如何通过简单几步实现数据驱动的Web应用开发。 ####
|
1月前
|
SQL 关系型数据库 MySQL
PHP与MySQL的高效协同开发策略####
本文深入探讨了PHP与MySQL在Web开发中的协同工作机制,通过优化配置、最佳实践和高级技巧,展示了如何提升数据库交互性能,确保数据安全,并促进代码可维护性。我们将从环境搭建讲起,逐步深入到查询优化、事务管理、安全防护及性能调优等核心环节,为开发者提供一套实战驱动的解决方案框架。 ####
|
1月前
|
SQL 关系型数据库 MySQL
PHP与MySQL动态网站开发深度探索####
本文旨在为读者提供一份详尽的指南,深入剖析PHP与MySQL在动态网站开发中的应用。通过具体实例与代码解析,揭示如何高效结合这两种技术构建功能强大、响应迅速的Web应用。文章将逐一探讨PHP的基础语法、MySQL数据库管理以及二者交互的关键技巧,旨在帮助开发者提升技能,优化项目开发流程。 ####