Heim  >  Artikel  >  Datenbank  >  Fassen Sie Kenntnisse im Zusammenhang mit MySQL zusammen

Fassen Sie Kenntnisse im Zusammenhang mit MySQL zusammen

PHP中文网
PHP中文网Original
2017-06-21 16:08:42724Durchsuche

Datenbank- und Tabelleninformationen abrufen

Normalerweise fallen normalen Programmierern oder Datenbankadministratoren beim Eingeben von Code plötzlich folgende Fragen ein: Wer bin ich? Wo bin ich? Was mache ich? Wo ist meine Datenbank? Wie habe ich meine Tabelle erstellt? Was soll ich tun? Sie denken vielleicht an den Befehl SHOW DATABASES; Dieser Befehl dient jedoch dazu, die von MySQL verwalteten Datenbanken aufzulisten. Es ist kein Befehl, um zu wissen, wo ich mich befinde. Um welchen Befehl handelt es sich?

Ich habe diesen Befehl gefunden, als jemand alte Bücher durchstöberte:

SELECT DATABASE();

mysql> ();
+----------------+
|. DATABASE() |
+---------- -+
|. test |
+-----------+
1 Zeile im Satz (0,00 Sek.)

mysql>

Natürlich ist dies ein Befehl, der mir sagt, in welcher Datenbank ich mich befinde. Dann wird es bestimmt eine Gruppe junger Leute geben, die fragen: Wenn ich keine Datenbank eingebe, was wird dann angezeigt?

mysql> SELECT DATABASE();
+-----------+
| ----+
|. NULL |
+------------+
1 Zeile im Satz (0,00 Sek.)

mysql>

Natürlich ist es NULL, was kann es sonst sein?

Jetzt haben wir die Datenbank (Test) gefunden, die wir verwenden. Dann ist es an der Zeit, den Tisch zu finden, den Sie suchen, z. B. (pet). Gemäß den Aufzeichnungen in alten Büchern sollten die folgenden Befehle verwendet werden:

SHOW TABLES;

mysql>

+----------- --- -+
|. Tables_in_test |
+----------------+
| Ereignis |
+-- --- ----------+
2 Zeilen im Satz (0,00 Sek.)

mysql>

Und dann möchte ich den Aufbau der Tabelle wissen. Was soll ich tun?

DESCRIBE pet;

mysql>

+---------+---------- - -+-----+-------+

Feld | 🎜>+---------+-------------+------+-----+--------- + -------+
|. varchar(20) | NULL |. char(1) |. NULL |. ---+-------------+------+-----+---- -----+-------+
6 Zeilen im Satz (0,00 Sek.)

mysql>





Alte Treiber kürzen es im Allgemeinen als

DESC pet ab ;

Feld stellt den Spaltennamen dar

Typ stellt den Datentyp der Spalte dar

Null stellt dar, ob NULL sein kann

Schlüssel gibt an, ob dies der Fall ist indexiert

Standard gibt den Standardwert des Feldes an

Wenn die Tabelle einen Index hat, zeigt SHOW INDEX FROM tbl_name die Indexinformationen an.

Beispiele für häufige Abfragen

Bevor Sie etwas tun, müssen Sie zunächst eine Tabelle erstellen : Angenommen, es gibt eine Tabelle (Shop), in der der Preis () jedes Artikels () von einem Händler () gespeichert wird. (Artikel und Händler werden als Primärschlüssel verwendet)

Der Vorgang ist wie folgt:

mysql> CREATE TABLE shop(

-> Article INT(4) UNSIGNED ZEROFILL DEFAULT '0000 ' NICHT NULL,

-> Händler CHAR(20) STANDARD '' NICHT NULL,

-> Preis DOUBLE(16,2) STANDARD '0,00' NICHT NULL,

-> Artikel, Händler));

Abfrage OK, 0 Zeilen betroffen (0,56 Sek.)

mysql>

Dann fügen Sie einige Daten ein:

INSERT INTO shop VALUES
-> (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
- > (3,' C',1.69),(3,'D',1.25),(4,'D',19.95);
Abfrage OK, 7 Zeilen betroffen (0,24 Sek.)

Datensätze: 7 Duplikate: 0 Warnungen: 0

mysql>

Überprüfen Sie die Tabelle:

mysql> SELECT * FROM shop;
+--------+-------+
| Preis |
+-------+------++---------+--------+-------+
7 Zeilen im Satz (0,00 Sek.)

MySQL>



Dann können wir den folgenden Inhalt lernen

Der Maximalwert der Spalte


Beispiel: Was ist die größte Artikelnummer im Shop?

Der Vorgang ist wie folgt:

SELECT MAX(article) FROM shop;

SELECT MAX(article) FROM shop;

+---- -- -------+

|. MAX(Artikel) |

+------------+

|. - ----------+

1 Zeile im Satz (0,00 Sek.)

mysql>





Beispiel : Um das teuerste Produkt zu finden

gehen Sie wie folgt vor:

SELECT MAX(price) FROM shop;

SELECT MAX(price) FROM shop;

+-- ---------+

|. MAX(Preis) |

+-----------+

| --- ---------+

1 Zeile im Satz (0,00 Sek.)

mysql>


Sie wissen, was die Funktion MAX() macht.




Die Zeile mit dem Maximalwert einer Spalte

Kastanie: Am häufigsten abgefragt teure Produktinformationen

Der Vorgang ist wie folgt:

SELECT * FROM shop WHERE price = (SELECT MAX(price) FROM shop);

mysql>

-> WHERE Preis =

-> (MAX(Preis) AUS DEM Shop AUSWÄHLEN);

+--------+-- -- ---+

|. Artikel |. Preis |

+--------+-------+

|. 0004 |. D |. 19,95 |

+--------+-------+

1 Reihe im Satz (0,00 Sek.)


mysql>

Es gibt eine weitere Operation:

SELECT * FROM shop ORDER BY price DESC LIMIT 1;

mysql> SELECT * FROM shop
-> ; BESTELLEN NACH Preis DESC

-> LIMIT 1;

+---------+-------+

|. Artikel |. Preis |

+-------+-------++ ---------+--------+-------+

1 Zeile im Satz (0,00 Sek.)

MySQL>


Erstes ist eine verschachtelte Abfrage und letzteres ist nach Preis sortiert, um nur eine anzuzeigen.





Maximalwert der Spalte: nach Gruppe

Kastanie: jedes Element (Artikel) ? Was ist der Höchstpreis?

Der Vorgang ist wie folgt:

SELECT item, MAX(price) AS price FROM shop GROUP BY Article;

MYSQL> , MAX( preis) AS preis

-> AUS shop

-> GRUPPE NACH artikel;

+--------++------+------+

| |

|. 19,95 |

+---------+-------+

4 Zeilen im Satz (0,00 Sek.)

mysql>






Die Zeile mit dem maximalen Intergruppenwert eines Feldes





Ich nicht Ich verstehe nicht, was der Titel bedeutet. . . .

Kastanie: Finden Sie für jeden Artikel den Händler des teuersten Artikels.

Die Bedienung ist wie folgt:

Artikel, Händler, Preis AUSWÄHLEN

VON Shop s1

WHERE Preis = (SELECT MAX(Preis)

VON Shop s2

WHERE s1 .article = s2.article);

MYSQL> SELECT Artikel, Händler, Preis

-> FROM shop s1

-> )

-> FROM shop s2

-> WHERE s1.article = s2.article);

+--------+- --- ---+

|. Artikel |. Preis |

+--------+-------+

|. 3,99 |. 0002 |. 0003 |. 19,95 |. -+- -------+-------+
4 Zeilen im Satz (0,00 Sek.)

Der Grund steht nicht im Buch, und ich auch nicht verstehe es durchaus. Wer mehr wissen möchte, kann dies im Kommentarbereich erklären.




Benutzervariablen verwenden





Kastanie: Finden Sie den Artikel mit dem höchsten oder niedrigsten Preis

Die Operation ist wie folgt:

SELECT @min_price:=MIN(price), @max_price:=MAX(price) FORM shop;

SELECT * FROM shop WHERE Preis = @min_price ODER Preis = @max_price;

mysql> SELECT @min_price:=MIN(price), @max_price:=MAX(price) FROM shop;
+-------------------- ------ ----+--------+
| @min_price:=MIN(price) |. max_price:=MAX(price ) |
+------------------------+------------- ----- -----+
|. 19,95 |
+---------+-- ---- ----+
1 Zeile im Satz (0,13 Sek.)

MYSQL> min_price ODER price = @ max_price;
+--------+-------++----------+-------+
|0003 |
| 🎜>+-- -------+--------+-------+
2 Zeilen im Satz (0,09 Sek.)

MySQL>

Über Benutzervariablen gibt es später noch mehr.

Fremdschlüssel verwenden

Ich möchte nicht direkt zur Operation gehen , es gibt einen Transfer über der Tür, das ist sehr gut.

CREATE TABLE person (
    id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
    name CHAR(60) NOT NULL,
    PRIMARY KEY (id)
);
 <br>
CREATE TABLE shirt (
    id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
    style ENUM('t-shirt', 'polo', 'dress') NOT NULL,
    color ENUM('red', 'blue', 'orange', 'white', 'black') NOT NULL,
    owner SMALLINT UNSIGNED NOT NULL REFERENCES person(id),
    PRIMARY KEY (id)
);
 <br>
INSERT INTO person VALUES (NULL, 'Antonio Paz');
 <br>
SELECT @last := LAST_INSERT_ID();
 <br>
INSERT INTO shirt VALUES
(NULL, 'polo', 'blue', @last),
(NULL, 'dress', 'white', @last),
(NULL, 't-shirt', 'blue', @last);
 <br>
INSERT INTO person VALUES (NULL, 'Lilliana Angelovska');
 <br>
SELECT @last := LAST_INSERT_ID();
 <br>
INSERT INTO shirt VALUES
(NULL, 'dress', 'orange', @last),
(NULL, 'polo', 'red', @last),
(NULL, 'dress', 'blue', @last),
(NULL, 't-shirt', 'white', @last);
 <br>
SELECT * FROM person;
+----+---------------------+
| id | name                |
+----+---------------------+
|  1 | Antonio Paz         |
|  2 | Lilliana Angelovska |
+----+---------------------+
 <br>
SELECT * FROM shirt;
+----+---------+--------+-------+
| id | style   | color  | owner |
+----+---------+--------+-------+
|  1 | polo    | blue   |     1 |
|  2 | dress   | white  |     1 |
|  3 | t-shirt | blue   |     1 |
|  4 | dress   | orange |     2 |
|  5 | polo    | red    |     2 |
|  6 | dress   | blue   |     2 |
|  7 | t-shirt | white  |     2 |
+----+---------+--------+-------+
 <br>
 <br>
SELECT s.* FROM person p, shirt s
 WHERE p.name LIKE 'Lilliana%'
   AND s.owner = p.id
   AND s.color <> 'white';
 <br>
+----+-------+--------+-------+
| id | style | color  | owner |
+----+-------+--------+-------+
|  4 | dress | orange |     2 |
|  5 | polo  | red    |     2 |
mysql> ** *********** 1. Reihe ***************************
|  6 | dress | blue   |     2 |
Tabelle: Hemd
+----+-------+--------+-------+



我错了,网断了。只好拷贝书上的代码了。
Tabelle erstellen: CREATE TABLE `shirt` (

`id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`style` enum('t-shirt','polo','dress') NOT NULL ,
`color` enum('red','blue','orange','white','black') NOT NULL,
`owner` smallint(5) unsigned NOT NULL,
PRIMARY KEY ( `id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1
1 Zeile im Satz (0,01 Sek.)

mysql>

Das obige ist der detaillierte Inhalt vonFassen Sie Kenntnisse im Zusammenhang mit MySQL zusammen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Notizen zur MySQL-StudieNächster Artikel:Notizen zur MySQL-Studie