Maison > base de données > tutoriel mysql > Un guide SQL que les programmeurs qui développent PHP doivent maîtriser

Un guide SQL que les programmeurs qui développent PHP doivent maîtriser

怪我咯
Libérer: 2017-04-05 11:31:45
original
1228 Les gens l'ont consulté

Introduction

SQL a été appliqué à tous les coins autour de nous, croyez-le ou non. Chaque application qui manipule des données de quelque nature que ce soit doit stocker les données quelque part. Qu'il s'agisse de données volumineuses ou d'un paquet de quelques lignes seulement, qu'il s'agisse d'un gouvernement ou d'une startup, qu'il s'agisse d'une grande base de données couvrant plusieurs serveurs ou d'un téléphone portable exécutant sa propre petite base de données, SQL est partout.

Mais qu’est-ce que SQL ? SQL signifie Structured Query Language et se prononce généralement « ess-que-el ». SQL est un langage de base de données spécialement conçu pour communiquer avec des bases de données. SQL est un langage simple, similaire à la langue anglaise dans la mesure où les commandes ont une structure similaire aux phrases anglaises. Ces phrases sont organisées en instructions déclaratives, c'est pourquoi SQL est également appelé langage déclaratif.

SQL 新手指南

Pourquoi apprendre un tout nouveau langage alors qu'il existe déjà de nombreux outils disponibles pour écrire visuellement des requêtes SQL ? Lorsque vous utilisez certains outils SQL, il est important de comprendre le langage SQL et de comprendre ce que fait l'outil de visualisation et pourquoi il le fait. Parfois, il est nécessaire d'écrire certaines instructions SQL manuellement, non seulement parce que c'est le moyen le plus rapide, mais aussi parce qu'il est plus puissant et souvent le seul moyen d'atteindre l'objectif visé.

Introduction à la base de données

Comme nous venons de le mentionner, SQL est un langage de base de données. Alors, qu’est-ce qu’une base de données ? Une base de données est un mécanisme de stockage conçu pour accéder aux informations stockées et à leurs opérations. Les informations de la base de données sont stockées dans des objets appelés tables. Le nom d'une table est son identité unique et se compose de colonnes et de lignes. Une colonne contient le nom de la colonne, le type de données de la colonne et d'autres attributs de la colonne. La ligne contient les enregistrements ou les données de cette colonne. La plupart des tables de la base de données auront des relations ou des liens, un à un ou un à plusieurs. C'est pourquoi ce type de base de données est appelé base de données modèle relationnelle.

La façon la plus simple de décrire la structure de la base de données est de la comparer avec une feuille de calcul Excelfeuille. Elles présentent de nombreuses similitudes. Une base de données est un document indépendant. Une feuille dans une feuille de calcul est un tableau et chaque feuille a un nom. Les colonnes et les lignes sont les mêmes que dans une base de données. Le langage SQL est utilisé pour créer de nouvelles tables, modifier des tables existantes, pour obtenir des données, mettre à jour des données ou supprimer des données.

Par exemple, nous avons une grande collection de lignes de films célèbres, stockées dans n'importe quel fichier texte séparé. Même si nous l’organisons soigneusement et le conservons dans des feuilles de calcul Excel, les problèmes auxquels nous sommes confrontés existent toujours. En stockant les lignes de cette façon, nous ne pouvons pas obtenir rapidement toutes les lignes d'un film, ni toutes les lignes d'un personnage. Si nous plaçons un fichier texte ou une feuille de calcul dans une base de données et créons des tableaux avec des relations, tous les problèmes sont résolus. Que signifie vraiment le relationnel ? Un modèle relationnel est une méthode de description des données et des relations entre ces entités de données. Dans notre cas, la relation se fait entre chaque ligne et la table où est stocké le titre du film, ou tous les caractères sont stockés dans la table.

Ce qui suit est un exemple simplifié. Il n'y a qu'une seule table à titre d'exemple, et le nom de la table est "Movie_quotes". Il comporte quatre colonnes, une pour le texte de la ligne, une pour le personnage de l'acteur qui a prononcé la ligne, une pour le film et l'année. Nous avons inclus huit lignes du film, et notre exemple de feuille ressemble à ceci :

Movie_quotes
Q_TEXT Q_CHARACTER Q_MOVIE Q_YEAR
I’ll be back The Terminator The Terminator 1984
I find your lack of faith disturbing. Darth Vader Star Wars 1977
It’s a trap! Admiral Ackbar Star Wars 1983
Never tell me the odds. Han Solo Star Wars 1980
Do. Or do not. There is no try. Yoda Star Wars 1980
Stupid is as stupid does. Forrest Gump Forrest Gump 1994
My mama always said: Life was like a box of chocolates.You never know what you’re gonna get. Forrest Gump Forrest Gump 1994
Run, Forrest! Run! Jenny Curran Forrest Gump 1994

Lorsque nous parlons de bases de données, il convient de mentionner qu'il existe une toute nouvelle base de données qui a créé un mouvement parmi les personnes qui ont besoin de stocker des données, et il s'agit de NoSQL. Ce sont des systèmes basés sur des documents et, bien qu'ils deviennent très populaires, il existe encore un grand nombre de bases de données relationnelles utilisées aujourd'hui. Même si les bases de données NoSQL disposent d’une sorte de langage de requête, une grande partie d’entre elles (car elles ont presque toutes été inventées après SQL) présentent encore certaines similitudes avec SQL.

Quatre opérations SQL de base (CRUD)

Il existe de nombreuses commandes SQL, cependant, il existe quatre opérations SQL courantes qui peuvent faire quelque chose avec une table et ses données :

  • Créer – remplissez le tableau avec des données.

  • Lire – Interroger les données d'une table.

  • Mise à jour – Modifier les données existantes dans le tableau.

  • Supprimer – Supprimer les données du tableau.

Les initiales de ces opérations SQL de base forment l'abréviation « CRUD », et elles sont considérées comme un ensemble de quatre fonctions ou fonctionnalités de base que chaque base de données doit avoir.

En présentant les fonctionnalités de base, nous présenterons les commandes SQL de base et les plus importantes : `CREATE`, `INSERT`, `SELECT `, `UPDATE`, `DELETE` et `DROP`.

Créer des données

Tout d'abord, nous devons créer une table dans la base de données. Pour créer une nouvelle table, `CREATE TABLE` est utilisé. Le format de syntaxe simple de l'instruction `CREATE TABLE` est le suivant :

CREATE TABLE table_name
(column_1 data_type,
column_2 data_type,
column_3 data_type);
Copier après la connexion

Tout d'abord, le mot-clé `CREATE TABLE` est suivi du nom de la table. C'est un excellent exemple de la simplicité et de la similitude de SQL avec l'anglais. Le mot-clé est suivi d'une parenthèse ouvrante, où des paramètres supplémentaires sont définis : le nom de la colonne et le type de données de la colonne, suivis d'une parenthèse fermante. Il faut mentionner que toutes les instructions SQL doivent se terminer par `;`.

Il n’y a pas beaucoup de règles à suivre. Les noms de tables et de colonnes doivent commencer par une lettre et peuvent être suivis de lettres, de chiffres ou de traits de soulignement. Ils ne peuvent pas dépasser 30 caractères. L'utilisation de mots réservés SQL comme noms de table ou de colonne (tels que « select », « create », « insert », etc.) est interdite.

Dans l'exemple, les noms de colonnes les plus simples pourraient être `TEXT`, `CHARACTER`, `MOVIE` et `YEAR`. Cependant, le problème est que ces noms de colonnes sont des mots réservés. Pour éviter tout conflit possible, nous créerons des noms de colonnes préfixés par `Q_`.

Les types de données varient selon les bases de données, mais les types les plus courants sont utilisés ici :

  • `char(size)` – chaîne de longueur fixe, entre parenthèses. Les paramètres sont indiqué en .

  • `varchar(size)` – chaîne de longueur variable, indiquée par des paramètres entre parenthèses.

  • `number(size)` – valeur numérique, les paramètres entre parenthèses indiquent la longueur totale.

  • `date` – valeur de la date.

  • `number(size, d)` – valeur numérique avec la longueur totale de `size` et les décimales représentées par `d`.

Le type de données spécifie quel type de données peut être stocké dans la colonne spécifiée. Si la colonne `Q_CHARACTER` est utilisée pour stocker les noms de films, alors la colonne spécifiée doit avoir un type de données `varchar` (caractère de longueur variable). Le type de colonne qui stocke l'année du film est « numéro », la colonne correspondante dans notre exemple est « Q_YEAR ».

Pour la structure de table souhaitée, la commande SQL finale pour créer la table est la suivante :

CREATE TABLE Movie_quotes
(‘Q_TEXT’ varchar(200),
‘Q_CHARACTER’ varchar(20),
‘Q_MOVIE’ varchar(20),
‘Q_YEAR’ number(4));
Copier après la connexion

Le résultat de cette commande SQL créera une table vide avec les colonnes comme suit :

  • `Q_TEXT` peut accepter une chaîne de 200 caractères.

  • `Q_CHARACTER` peut accepter une chaîne de 20 caractères.

  • `Q_MOVIE` peut accepter une chaîne de 20 caractères.

  • `Q_YEAR` peut accepter quatre chiffres pendant un an.

SQL 新手指南

接下来,用我们的电影台词数据填充这张表。有很多可用的 GUI 工具,来管理数据库中的表和数据。不过,写一个 SQL 脚本常常更快,该脚本基本上是 SQL 命令的集合,将被顺序执行。当你需要用大量数据填充表时,这种方式尤为方便。

向表插入或添加一行数据的 SQL 命令是 `INSERT`。格式如下:

INSERT INTO table_name
(column_1, column_2, ... column_n)
VALUES (value_1, value_2, ... value_n);
Copier après la connexion

为了向表插入一行数据, `INSERT` 关键字跟着 `INTO` 关键字和表名。然后是列名,放在圆括号里,用逗号隔开,这是可选的,但是,指明要插入的列,以确保正确的数据插入相应的列,这是一种良好实践。最后一部分,用 `VALUES` 关键字定义了要插入的那些数据,数据列表以圆括号结束。请注意,字符串应该放在单引号里,数字不应如此。

用来填充例子中 `Movie_quotes` 表的 SQL 脚本,如下:

INSERT INTO Movie_quotes
(Q_TEXT, Q_CHARACTER, Q_MOVIE, Q_YEAR)
VALUES ('I’ll be back', 'The Terminator', 'The Terminator', 1984);
INSERT INTO Movie_quotes
(Q_TEXT, Q_CHARACTER, Q_MOVIE, Q_YEAR)
VALUES ('I find your lack of faith disturbing.', 'Darth Vader', 'Star Wars', 1977);
INSERT INTO Movie_quotes
(Q_TEXT, Q_CHARACTER, Q_MOVIE, Q_YEAR)
VALUES ('It’s a trap!', 'Admiral Ackbar', 'Star Wars', 1983);
INSERT INTO Movie_quotes
(Q_TEXT, Q_CHARACTER, Q_MOVIE, Q_YEAR)
VALUES ('Never tell me the odds.', 'Han Solo', 'Star Wars', 1980);
INSERT INTO Movie_quotes
(Q_TEXT, Q_CHARACTER, Q_MOVIE, Q_YEAR)
VALUES ('Do. Or do not. There is no try.', 'Yoda', 'Star Wars', 1980);
INSERT INTO Movie_quotes
(Q_TEXT, Q_CHARACTER, Q_MOVIE, Q_YEAR)
VALUES ('Stupid is as stupid does.', 'Forrest Gump', 'Forrest Gump', 1994);
INSERT INTO Movie_quotes
(Q_TEXT, Q_CHARACTER, Q_MOVIE, Q_YEAR)
VALUES ('My mama always said: Life was like a box of chocolates. You never know what you’re gonna get.', 'Forrest Gump', 'Forrest Gump', 1994);
INSERT INTO Movie_quotes
(Q_TEXT, Q_CHARACTER, Q_MOVIE, Q_YEAR)
VALUES ('Run, Forrest! Run!', 'Jenny Curran', 'Forrest Gump', 1994);
Copier après la connexion

读取数据

数据库中有了存好的数据,现在我们可以查询数据,看看我们的表里存储了什么,我们还能用不同的方式过滤和分类数据。

`SELECT` 语句用于查询、或选择我们想从数据库中返回的数据。我们从非常简单的查询开始,但是 `SELECT` 有很多不同的选项和扩展,这为我们最终的需要提供了很大的灵活性。基本的 `SELECT` 语句的语法如下:

SELECT column_1, column_1, ... column_n
FROM table_name;
Copier après la connexion

指出列名,决定了哪一列将被返回到结果里,以及按什么顺序。如果我们想选择所有的列,或我们不知道表中的确切列名,我们可以使用通配符 `*`,它将从数据库中选择所有列:

SELECT * FROM table_name;
Copier après la connexion

对于本例,显示所有数据的查询,如下:

SELECT * FROM Movie_quotes;
Copier après la connexion

SQL 新手指南

仅仅显示电影台词、年份的查询,如下:

SELECT Q_TEXT, Q_YEAR FROM Movie_quotes;
Copier après la connexion

有时候我们不想从表中返回所有数据。当表中有大量数据、或我们在搜索匹配某些标准的特定数据时,就属于这种情况。对此,我们可以使用 `WHERE` 语句。`WHERE` 语句将过滤记录,限制从数据库中获取哪些记录、以满足具体定义的标准:

SELECT column_1, column_1, ... column_n
FROM table_name
WHERE column_name operator value;
Copier après la connexion

注意,`WHERE` 语句是可选的,但是如果我们决定用到它,下面的操作符是可用的:

  • `=` – 等于。

  • `>` – 大于。

  • `<` – 小于。

  • `>=` – 大于或等于。

  • `<=` – 小于或等于。

  • `<>` – 不等于。

  • `BETWEEN` – 在两个值之间。

  • `LIKE` – 搜索一种模式。

  • `IN` – 针对一个列的多种可能值。

数学操作符无需解释了。`BETWEEN` 操作符搜索两个声明值的、中间的值,包括等于两端的情况。`LIKE` 模式匹配操作符是非常强大的操作符,支持选择和我们的规定类似的行。百分号 `%` 被用做通配符,以匹配任何可能字符,它可出现在具体字符串的前面或后面。

例如,为了得到来自电影《Stars Wars》中的台词,我们可以这样写:

SELECT * FROM Movie_quotes
WHERE Q_MOVIE = ‘Star Wars’;
Copier après la connexion

SQL 新手指南

请注意,`WHERE` 语句是大小写敏感的,下面的 SQL 语句将不会返回结果:

SELECT * FROM Movie_quotes
WHERE Q_MOVIE = ‘STAR WARS’;
Copier après la connexion

除了 `WHERE` 子句,还可组合逻辑运算符 `AND` 和 `OR`。如果我们对相同列使用多个 `AND` 逻辑操作符,那么我们应该考虑使用 `IN` 子句替代。

做为示例,我们返回来自电影《Star Wars》和《The Terminator》中的所有电影台词:

SELECT * FROM Movie_quotes
WHERE Q_MOVIE = ‘Star Wars’ AND Q_MOVIE = ‘The Terminator’;
Copier après la connexion

SQL 新手指南

就上面的例子,更好的写法就是使用 `IN` 语句替代:

SELECT * FROM Movie_quotes
WHERE Q_MOVIE IN (‘Star Wars’, ‘The Terminator’);
Copier après la connexion

至此,我们一直在讨论如何从数据库中过滤数据。返回的行将按照它们进入(提交到)数据库的顺序进行排序。为了控制数据显示的顺序,我们可以通过包含 `ORDER BY` 子句来过滤输出数据。`ORDER BY` 子句包含了指定分类顺序的一个、或多个列名:

SELECT column_1, column_1, ... column_n
FROM table_name
WHERE column_name operator value
ORDER BY column_name;
Copier après la connexion

为了扩展我们刚才《Star Wars》电影台词的例子,现在按照年份排序:

SELECT * FROM Movie_quotes
WHERE Q_MOVIE = ‘Star Wars’
ORDER BY Q_YEAR;
Copier après la connexion

SQL 新手指南

一个列的排序,默认是按照从最低值到最高值升序排列。为了把列的排序改为降序,我们可以在列名后面加上 `DESC` 关键字:

SELECT * FROM Movie_quotes
WHERE Q_MOVIE = ‘Star Wars’
ORDER BY Q_YEAR DESC;
Copier après la connexion

SQL 新手指南

`ORDER BY` 语句不限于单个列。你可以包含逗号分隔的、列的清单来排序。返回的行将根据第一个指定列,然后按顺序根据接下来指定的列排序。切记,用来排序的列不必包含在被选择列的清单里。我们可以像这样来写查询:

SELECT Q_TEXT, Q_CHARACTER, Q_MOVIE FROM Movie_quotes
WHERE Q_MOVIE = ‘Star Wars’
ORDER BY Q_YEAR DESC;
Copier après la connexion

更新数据

在我们开始插入数据之后,并没有被限制为只能读取数据。我们能够对任何行里的、任何列下的、任何数据进行修改。`UPDATE` 语句用于更新或修改记录。

`UPDATE` 的语法如下:

UPDATE table_name
SET column_name = new_value
WHERE column_name operator value;
Copier après la connexion

当我们使用 `UPDATE` 时,慎重地构造一个 `WHERE` 子句是十分重要的。`WHERE` 子句指定了哪一条记录或哪些记录应该被更新。如果我们在执行 `UPDATE` 语句时、而没有使用 `WHERE` 子句,我们将更新指定列的所有数据。

让我们看看 `Movie_quotes` 表里的电影台词。我们让所有的台词以标点符号结束,《The Terminator》除外。对于如何使用 `UPDATE` 语句,这是一个极好的例子:

UPDATE Movie_quotes
SET Q_TEXT = ‘I’ll be back!’
WHERE Q_MOVIE = ‘The Terminator’;
Copier après la connexion

之前解释了,如果我们不小心遗漏了 `WHERE` 子句,或我们故意把所有的台词行更新为「I’ll be back!」。通过单单选中电影《The terminator》所在行,我们就可以更新指定行的一列数据。

删除数据

当数据库被大量使用时,从数据库中移除陈旧的数据,迟早会变得有必要。我们能够只删除表中的一些行、或删除整个表。

`DELETE` 语句用于删除表中的行。该命令的语法如下:

DELETE FROM table_name
WHERE column_name operator value;
Copier après la connexion

重申,和 `UPDATE` 语句一样,`WHERE` 子句指定了哪一条记录或哪些记录应该被删除。如果没有指定 `WHERE` 子句,所有的行和列将被删除:

DELETE FROM Movie_quotes;
Copier après la connexion

假设我们不再喜欢电影《Forrest Gump》了,想从电影中删除其台词。为了从电影中删除所有台词,我们可以编写如下 SQL 命令:

DELETE FROM Movie_quotes
WHERE Q_MOVIE = ‘Forrest Gump’;
Copier après la connexion

最终,我们有了足够多的电影。我们对电影台词不再感兴趣了,我们想把兴趣移到音乐上。我们开始收集歌词。根据我们目前所学到的 SQL 知识,修改数据库是非常简单的。

首先,我们需要清空数据库里、不再感兴趣的数据。为了删除包含所有行的表,我们可以使用 `DROP TABLE` 语句。切记 `DROP TABLE` 语句不同于使用 `DELETE` 语句,和删除表里的所有记录也不同。删除表里的所有记录,会留给我们表本身及其定义的所有表结构;包括列的数据类型定义和该表的其它相关的数据库信息。`DROP TABLE` 移除了表、移除表的定义,还有所有的行。

`DROP TABLE` 语句的语法如下:

DROP TABLE table_name;
Copier après la connexion

为了从数据库中删除 `Movie_quotes`,我们可以这样写:

DROP TABLE Movie_quotes;
Copier après la connexion

现在我们的数据库是空的,准备接受新数据。我们从所有的 CRUD 过程开始,创建名为 `Song_Lyrics` 的新表,根据我们新收藏的歌曲,建立一个歌词数据库。

结论

本文我们浏览了涵盖 CRUD 四个基本的数据库功能:如何创建新数据、读取数据、更新我们想要修改的数据、以及最后的如何删除不想要的数据。这包含了基本的、但是最重要的 SQL 命令,比如:`CREATE TABLE`, `INSERT INTO`, `SELECT`, `UPDATE`, `DELETE` 和 `DROP`。

这些基本的 SQL 命令支持大量的数据管理,但是每个介绍到的命令都有很多选项和额外的功能,有些是本文没有介绍的,要注意这一点。总之,当 SQL 开发人员新手在开始数据库工作、以及使用一门新语言 SQL 时,本文中的基本知识应该能为他们开个好头。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal