Maison  >  Article  >  base de données  >  Résumer les connaissances liées à Mysql

Résumer les connaissances liées à Mysql

PHP中文网
PHP中文网original
2017-06-21 16:08:42765parcourir

Obtenir des informations sur la base de données et les tables

En général, les programmeurs ou les administrateurs de bases de données penseront soudainement à une série de questions comme celle-ci lorsqu'ils tapent du code : Qui suis-je ? Qu'est-ce que je fais ? Où est ma base de données ? Où est ma table ? Comment ai-je créé mon tableau ? Que dois-je faire? Vous pourriez penser à la commande SHOW DATABASES ; Mais cette commande sert à lister les bases de données gérées par MySQL. Ce n'est pas une commande pour savoir où je me trouve. De quelle commande s'agit-il ?

J'ai trouvé cette commande lorsque quelqu'un parcourait des classiques anciens :

SELECT DATABASE();

SELECT DATABASE();

SELECT DATABASE(); ();
+----------------+
| BASE DE DONNÉES() |
+--------- -+
| test |

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

1 ligne dans l'ensemble (0,00 sec)

mysql>

Évidemment, c'est une commande qui me dit dans quelle base de données je me trouve. Ensuite, il y aura certainement un groupe de jeunes qui demanderont : si je n’entre dans aucune base de données, qu’est-ce qui sera affiché ?

mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+-------- ----+
| NULL |

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

1 ligne dans l'ensemble (0,00 sec)

mysql>

Bien sûr que c'est NULL, qu'est-ce que ça peut être d'autre ?

Maintenant, nous avons trouvé la base de données (test) que nous utilisons. Ensuite, il est temps de trouver la table que vous recherchez, comme (animal de compagnie). Selon les enregistrements des livres anciens, les commandes suivantes doivent être utilisées :

SHOW TABLES;

mysql>
+---------- --- -+
| Tables_in_test |
+----------------+
| événement |
| animal de compagnie |

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

2 lignes dans l'ensemble (0,00 sec)

mysql>

Et puis je veux connaître la structure du tableau. Que dois-je faire ?

DESCRIBE pet;

mysql> DESCRIBE pet;
+--------------+---------- - -+------+-----+--------+
| Champ Type | Null Clé Par défaut | 🎜>+---------+-------------+------+-----+--------- + -------+
| nom | varchar(20) | OUI | NULL |
| varchar(20) | NULL | sexe | char(1) | OUI | NULL |
+------ ---+-------------+------+-----+---- -----+-------+
6 lignes dans un ensemble (0,00 sec)

mysql>

Les anciens pilotes l'abrégent généralement en

DESC pet ;

Le champ représente le nom de la colonne

Le type représente le type de données de la colonne

Null représente si elle peut être NULL

La clé indique si elle est indexé

Default indique la valeur par défaut du champ

Si la table a un index, SHOW INDEX FROM tbl_name affiche les informations d'index.

Exemples de requêtes courantes

Avant de faire quoi que ce soit, vous devez d'abord créer une table : Supposons qu'il existe une table (boutique) pour stocker le prix () de chaque article () d'un marchand (). (Les articles et les marchands sont utilisés comme clés primaires)

Le fonctionnement est le suivant :

mysql> CREATE TABLE shop(

-> article INT(4) UNSIGNED ZEROFILL DEFAULT '0000 ' PAS NULL,

-> revendeur CHAR(20) PAR DÉFAUT '' PAS NULL,

-> prix DOUBLE(16,2) PAR DÉFAUT '0.00' PAS NULL,
-> article, revendeur));
Requête OK, 0 ligne affectée (0,56 sec)

mysql>

Puis insérez quelques données :

mysql>

-> (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);

Requête OK, 7 lignes affectées (0,24 sec)
Enregistrements : 7 Doublons : 0 Avertissements : 0

mysql>

Vérifiez le tableau :

mysql> SELECT * FROM shop;
+----------+--------+-------+
| article | prix |
+---------+--------+-------+
| 0001 A |
| | 3,99 |
| 10,99 |
| 0003 |
|
+---------+--------+-------+
7 lignes dans l'ensemble (0,00 sec)

mysql>

Ensuite, nous pouvons apprendre le contenu suivant


La valeur maximale de la colonne

Exemple : Quel est le plus grand numéro d'article dans la boutique ?

Le fonctionnement est le suivant :

SELECT MAX(article) FROM shop;

mysql>SELECT MAX(article) FROM shop;

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

| MAX(article) |
+-------------+
|4 |
+--- - ----------+
1 ligne dans l'ensemble (0,00 sec)

mysql>

Exemple : Pour trouver le produit le plus cher

procédez comme suit :

SELECT MAX(price) FROM shop;

mysql> SELECT MAX(price) FROM shop;

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

| MAX(prix) |
+------------+
| 19.95 |
+ --- ---------+
1 ligne dans l'ensemble (0,00 sec)

mysql>

Vous savez ce que fait la fonction MAX().

La ligne avec la valeur maximale d'une colonne

Chestnut : Requête le plus cher Informations sur le produit

Le fonctionnement est le suivant :

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

mysql>

-> OÙ prix =

-> (SELECT MAX(price) FROM shop);
+---------+--------+-- -- ---+
|article | prix revendeur |
+---------+--------+-------+
| 0004 | D | 19.95 |
+---------+--------+-------+
1 ligne dans l'ensemble (0.00 sec)

mysql>

Il existe une autre opération :

SELECT * FROM shop ORDER BY price DESC LIMIT 1;

mysql> -> ; COMMANDER PAR prix DESC

-> LIMITE 1;

+--------+--------+-------+
| article | prix |
+--------+--------+-------+
| 19.95 | >+ ---------+--------+-------+
1 ligne dans l'ensemble (0,00 sec)

mysql>

La première est une requête imbriquée, et la seconde est triée par prix pour n'en afficher qu'un seul.

Valeur maximale de colonne : par groupe

Châtaigne : chaque article (article) ? Quel est le prix maximum ?

Le fonctionnement est le suivant :

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

mysql> , MAX( prix) AS prix

-> DE la boutique

-> GROUPE PAR article;

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

| article | prix |
+--------+-------+
| 0001 |
| 10,99 |
| |
| 0004 | 19.95 |
+---------+-------+
4 lignes dans l'ensemble (0,00 sec)

mysql>

La ligne avec la valeur inter-groupe maximale d'un champ

Je ne Je ne comprends pas ce que signifie le titre. . . .

Châtaigne : Pour chaque article, trouvez le revendeur de l'article le plus cher.

Le fonctionnement est le suivant :

SELECT article, revendeur, prix

DE la boutique s1

OÙ prix = (SELECT MAX(prix)

DE la boutique s2

WHERE s1 .article = s2.article);

mysql> SELECT article, revendeur, prix
-> FROM shop s1
-> )

->DE la boutique s2

-> OÙ s1.article = s2.article);
+---------+--------+- --- ---+
|article | prix revendeur |
+---------+--------+-------+
| 0001 | B |
| 0002 | A 10,95 |
+-------- -+- -------+-------+
4 lignes dans l'ensemble (0,00 sec)

La raison n'est pas écrite dans le livre, et je ne le fais pas je comprends bien. Ceux qui souhaitent en savoir plus peuvent l'expliquer dans la zone commentaires.



Utiliser les variables utilisateur

Châtaigne : recherchez l'article avec le prix le plus élevé ou le plus bas

Le fonctionnement est le suivant :

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

SELECT * FROM shop OÙ prix = @min_price OU prix = @max_price;

mysql> SELECT @min_price:=MIN(price), @max_price:=MAX(price) FROM shop;
+----------------------------------- ------ ----+--------------+
| @min_price:=MIN(prix) @ max_price:=MAX(prix) |
+------------------------+------------- ----- -----+
| 1.25 | 19.95 |
+------------------------+-- ---- ------------------+
1 ligne dans l'ensemble (0,13 sec)

mysql> SELECT * FROM shop WHERE price=@ min_price OU price = @ max_price;
+---------+--------+-------+
| prix du revendeur |
+--- ------+--------+-------+
| 0003 | 🎜>+-- -------+--------+-------+
2 lignes dans l'ensemble (0,09 sec)

mysql>

Nous en saurons plus sur les variables utilisateur plus tard. Les outardes curieuses peuvent Baidu.

Utiliser des clés étrangères

Je ne veux pas accéder directement à l'opération , il y a un transfert au dessus de Door, c'est très bien.

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 |
|  6 | dress | blue   |     2 |
mysql> afficher créer une chemise de tableG
+----+-------+--------+-------+



我错了,网断了。只好拷贝书上的代码了。
***************** ** *********** 1. rangée ****************************

Tableau : chemise
Créer une table : 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 ligne dans l'ensemble (0,01 sec)

mysql>

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!

Déclaration:
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
Article précédent:Notes d'étude MySQLArticle suivant:Notes d'étude MySQL