Maison  >  Article  >  base de données  >  Notes d'étude MySQL

Notes d'étude MySQL

巴扎黑
巴扎黑original
2017-06-23 14:54:17741parcourir

Calculez le nombre de visites en fonction des jours

Créez d'abord un tableau et insérez des données. Chaque donnée représente le. date à laquelle l'utilisateur a visité un site Web (Par exemple : 2000-01-01)

mysql> CREATE TABLE t1(
-> année ANNÉE(4),
-> mois INT( 2) UNSIGNED ZEROFILL,
-> day INT(2) UNSIGNED ZEROFILL
-> );
Requête OK, 0 ligne affectée (0,53 sec)

mysql> VALEURS(2000,1,1) ,(2000,1,20),(2000,1,30),(2000,2,2),
-> 2,23);
Requête OK, 6 lignes affectées (0,08 sec)
Enregistrements : 6 Doublons : 0 Avertissements : 0

mysql>

Chestnut : Interroger le nombre de jours de visite par mois (les doublons ne sont pas comptés)

Le fonctionnement est le suivant :

SELECT année, mois, BIT_COUNT(BIT_OR(1< ;

mysql> SELECT année, mois,
-> BIT_COUNT(BIT_OR(1<-> ;
+------+-------+-----+
| année mois jour |
+------+--- ----+----+
| 2000 | 3 |
| 2000 |
+------+-------+ -----+
2 lignes dans l'ensemble (0,00 sec)

mysql>

Portail Partagez un blog expliquant BIT_COUNT() et BIT_OR().

Il y a un autre téléporteur qui lit les mêmes livres que moi.

Vérifiez les données dans le tableau :

mysql> SELECT * FROM t1;
+------+- ------+------+
| année | mois jour |
+------+-------+------+
| 2000 | 01 |
| 2000 | 02 |
| 2000 |
| 2000 | 02 | 23 |
+------+-------+------+
6 lignes dans l'ensemble (0,00 sec)

mysql>

Si vous avez l'impression de ne pas le comprendre après l'avoir lu, écoutez simplement ma langue vernaculaire.

J'ai regardé cette opération :

SELECT année, mois, BIT_COUNT(BIT_OR(1<

Je pense que la plupart des gens auront deux doutes en tête. Que font BIT_OR() et BIT_COUNT() ? Pourquoi est-ce encore fait ?

Tout d'abord, expliquons la fonction BIT_COUNT() :

BIT_COUNT(N) renvoie le nombre de 1 dans N (binaire).

Je vais écrire une châtaigne et vous pouvez Compris :

SELECT BIT_COUNT(100) ; Quelle est la réponse à cette question ?

Pensez à la représentation binaire de 100 : 1100100

mysql> SELECT bin(100);

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

| 100) |
+----------+
| 1100100 |
+--------------+
1 ligne dans l'ensemble (0,00 sec)

mysql>

Alors la réponse devrait être 3 ?

mysql> SELECT BIT_COUNT(100);

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

| BIT_COUNT(100) |
+-- ----------------+
| 3 |
+----------------+
1 ligne dans set ( 0,00 sec)

mysql>

Jeune héros, tu as une très bonne vue, la réponse est 3.

Vous savez maintenant ce que fait la fonction BIT_COUNT().

Puis passons à la deuxième question : que fait BIT_OR() ?

Même s'ils se ressemblent, ils ont des fonctions différentes.

BIT_OR(expr) consiste à OU tous les champs de la colonne expr. La précision de l'exécution du calcul est de 64 bits. De nombreux blogs ici n'ont pas répertorié d'exemples sur la façon de l'utiliser. ou peut-être Même eux ne savent pas comment l'utiliser (ils ne savent certainement pas comment l'utiliser, hehehe)

La table de boutique précédente est utilisée comme une opération :

SELECT * FROM boutique;

mysql> SELECT * FROM boutique;

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

| article | prix |
+ ---------+--------+
| >| 0001 | B |
| 0002 | A |
| 0003 |
| 0003 |
| --------+--------+-------+
7 lignes dans l'ensemble (0,06 sec)

Essayons BIT_OR() dans la colonne article. Avant l’expérience, devinez quel devrait être le résultat ?

0001

0001

0010

0011

0011

0011

OU 0100

————————

0111

Le résultat doit-il être comme ça ?

mysql> SELECT BIT_OR(article) FROM boutique;
+-----------------+
| +------------------+
| 7 |
+------------------+
1 ligne dans l'ensemble (0,00 sec)

mysql>

7 est le binaire 0111, c'est vrai, et peu importe le nombre de 1 dans une rangée, le résultat est 1

1 ou 1 ou 0 ou 1 = 1

La logique de cette question est la suivante : peu importe le nombre de fois que j'ai visité aujourd'hui, j'ai visité ce site Web (l'expression logique est 1)

Reprenons et regardons à nouveau cette opération :

SELECT année, mois, BIT_COUNT(BIT_OR(1<

Maintenant, cela semble beaucoup plus facile à expliquer. 1 Décalez le nombre de jours vers la gauche, et le nombre de chiffres correspondant représente le jour du mois (64 bits suffisent de toute façon). Par exemple, aujourd'hui 2017-06-02

1<<2 vaut 100, ce qui signifie que j'ai visité ce site Web aujourd'hui. Après avoir effectué un OU sur le champ jour, j'ai obtenu un binaire de 64 bits (je ne pense pas avoir besoin d'expliquer la signification de ce nombre). Ensuite, j'ai utilisé la fonction BIT_COUNT() pour compter et j'ai obtenu le résultat souhaité (cela m'a épuisé). à mort) (๑•ᴗ•๑), je l'écris depuis si longtemps, je ne sais pas si je le comprends bien).

Utilisez AUTO_INCREMENT

Écoutez simplement le nom et vous saurez qu'il sera automatiquement ajouté. Accédez directement à l'opération :

mysql> CREATE TABLE cats(

-> id MEDIUMINT NOT NULL AUTO_INCREMENT,
- > name CHAR(30) NOT NULL,
-> PRIMARY KEY(id)
-> );
Requête OK, 0 ligne affectée (0,85 sec)

mysql> INSÉRER DANS les animaux (nom) VALEURS

- > ('chien'),('chat'),('pingouin'),
->('lax'),('baleine'),( 'autruche');
Requête OK, 6 lignes affectées (0,13 sec)
Enregistrements : 6 Doublons : 0 Avertissements : 0

mysql> SELECT * FROM animaux;

+--- -+-------- +
| identifiant |
+----+--------+
| 1 | | 2 | chat |
| 3 | pingouin |
| 4 | laxiste |
| 6 | -----+
6 lignes dans l'ensemble (0,00 sec)

mysql>

Créez d'abord une table d'animaux avec l'identifiant et le nom des champs. L'identifiant est défini sur une clé primaire à incrémentation automatique et seul le nom est écrit lors de l'insertion des données. Ensuite, l'identifiant sera renseigné automatiquement.

Il existe également une commande qui permet de modifier la valeur de départ de AUTO_INCREMENT.

L'opération est la suivante :

ALTER TABLE

tbl_name

AUTO_INCREMENT = 2333;

à à suivre..

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