SQL wurde in jeder Ecke um uns herum angewendet, ob Sie es glauben oder nicht. Jede Anwendung, die Daten jeglicher Art manipuliert, muss die Daten irgendwo speichern. Ob es sich um große Datenmengen handelt oder um ein Paket mit nur wenigen Zeilen; ob es sich um eine Regierung oder ein Startup handelt, ob es sich um eine große Datenbank handelt, die sich über mehrere Server erstreckt, oder um ein Telefon, das seine eigene kleine Datenbank betreibt – SQL ist überall.
Aber was ist SQL? SQL steht für Structured Query Language und wird normalerweise „ess-que-el“ ausgesprochen. SQL ist eine Datenbanksprache, die speziell für die Kommunikation mit Datenbanken entwickelt wurde. SQL ist eine einfache Sprache, ähnlich der englischen Sprache, da Befehle eine ähnliche Struktur wie englische Sätze haben. Diese Sätze sind in deklarativen Anweisungen organisiert, daher wird SQL auch als deklarative Sprache bezeichnet.
Warum eine ganz neue Sprache lernen, wenn es bereits viele Tools zum visuellen Schreiben von SQL-Abfragen gibt? Wenn Sie bestimmte SQL-Tools verwenden, ist es wichtig, die SQL-Sprache zu verstehen und zu verstehen, was das Visualisierungstool tut und warum es es tut. Manchmal ist es notwendig, einige SQL-Anweisungen manuell zu schreiben, nicht nur, weil dies der schnellste Weg ist, sondern auch, weil es leistungsfähiger und oft die einzige Möglichkeit ist, das beabsichtigte Ziel zu erreichen.
Wie wir gerade erwähnt haben, ist SQL eine Datenbanksprache. Was ist also eine Datenbank? Eine Datenbank ist ein Speichermechanismus, der für den Zugriff auf gespeicherte Informationen und deren Vorgänge konzipiert ist. Informationen in der Datenbank werden in Objekten, sogenannten Tabellen, gespeichert. Der Name einer Tabelle ist ihre eindeutige Identität und besteht aus Spalten und Zeilen. Eine Spalte enthält den Spaltennamen, den Datentyp der Spalte und andere Attribute der Spalte. Die Zeile enthält die Datensätze oder Daten für diese Spalte. Die meisten Tabellen in der Datenbank verfügen über Beziehungen oder Verknüpfungen, Eins-zu-eins- oder Eins-zu-viele-Beziehungen. Aus diesem Grund wird diese Art von Datenbank als relationale Modelldatenbank bezeichnet.
Der einfachste Weg, die Datenbankstruktur zu beschreiben, besteht darin, sie mit einer Excel-Tabelle zu vergleichen.Blatt Sie weisen viele Ähnlichkeiten auf. Eine Datenbank ist ein unabhängiges Dokument. Ein Blatt in einer Tabellenkalkulation ist eine Tabelle und jedes Blatt hat einen Namen. Spalten und Zeilen sind die gleichen wie in einer Datenbank. Die SQL-Sprache wird verwendet, um neue Tabellen zu erstellen, vorhandene Tabellen zu ändern, Daten abzurufen, Daten zu aktualisieren oder Daten zu löschen.
Zum Beispiel haben wir eine große Sammlung von Zeilen aus berühmten Filmen, die in einer separaten Textdatei gespeichert sind. Selbst wenn wir es sorgfältig organisieren und in Excel-Tabellen speichern, bestehen die Probleme, mit denen wir konfrontiert sind, immer noch. Wenn wir Zeilen auf diese Weise speichern, können wir nicht schnell alle Zeilen aus einem Film oder alle Zeilen für eine Figur abrufen. Wenn wir eine Textdatei oder ein Tabellenkalkulationsblatt in eine Datenbank einfügen und Tabellen mit Beziehungen erstellen, sind alle Probleme gelöst. Was bedeutet relational wirklich? Ein relationales Modell ist eine Methode zur Beschreibung von Daten und den Beziehungen zwischen diesen Dateneinheiten. In unserem Fall besteht die Beziehung zwischen jeder Zeile und der Tabelle, in der der Filmtitel gespeichert ist, oder zwischen allen Zeichen, die in der Tabelle gespeichert sind.
Das Folgende ist ein vereinfachtes Beispiel. Es gibt nur eine Tabelle als Beispiel und der Tabellenname lautet „Movie_quotes“. Es besteht aus vier Spalten: eine für den Text der Zeile, eine für den Schauspieler, der die Zeile gesagt hat, eine für den Film und das Jahr. Wir haben acht Zeilen aus dem Film eingefügt und unser Beispielblatt sieht so aus:
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 |
Bei der Erörterung von Datenbanken ist es erwähnenswert, dass es eine brandneue Datenbank gibt, die eine Bewegung unter Leuten ausgelöst hat, die Daten speichern müssen, und es ist NoSQL. Es handelt sich um dokumentenbasierte Systeme, und obwohl sie sich immer größerer Beliebtheit erfreuen, werden auch heute noch zahlreiche relationale Datenbanken verwendet. Auch wenn NoSQL-Datenbanken über eine Art Abfragesprache verfügen, weisen viele von ihnen (da sie fast alle nach SQL erfunden wurden) immer noch eine gewisse Ähnlichkeit mit SQL auf.
Es gibt viele SQL-Befehle, es gibt jedoch vier gängige SQL-Operationen, die etwas mit einer Tabelle und ihren Daten tun können:
Erstellen – Füllen Sie die Tabelle mit Daten.
Lesen – Daten aus einer Tabelle abfragen.
Aktualisieren – Vorhandene Daten in der Tabelle ändern.
Löschen – Daten aus der Tabelle entfernen.
Die Initialen dieser grundlegenden SQL-Operationen bilden die Abkürzung „CRUD“ und sie gelten als ein grundlegender Satz von vier Grundfunktionen oder Features, die jede Datenbank haben muss.
Durch die Einführung der Grundfunktionen stellen wir die grundlegenden und wichtigsten SQL-Befehle vor: `CREATE`, `INSERT`, `SELECT `, `UPDATE`, `DELETE` und `DROP`.
Zuerst müssen wir eine Tabelle in der Datenbank erstellen. Um eine neue Tabelle zu erstellen, wird „CREATE TABLE“ verwendet. Das einfache Syntaxformat der „CREATE TABLE“-Anweisung lautet wie folgt:
CREATE TABLE table_name (column_1 data_type, column_2 data_type, column_3 data_type);
Zuerst folgt auf das Schlüsselwort „CREATE TABLE“ der Tabellenname. Dies ist ein hervorragendes Beispiel für die Einfachheit und Ähnlichkeit von SQL mit Englisch. Auf das Schlüsselwort folgt eine öffnende Klammer, in der zusätzliche Parameter definiert werden: der Spaltenname und der Spaltendatentyp, gefolgt von einer schließenden Klammer. Es muss erwähnt werden, dass alle SQL-Anweisungen mit „;“ enden sollten.
Es gibt nicht viele Regeln, die man befolgen muss. Tabellennamen und Spaltennamen müssen mit einem Buchstaben beginnen und können von Buchstaben, Zahlen oder Unterstrichen gefolgt werden. Sie dürfen eine Länge von 30 Zeichen nicht überschreiten. Die Verwendung von SQL-reservierten Wörtern als Tabellen- oder Spaltennamen (wie „select“, „create“, „insert“ usw.) ist verboten.
Im Beispiel könnten die einfachsten Spaltennamen „TEXT“, „CHARACTER“, „MOVIE“ und „YEAR“ sein. Das Problem besteht jedoch darin, dass diese Spaltennamen reservierte Wörter sind. Um mögliche Konflikte zu vermeiden, erstellen wir Spaltennamen mit dem Präfix „Q_“.
Datentypen variieren zwischen Datenbanken, aber die häufigsten Typen werden hier verwendet:
`char(size)` – Zeichenfolge fester Länge, in Klammern eingeschlossen. Die Parameter sind angegeben in .
`varchar(size)` – eine Zeichenfolge variabler Länge, angegeben durch die Parameter in Klammern.
`number(size)` – numerischer Wert, die Parameter in Klammern geben die Gesamtlänge an.
`date` – Datumswert.
„number(size, d)“ – numerischer Wert mit der Gesamtlänge von „size“ und den durch „d“ dargestellten Dezimalstellen.
Der Datentyp gibt an, welche Art von Daten in der angegebenen Spalte gespeichert werden können. Wenn die Spalte „Q_CHARACTER“ zum Speichern von Filmnamen verwendet wird, sollte die angegebene Spalte einen Datentyp „varchar“ (Zeichen variabler Länge) haben. Der Typ der Spalte, die das Filmjahr speichert, ist „number“, die entsprechende Spalte in unserem Beispiel ist „Q_YEAR“.
Für die gewünschte Tabellenstruktur lautet der letzte SQL-Befehl zum Erstellen der Tabelle wie folgt:
CREATE TABLE Movie_quotes (‘Q_TEXT’ varchar(200), ‘Q_CHARACTER’ varchar(20), ‘Q_MOVIE’ varchar(20), ‘Q_YEAR’ number(4));
Das Ergebnis dieses SQL-Befehls erstellt eine leere Tabelle mit den folgenden Spalten:
`Q_TEXT` kann eine Zeichenfolge mit einer Länge von 200 Zeichen akzeptieren.
`Q_CHARACTER` kann eine Zeichenfolge mit einer Länge von 20 Zeichen akzeptieren.
`Q_MOVIE` kann eine Zeichenfolge mit einer Länge von 20 Zeichen akzeptieren.
`Q_YEAR` kann vier Zahlen für ein Jahr akzeptieren.
接下来,用我们的电影台词数据填充这张表。有很多可用的 GUI 工具,来管理数据库中的表和数据。不过,写一个 SQL 脚本常常更快,该脚本基本上是 SQL 命令的集合,将被顺序执行。当你需要用大量数据填充表时,这种方式尤为方便。
向表插入或添加一行数据的 SQL 命令是 `INSERT`。格式如下:
INSERT INTO table_name (column_1, column_2, ... column_n) VALUES (value_1, value_2, ... value_n);
为了向表插入一行数据, `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);
数据库中有了存好的数据,现在我们可以查询数据,看看我们的表里存储了什么,我们还能用不同的方式过滤和分类数据。
`SELECT` 语句用于查询、或选择我们想从数据库中返回的数据。我们从非常简单的查询开始,但是 `SELECT` 有很多不同的选项和扩展,这为我们最终的需要提供了很大的灵活性。基本的 `SELECT` 语句的语法如下:
SELECT column_1, column_1, ... column_n FROM table_name;
指出列名,决定了哪一列将被返回到结果里,以及按什么顺序。如果我们想选择所有的列,或我们不知道表中的确切列名,我们可以使用通配符 `*`,它将从数据库中选择所有列:
SELECT * FROM table_name;
对于本例,显示所有数据的查询,如下:
SELECT * FROM Movie_quotes;
仅仅显示电影台词、年份的查询,如下:
SELECT Q_TEXT, Q_YEAR FROM Movie_quotes;
有时候我们不想从表中返回所有数据。当表中有大量数据、或我们在搜索匹配某些标准的特定数据时,就属于这种情况。对此,我们可以使用 `WHERE` 语句。`WHERE` 语句将过滤记录,限制从数据库中获取哪些记录、以满足具体定义的标准:
SELECT column_1, column_1, ... column_n FROM table_name WHERE column_name operator value;
注意,`WHERE` 语句是可选的,但是如果我们决定用到它,下面的操作符是可用的:
`=` – 等于。
`>` – 大于。
`<` – 小于。
`>=` – 大于或等于。
`<=` – 小于或等于。
`<>` – 不等于。
`BETWEEN` – 在两个值之间。
`LIKE` – 搜索一种模式。
`IN` – 针对一个列的多种可能值。
数学操作符无需解释了。`BETWEEN` 操作符搜索两个声明值的、中间的值,包括等于两端的情况。`LIKE` 模式匹配操作符是非常强大的操作符,支持选择和我们的规定类似的行。百分号 `%` 被用做通配符,以匹配任何可能字符,它可出现在具体字符串的前面或后面。
例如,为了得到来自电影《Stars Wars》中的台词,我们可以这样写:
SELECT * FROM Movie_quotes WHERE Q_MOVIE = ‘Star Wars’;
请注意,`WHERE` 语句是大小写敏感的,下面的 SQL 语句将不会返回结果:
SELECT * FROM Movie_quotes WHERE Q_MOVIE = ‘STAR WARS’;
除了 `WHERE` 子句,还可组合逻辑运算符 `AND` 和 `OR`。如果我们对相同列使用多个 `AND` 逻辑操作符,那么我们应该考虑使用 `IN` 子句替代。
做为示例,我们返回来自电影《Star Wars》和《The Terminator》中的所有电影台词:
SELECT * FROM Movie_quotes WHERE Q_MOVIE = ‘Star Wars’ AND Q_MOVIE = ‘The Terminator’;
就上面的例子,更好的写法就是使用 `IN` 语句替代:
SELECT * FROM Movie_quotes WHERE Q_MOVIE IN (‘Star Wars’, ‘The Terminator’);
至此,我们一直在讨论如何从数据库中过滤数据。返回的行将按照它们进入(提交到)数据库的顺序进行排序。为了控制数据显示的顺序,我们可以通过包含 `ORDER BY` 子句来过滤输出数据。`ORDER BY` 子句包含了指定分类顺序的一个、或多个列名:
SELECT column_1, column_1, ... column_n FROM table_name WHERE column_name operator value ORDER BY column_name;
为了扩展我们刚才《Star Wars》电影台词的例子,现在按照年份排序:
SELECT * FROM Movie_quotes WHERE Q_MOVIE = ‘Star Wars’ ORDER BY Q_YEAR;
一个列的排序,默认是按照从最低值到最高值升序排列。为了把列的排序改为降序,我们可以在列名后面加上 `DESC` 关键字:
SELECT * FROM Movie_quotes WHERE Q_MOVIE = ‘Star Wars’ ORDER BY Q_YEAR DESC;
`ORDER BY` 语句不限于单个列。你可以包含逗号分隔的、列的清单来排序。返回的行将根据第一个指定列,然后按顺序根据接下来指定的列排序。切记,用来排序的列不必包含在被选择列的清单里。我们可以像这样来写查询:
SELECT Q_TEXT, Q_CHARACTER, Q_MOVIE FROM Movie_quotes WHERE Q_MOVIE = ‘Star Wars’ ORDER BY Q_YEAR DESC;
在我们开始插入数据之后,并没有被限制为只能读取数据。我们能够对任何行里的、任何列下的、任何数据进行修改。`UPDATE` 语句用于更新或修改记录。
`UPDATE` 的语法如下:
UPDATE table_name SET column_name = new_value WHERE column_name operator value;
当我们使用 `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’;
之前解释了,如果我们不小心遗漏了 `WHERE` 子句,或我们故意把所有的台词行更新为「I’ll be back!」。通过单单选中电影《The terminator》所在行,我们就可以更新指定行的一列数据。
当数据库被大量使用时,从数据库中移除陈旧的数据,迟早会变得有必要。我们能够只删除表中的一些行、或删除整个表。
`DELETE` 语句用于删除表中的行。该命令的语法如下:
DELETE FROM table_name WHERE column_name operator value;
重申,和 `UPDATE` 语句一样,`WHERE` 子句指定了哪一条记录或哪些记录应该被删除。如果没有指定 `WHERE` 子句,所有的行和列将被删除:
DELETE FROM Movie_quotes;
假设我们不再喜欢电影《Forrest Gump》了,想从电影中删除其台词。为了从电影中删除所有台词,我们可以编写如下 SQL 命令:
DELETE FROM Movie_quotes WHERE Q_MOVIE = ‘Forrest Gump’;
最终,我们有了足够多的电影。我们对电影台词不再感兴趣了,我们想把兴趣移到音乐上。我们开始收集歌词。根据我们目前所学到的 SQL 知识,修改数据库是非常简单的。
首先,我们需要清空数据库里、不再感兴趣的数据。为了删除包含所有行的表,我们可以使用 `DROP TABLE` 语句。切记 `DROP TABLE` 语句不同于使用 `DELETE` 语句,和删除表里的所有记录也不同。删除表里的所有记录,会留给我们表本身及其定义的所有表结构;包括列的数据类型定义和该表的其它相关的数据库信息。`DROP TABLE` 移除了表、移除表的定义,还有所有的行。
`DROP TABLE` 语句的语法如下:
DROP TABLE table_name;
为了从数据库中删除 `Movie_quotes`,我们可以这样写:
DROP TABLE Movie_quotes;
现在我们的数据库是空的,准备接受新数据。我们从所有的 CRUD 过程开始,创建名为 `Song_Lyrics` 的新表,根据我们新收藏的歌曲,建立一个歌词数据库。
本文我们浏览了涵盖 CRUD 四个基本的数据库功能:如何创建新数据、读取数据、更新我们想要修改的数据、以及最后的如何删除不想要的数据。这包含了基本的、但是最重要的 SQL 命令,比如:`CREATE TABLE`, `INSERT INTO`, `SELECT`, `UPDATE`, `DELETE` 和 `DROP`。
这些基本的 SQL 命令支持大量的数据管理,但是每个介绍到的命令都有很多选项和额外的功能,有些是本文没有介绍的,要注意这一点。总之,当 SQL 开发人员新手在开始数据库工作、以及使用一门新语言 SQL 时,本文中的基本知识应该能为他们开个好头。
Das obige ist der detaillierte Inhalt vonEin SQL-Leitfaden, den Programmierer, die PHP entwickeln, beherrschen müssen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!