ホームページ  >  記事  >  データベース  >  MySQLの勉強メモ

MySQLの勉強メモ

巴扎黑
巴扎黑オリジナル
2017-06-23 14:54:17706ブラウズ

日数に基づいて訪問数を計算します

まずテーブルを作成し、いくつかのデータを挿入します。各データは、ユーザーが Web サイトを訪問した日付 (例: 2000-01-01) を表します。

mysql> CREATE TABLE t1(

-> 年 YEAR(4),
-> 月 INT(2) UNSIGNED ZEROFILL,
-> 日 INT(2) UNSIGNED ZEROFILL
-> );
クエリ OK,影響を受ける行は 0 件 (0.53 秒)

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

-> ; (2000,2,23) ,(2000,2,23);
クエリ OK、影響を受ける 6 行 (0.08 秒)
レコード: 6 重複: 0 警告: 0

mysql>

チェストナット:月ごとの訪問日数をクエリします (重複はカウントされません)

操作は次のとおりです:

SELECT year, month, BIT_COUNT(BIT_OR(1<

mysql> SELECT 年、月、

-> BIT_COUNT(BIT_OR(1-> 年、月;
+----- -+------+-----+
| 年 | 月日 |
+-----+-----+-----+
| | 01 | 3 |
| 2 |
+-----+-----+-----+
2 行 (0.00 秒)
ポータル BIT_COUNT() と BIT_OR() を説明するブログを共有します。

私と同じ本を読んでいる別のテレポーターがいます。

テーブル内のデータを確認します:

mysql> SELECT * FROM t1;

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

|年 | 月 | 日 |

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

| 2000 | 2000 | 01 | 02 | 23 | 02 |
-+
6 行セット (0.00 秒)

mysql>





送信を読んでもよく理解できないと思われる場合は、私の言葉を聞いてください。

次の操作を確認しました:

SELECT year, month, BIT_COUNT(BIT_OR(1 BIT_OR() と BIT_COUNT() は何をするのかという 2 つの疑問が頭に浮かぶと思います。なぜこれがまだ行われているのでしょうか?

最初に BIT_COUNT() 関数について説明します。

BIT_COUNT(N) は N (バイナリ) 内の 1 の数を返します。

例を書きます。これは理解できます。

SELECT BIT_COUNT(100);の答えは?

100 のバイナリ表現を考えてみましょう: 1100100

mysql> SELECT bin(100);

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

|

+------ - --+

| 1100100 |

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

セット内の 1 行 (0.00 秒)

mysql>


では、答えは 3 になるはずです。

mysql> SELECT BIT_COUNT(100);
+----------------+
|
+----------- ----+

| 3 |

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

1 行 (0.00 秒)

mysql>


若いヒーロー、あなたは本当に良い目をしてください。答えは 3 です。

BIT_COUNT() 関数が何をするかがわかりました。


それでは 2 番目の質問に移りましょう: BIT_OR() は何をしますか?

見た目は似ていますが、機能が異なります。

BIT_OR(expr) は、expr 列のすべてのフィールドの OR を計算します。計算の実行精度は 64 ビットです。おそらく、このブログの多くは、それが簡単であると考えているのか、あるいは実際に使用しているのかを示していません。使い方がわかりません。使います (絶対に使いません、ふふふ) +-------- +----------+------+

ディーラー価格 |

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

| 0001 | 10.99 | 0003 | 1.69 | 0003 | 0004 | 19.95

7 行セット (0.06 秒)

記事列でBIT_OR()を試してみましょう。 実験の前に、結果がどうなるか予想してみてください。

0001

0001

0010

0011

0011

0011

OR 0100

————————

0111

結果は次のようになりますか?

mysql> ショップから BIT_OR(記事) を選択;
+-----------------+
|
+------- --------+
| 7 |
+----------------+
セット内の 1 行 (0.00 秒)

mysql>

7 はバイナリです0111 は正解で、1 がいくつあっても連続 OR の結果は 1 になります

1 or 1 or 0 or 1 = 1

この質問の論理は次のとおりです。今日何度訪れても、私はこの Web サイトにアクセスしたところです (論理表現は 1)

戻ってこの操作をもう一度見てみましょう:

SELECT year, month, BIT_COUNT(BIT_OR(1<

これで説明がはるかに簡単になりました。 1 日数を左にシフトすると、対応する桁数が月の日を表します (とにかく 64 ビットで十分です)。たとえば、今日 2017 年 6 月 2 日

1<<2 は 100 で、これは今日この Web サイトにアクセスしたことを意味します。 日フィールドを OR 演算した後、64 ビットのバイナリが得られました (この数値の意味を説明する必要はないと思います)。次に、BIT_COUNT() 関数を使用してカウントし、望んだ結果が得られました (これには疲れました)。死ぬほど) (๑•ᴗ•๑)、長々と書き連ねてきたので、よく理解できているかわかりませんが)

AUTO_INCREMENT

を使用します。

操作に進むだけで、自動的に追加されることがわかります:

mysql>

-> ; id ME DIUMINT NOT NULL AUTO_INCREMENT,
-> name CHAR(30) NOT NULL,
->PRIMARY KEY(id)
-> );
クエリは 0 行に影響を受けます (0.85 秒)動物 (名前) の値を挿入します
-> ('犬'),('猫'),('ペンギン'),

-> ('怠け者'),('クジラ'),('ダチョウ') ;

クエリ OK、6 行が影響を受けました (0.13 秒)
レコード: 6 重複: 0 警告: 0

mysql> SELECT * FROM 動物;
+----+---------+

| |

| 名前 |
+ --------+
| 2 | ペンギン |
| |
| 6 | ダチョウ |
+-- --+----------+
6 行セット (0.00 秒)

mysql>

まず、フィールド ID と名前を含む動物テーブルを作成します。 ID は自動インクリメントされる主キーに設定され、データの挿入時に名前のみが書き込まれます。 その後、ID が自動的に入力されます。

AUTO_INCREMENT の開始値を変更するコマンドもあります。

操作は次のとおりです:

ALTER TABLE

tbl_name

AUTO_INCREMENT = 2333;

続きます...

以上がMySQLの勉強メモの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。