ホームページ > データベース > mysql チュートリアル > Mysqlに関する知識をまとめます

Mysqlに関する知識をまとめます

PHP中文网
リリース: 2017-06-21 16:08:42
オリジナル
782 人が閲覧しました

データベースとテーブルの情報を取得する

一般に普通のプログラマーや DBA は、コードを入力するときに次のような一連の質問を突然思い浮かべます。 ここは誰ですか?私は何をやっている? 私のデータベースはどこにありますか?どうやってテーブルを作成したのでしょうか?どうすればいいですか? SHOW DATABASES コマンドを思い浮かべるかもしれません。ただし、このコマンドはmysqlで管理しているデータベースを一覧表示するためのもので、自分がどこにいるのかを知るためのコマンドではありません。どのコマンドですか?

私の誰かが、古代の古典を閲覧中にこのコマンドを見つけました:

SELECT DATABASE();

mysql> SELECT DATABASE();
+-------- ----+
| DATABASE() |
+----------------+
| テスト |
+----------------+
1 行set (0.00 秒)

mysql>

明らかに、これは自分がどのデータベースにいるかを知らせるコマンドです。その場合、若者のグループは間違いなく「データベースに入力しなければ、何が表示されるのですか?」と尋ねるでしょう。

mysql> SELECT DATABASE();
+----------------+
|
+-------------- --+
| NULL |
+----------------+
セット内の 1 行 (0.00 秒)

mysql>

もちろん、これは NULL ですが、他にできることはありますそれはありますか?

次に、使用しているデータベース (テスト) を見つけます。次に、(ペット) など、探しているテーブルを見つけます。 古代の本の記録によると、次のコマンドを使用する必要があります。

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

| イベント)

mysql>





そして、テーブルの構造を知りたいのです。どうすればいいですか?

DESCRIBE pet;

mysql> DESCRIBE pet;

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

| フィールド タイプ | デフォルト | -------------+------+-----+----------+------+

| (20) | varchar(20) | はい | | 死亡日 | NULL ----+------+-----+-------+

6 行 ( 0.00 秒)

mysql>




古いドライバーは通常、

DESC pet と省略します。

フィールドは列名を表します。

Type は列のデータ型を表します。

Null は列のデータ型を表します。 NULL も可能

Key はインデックスが作成されているかどうかを表します

Default はフィールドを表します

のデフォルト値 テーブルにインデックスがある場合、SHOW INDEX FROM tbl_name はインデックス情報を表示します。

一般的なクエリの例

何かを行う前に、まずテーブルを作成する必要があります: 販売者 () () の各アイテム () の価格を保存するテーブル (ショップ) があるとします。 )。 (アイテムとマーチャントが主キーとして使用されます)

操作は次のとおりです:

mysql>CREATE TABLE shop(

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

->ディーラー CHAR (20) DEFAULT '' NOT NULL,

-> 価格 DOUBLE(16,2) DEFAULT '0.00' NOT NULL,

-> クエリ OK、影響を受ける行は 0 (0.56 秒) )

mysql>

次に、いくつかのデータを挿入します:

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

クエリOK、7 行が影響を受けました (0.24 秒)

レコード: 7 重複: 0 警告: 0

mysql>

テーブルを確認してください:

mysql> ショップから選択;
+--------+--------+
| ディーラー価格 |
+--- ------+--------+------+
| 3.45 |
| 0002 | 0003 | 1.45 | 0003 | 19.95 | +------+
7行セット(0.00秒)

mysql>



すると、次の内容がわかります

列の最大値


例: 店内で一番大きい商品番号は何ですか?

操作は次のとおりです:

SELECT MAX(article) FROM shop;

mysql> SELECT MAX(article) FROM shop;

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

|記事) |

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

| 4 |

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

1 行 (0.00 秒)

mysql>



例: 最も高価な製品

を見つけるには、操作は次のようになります:

SELECT MAX(price) FROM shop;

mysql> SELECT MAX(price) FROM shop;

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

| MAX(価格) |

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

| 19.95 |

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

セット内の 1 行 (0.00 秒)

mysql>

MAX() 関数が何をするか知っていますか?

特定の列の最大値を持つ行

栗: 最も高価な製品の情報をクエリします

操作は次のとおりです:

SELECT * FROM shop WHERE 価格 = (ショップから MAX(価格) を選択);

mysql> ショップから SELECT *

-> WHERE 価格 =

--> (ショップから MAX(価格) を選択);

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

記事 |

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

| 19.95 |
+----------+------+------+
1 行 (0.00 秒) )

mysql>

別の操作があります:

SELECT * ショップから ORDER BY 価格 DESC LIMIT 1;

mysql> SELECT * FROM SHOP

-> +------ ---+------+------+

ディーラー価格 |

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

| 19.95 |

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

1 row in set (0.00 sec)

mysql>

前者はネストされたクエリで、後者は価格でソートされて1つだけ表示されます。



列の最大値: グループ別

栗: 各アイテム (商品) の最大価格はいくらですか

操作は次のとおりです:

SELECT 記事、MAX(価格) AS 価格 ショップ GROUP BY 記事;

mysql> SELECT 記事、MAX(価格) AS 価格

-> ショップ BY 記事;

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

| 価格 |

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

| 3.99 |

| 1.69

| 0004 | 19.95 |

+----------+------+
4 行セット (0.00 秒)

mysql>





ある分野のグループ

という行はタイトルの意味が分かりません。 。 。 。

栗: 各アイテムについて、最も高価なアイテムのディーラーを見つけます。

操作は次のとおりです:

SELECT品目、ディーラー、価格

FROMショップs1

WHERE価格=(SELECT MAX(価格)

FROMショップs2

WHERE s1.article = s2.article);

mysql>記事、ディーラー、価格

-> ショップ s1 から

- -> WHERE 価格 = (SELECT MAX(s2.price)

- -> ショップ s2 から

- -> WHERE s1.article = s2.article) ;
+--- ------+----------+------+
| ディーラー価格 |
+---------- +------ --+-----+
| 0002 | 10.99 | 0004 |

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

4行セット(0.00秒)

理由は本には書かれていないのですが、よくわかりません。もっと詳しく知りたい方はコメント欄●﹏●で解説してください。





ユーザー変数を使用します




栗: 最高価格または最低価格のアイテムを検索します

操作は次のとおりです:

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

SELECT * FROM shop WHERE 価格 = @min_price OR 価格 = @max_price;

mysql> ショップから @min_price:=MIN(価格)、@max_price:=MAX(価格) を選択します;
+--------------------- +-- -----------------------+
| @min_price:=MIN(価格) | @max_price:=MAX(価格) |
+-- --- -------+----------------------+
| 1.25 |
+--------------------------+--------------------- ----- +
セット内の 1 行 (0.13 秒)

mysql> SELECT * FROM shop WHERE 価格=@min_price OR 価格 = @max_price;
+---------+---- ----+ -------+
| ディーラー | 価格 |
+-------+-------+ 0003 | | 1.25 |
| D | 19.95 |
+----------+------+
2 行 (0.09 秒)

mysql>

ユーザー変数については、後で詳しく説明します。興味がある場合は、Baidu を参照してください。

外部キーを使用します

これ以上言う必要はありません。上にポータルがあります。これは非常に優れています。

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 |
ログイン後にコピー
rrreemysql> show create table shirtG

****************************** 1. row **** ***********************
テーブル: Shirt
テーブルの作成: 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 行 (0.01 秒)

mysql> ;

以上がMysqlに関する知識をまとめますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート