Heim  >  Artikel  >  Datenbank  >  Notizen zur MySQL-Studie

Notizen zur MySQL-Studie

巴扎黑
巴扎黑Original
2017-06-23 14:54:17741Durchsuche

Berechnen Sie die Anzahl der Besuche basierend auf Tagen

Erstellen Sie zunächst eine Tabelle und fügen Sie einige Daten ein Datum, an dem der Benutzer eine Website besucht hat.

mysql> Jahr JAHR(4),
-> Monat INT( 2) UNSIGNED ZEROFILL,
-> day INT(2) UNSIGNED ZEROFILL
-> );
Abfrage OK, 0 Zeilen betroffen (0,53 Sek.)

mysql> INSERT INTO t1 WERTE(2000,1,1) ,(2000,1,20),(2000,1,30),(2000,2,2),

-> 2,23);
Abfrage OK, 6 Zeilen betroffen (0,08 Sek.)
Datensätze: 6 Duplikate: 0 Warnungen: 0

mysql>

Kastanie: Abfrage der Anzahl der Besuchstage pro Monat (Duplikate werden nicht gezählt)

Die Operation ist wie folgt:

SELECT Jahr, Monat, BIT_COUNT(BIT_OR(1< ;

mysql> SELECT Jahr, Monat,

-> BIT_COUNT(BIT_OR(1<-> ;
+------+-----+
Jahr |
+------+--- ----+-----+
|. 3 |
+------+ -----+
2 Zeilen im Satz (0,00 Sek.)

mysql>

Portal Teilen Sie einen Blog, der BIT_COUNT() und BIT_OR() erklärt.

Es gibt einen anderen Teleporter, der die gleichen Bücher liest wie ich.

Überprüfen Sie die Daten in der Tabelle:

mysql> SELECT * FROM t1;

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

|. Monat |
+------+------+
|. 2000 |. 2000 |. 2000 | 02 |. 23 |
|. 2000 |. 23 |
+------+------+
6 Reihen im Satz (0,00 Sek.)

mysql>



Wenn Sie nach dem Lesen das Gefühl haben, dass Sie es nicht verstehen, hören Sie sich einfach meine Umgangssprache an.

Ich habe mir diesen Vorgang angesehen:

SELECT Jahr, Monat, BIT_COUNT(BIT_OR(1<

Ich glaube, die meisten Menschen haben zwei Zweifel im Kopf: Was machen BIT_OR() und BIT_COUNT()? Warum wird das immer noch gemacht?

Erklären wir zunächst die Funktion BIT_COUNT():

BIT_COUNT(N) gibt die Anzahl der Einsen in N (binär) zurück.

Ich schreibe eine Kastanie und Sie können es verstehen:

SELECT BIT_COUNT(100); Wie lautet die Antwort darauf?

Denken Sie an die binäre Darstellung von 100: 1100100

mysql> SELECT bin(100);

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

|. 100) |

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

|. 1100100 |

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

1 Reihe im Satz (0,00 Sek.)

mysql>

Dann sollte die Antwort 3 sein?

mysql> SELECT BIT_COUNT(100);

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

| BIT_COUNT(100) |

+-- --+

|. 3 |

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

1 Zeile in set ( 0,00 Sek.)

mysql>

Junger Held, du hast wirklich ein gutes Sehvermögen, die Antwort ist 3.

Jetzt wissen Sie, was die Funktion BIT_COUNT() bewirkt.

Dann kommen wir zur zweiten Frage: Was macht BIT_OR()?

Auch wenn sie gleich aussehen, haben sie unterschiedliche Funktionen.

BIT_OR(expr) ist eine OR-Verknüpfung aller Felder in der expr-Spalte. Viele Blogs haben hier keine Beispiele für die Verwendung aufgeführt. oder vielleicht wissen sie sogar nicht, wie man es benutzt (sie wissen definitiv nicht, wie man es benutzt, hehehe)

Die vorherige Shop-Tabelle wird als Operation verwendet:

SELECT * FROM shop;

mysql> SELECT * FROM shop;

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

|. Artikel |. Preis |

+ --------+------+|. 3,99 |. 0003 |. 0003 | 1,25 |. --------+--------+-------+

7 Reihen im Satz (0,06 Sek.)

Lassen Sie uns BIT_OR() für die Artikelspalte ausprobieren. Raten Sie vor dem Experiment, wie das Ergebnis aussehen soll?

0001

0001

0010

0011

0011

0011

ODER 0100

————————

0111

Soll das Ergebnis so sein?

mysql> SELECT BIT_OR(article) FROM shop;
+-----------------+
| +----+
|. 7 |
+------------------+
1 Zeile im Satz (0,00 Sek.)

mysql>

7 ist binär 0111, richtig, und egal wie viele 1 es in einer Zeile gibt, das Ergebnis ist 1

1 oder 1 oder 0 oder 1 = 1

Die Logik in dieser Frage ist: Egal wie oft ich sie heute besucht habe, ich habe diese Website besucht (der logische Ausdruck ist 1)

Lass uns zurückgehen und uns diesen Vorgang noch einmal ansehen:

SELECT Jahr, Monat, BIT_COUNT(BIT_OR(1<

Jetzt scheint es viel einfacher zu erklären. 1 Verschieben Sie die Anzahl der Tage nach links, und die entsprechende Anzahl von Ziffern stellt den Tag des Monats dar (64 Bit reichen ohnehin aus). Zum Beispiel ist heute 2017-06-02

1<<2 100, was bedeutet, dass ich diese Website heute besucht habe. Nach der OR-Verknüpfung des Tagesfelds erhielt ich eine 64-Bit-Binärdatei (ich glaube nicht, dass ich die Bedeutung dieser Zahl erklären muss). Dann habe ich die Funktion BIT_COUNT() zum Zählen verwendet und das gewünschte Ergebnis erhalten (es hat mich erschöpft). zu Tode) (๑•ᴗ•๑), ich habe es so lange aufgeschrieben, dass ich nicht weiß, ob ich es klar verstehe).

Verwenden Sie AUTO_INCREMENT

Hören Sie sich einfach den Namen an und Sie werden wissen, dass er automatisch hinzugefügt wird:

mysql> id MEDIUMINT NOT NULL AUTO_INCREMENT,

- > name CHAR(30) NOT NULL,
-> PRIMARY KEY(id)
->
Abfrage OK, 0 Zeilen betroffen (0,85 Sek.)

mysql> INSERT INTO Animals (Name) VALUES

- > ('dog'),('cat'),('pinguin'),

-('lax'),('whale'),( 'Strauß');
Abfrage OK, 6 Zeilen betroffen (0,13 Sek.)
Datensätze: 6 Duplikate: 0 Warnungen: 0

mysql> SELECT * FROM Animals;

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

|. id |
+----+---------+
| |. 2 |. 3 |. 4 |
|. -----+
6 Zeilen im Satz (0,00 Sek.)

mysql>

Erstellen Sie zunächst eine Tiertabelle mit den Feldern ID und Name. Die ID ist auf einen automatisch inkrementierenden Primärschlüssel festgelegt und beim Einfügen von Daten wird nur der Name geschrieben. Dann wird die ID automatisch ausgefüllt.


Es gibt auch einen Befehl, der den Startwert von AUTO_INCREMENT ändern kann.

Die Operation ist wie folgt:

ALTER TABLE

tbl_name

AUTO_INCREMENT = 2333;

to Fortsetzung folgt..

Das obige ist der detaillierte Inhalt vonNotizen zur MySQL-Studie. 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