一般に普通のプログラマーや 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>
そして、テーブルの構造を知りたいのです。どうすればいいですか?
+----------+-------------+------+ --+-------+-------+
| フィールド タイプ | デフォルト | -------------+------+-----+----------+------+| (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> 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ショップs1WHERE価格=(SELECT MAX(価格)
FROMショップs2WHERE s1.article = s2.article);
mysql>記事、ディーラー、価格
-> ショップ s1 から- -> WHERE 価格 = (SELECT MAX(s2.price)
- -> ショップ s2 から - -> WHERE s1.article = s2.article) ;
+--- ------+----------+------+
| ディーラー価格 |
+---------- +------ --+-----+
| 0002 | 10.99 | 0004 |
4行セット(0.00秒)
理由は本には書かれていないのですが、よくわかりません。もっと詳しく知りたい方はコメント欄●﹏●で解説してください。
ユーザー変数を使用します
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 秒)
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 |
****************************** 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に関する知識をまとめますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。