ZetCode

MySQL 简介

最后修改于 2023 年 1 月 10 日

这是一个 MySQL 教程。它涵盖了 MySQL 数据库,各种 mysql 命令行工具以及数据库引擎涵盖的 SQL 语言。这是一个面向初学者的入门教程。

MySQL 数据库

MySQL 是一个领先的开源数据库管理系统。它是一个多用户、多线程的数据库管理系统。MySQL 在网络上特别受欢迎。它是非常流行的 LAMP 平台的一部分。Linux、Apache、MySQL 和 PHP。MySQL 数据库可在大多数重要的操作系统平台上使用。它运行在 BSD Unix 上,每天都在运行。MySQL 有两个版本:MySQL 服务器系统和 MySQL 嵌入式系统。MySQL 服务器软件和客户端库采用双重许可:GPL 第 2 版和专有许可。

MySQL 的开发始于 1994 年,由瑞典公司 MySQL AB 启动。Sun Microsystems 于 2008 年收购了 MySQL AB。Sun 于 2010 年被 Oracle 收购。

MySQL、PostgreSQL、Firebird、SQLite、Derby 和 HSQLDB 是最著名的开源数据库系统。

MySQL 使用 C/C++ 开发。除了 C/C++,还存在 PHP、Python、Java、C#、Eiffel、Ruby、Tcl 或 Perl 的 API。

MariaDB

MariaDB 是一个由社区开发的 MySQL 分支,旨在根据 GNU GPL 保持免费。它引人注目的是由 MySQL 的原始开发人员领导,他们由于担心被 Oracle 收购而分叉了它。MariaDB 旨在保持与 MySQL 的高度兼容性,确保与库二进制等效性以及与 MySQL API 和命令完全匹配的“即插即用”替换功能。

定义

一个关系数据库是组织在表中的数据集合。表之间存在关系。这些表被正式描述。它们由行和列组成。SQL(结构化查询语言)是一种数据库计算机语言,用于管理关系数据库管理系统中的数据。一个是一组使用垂直列和水平行的模型组织的价值观。这些列由它们的名称标识。一个数据库系统的模式是用形式语言描述的结构。它定义了表、字段、关系、视图、索引、过程、函数、队列、触发器和其他元素。

一个数据库代表表中一个单一的、隐式结构化的数据项。它也被称为元组或记录。一个是特定简单类型的数据值的集合,每个表行一个。这些列提供了构成行的结构。一个字段是存在于一行和一列之间的交叉点的一个单一项目。一个主键唯一地标识表中的每条记录。一个外键是两个表之间的引用约束。外键标识一个(引用)表中引用另一(被引用)表中一列或一组列的一列或一组列。

一个触发器是响应数据库中特定表上某些事件而自动执行的程序代码。一个视图是一个或多个表中数据的特定外观。它可以按某种特定顺序排列数据,突出显示或隐藏某些数据。一个视图由一个存储的查询组成,该查询可作为由查询结果集组成的虚拟表访问。与普通表不同,一个视图不构成物理模式的一部分。它是一个动态的虚拟表,从数据库中的数据计算或整理而来。

事务是针对一个或多个数据库中的数据执行的数据库操作的原子单元。事务中所有 SQL 语句的效果可以要么全部提交到数据库,要么全部回滚。一个 SQL 结果集是从数据库返回的一组行,由 SELECT 语句返回。它还包含有关查询的元信息,例如列名以及每个列的类型和大小。一个索引是一种数据结构,它提高了对数据库表执行数据检索操作的速度。

使用的表

在这里,我们将列出整个教程中使用的所有表。

cars.sql
-- SQL for the Cars table

USE mydb;
CREATE TABLE IF NOT EXISTS Cars(Id INTEGER PRIMARY KEY, Name VARCHAR(50), 
Cost INTEGER);
INSERT INTO Cars VALUES(1,'Audi',52642);
INSERT INTO Cars VALUES(2,'Mercedes',57127);
INSERT INTO Cars VALUES(3,'Skoda',9000);
INSERT INTO Cars VALUES(4,'Volvo',29000);
INSERT INTO Cars VALUES(5,'Bentley',350000);
INSERT INTO Cars VALUES(6,'Citroen',21000);
INSERT INTO Cars VALUES(7,'Hummer',41400);
INSERT INTO Cars VALUES(8,'Volkswagen',21600);

这是一个 Cars 表。

customers_reservations.sql
-- SQL for the Customers, Reservations tables

USE mydb;

CREATE TABLE IF NOT EXISTS Customers(CustomerId INTEGER AUTO_INCREMENT 
    PRIMARY KEY, Name VARCHAR(55));
INSERT INTO Customers(Name) VALUES('Paul Novak');
INSERT INTO Customers(Name) VALUES('Terry Neils');
INSERT INTO Customers(Name) VALUES('Jack Fonda');
INSERT INTO Customers(Name) VALUES('Tom Willis');

CREATE TABLE IF NOT EXISTS Reservations(Id INTEGER AUTO_INCREMENT
    PRIMARY KEY, CustomerId INTEGER, Day DATE);
INSERT INTO Reservations(CustomerId, Day) VALUES(1, '2009-11-22');
INSERT INTO Reservations(CustomerId, Day) VALUES(2, '2009-11-28');
INSERT INTO Reservations(CustomerId, Day) VALUES(2, '2009-11-29');
INSERT INTO Reservations(CustomerId, Day) VALUES(1, '2009-11-29');
INSERT INTO Reservations(CustomerId, Day) VALUES(3, '2009-12-2');

这些是 CustomersReservations 表。

books.sql
-- SQL for the Books table

USE mydb;

CREATE TABLE IF NOT EXISTS Books(Id INTEGER PRIMARY KEY, 
    Title VARCHAR(100), Author VARCHAR(60));
INSERT INTO Books VALUES(1,'War and Peace','Leo Tolstoy');
INSERT INTO Books VALUES(2,'The Brothers Karamazov','Fyodor Dostoyevsky');
INSERT INTO Books VALUES(3,'Paradise Lost','John Milton');
INSERT INTO Books VALUES(4,'Crime and Punishment','Fyodor Dostoyevsky');
INSERT INTO Books VALUES(5,'Cousin Bette','Honore de Balzac');

这是一个 Books 表。

以上是对 MySQL 数据库系统的介绍。