MySQLシングルテーブルクエリ
5399 ワード
データベースの作成とデータの挿入
単一テーブルクエリ
すべてのフィールドを問合せ
クエリー指定フィールド
クエリー指定条件のフィールド
INキー付きクエリー
INキーワード:IN(xx,yy,...)条件を満たす範囲内の値が一致するもの、カッコ内の値、または関係
BETWEEN AND付き範囲クエリー
BETWEEN...AND...:範囲内の値が一致します.
LIKE付き文字照合クエリー
LIKE:ファジイクエリ、LIKEと一緒に使うワイルドカードは「%」、「」
ワイルドカード
機能
“%”
任意の長さに一致する文字を使用します.
“_”
1文字のみ一致
ロジックとAND付きマルチ条件クエリー
and:同時に条件を満たす
論理ORの多条件クエリ
OR:一つ満足すればいい、inに似ている
キーワードDISTINCT検索重複しないデータ
ORDER BYクエリーの結果のソート
ORDER BYフィールドDESC逆順配列
ORDER BYフィールドASCは正の順序で並べられ、デフォルトでは正
GROUP BYクエリー結果のグループ化
グループ化しない
同じ内容を同じグループに分ける
グループ化後、繰り返しはグループ化されます
GROUP_CONCATはグループ化された数と内容を表示します
グループ内の各フィールドの内容を表示するGROUP_CONCAT( )
HAVING条件フィルタリングは、WHEREに相当し、グループ化のみ可能
LIMITはクエリ結果の数を制限する
LIMIT位置ずれ量、行数デフォルト位置ずれ量0、すなわち1行目
LIMITでは、データベーステーブルの任意の行数を選択できます.つまり、1番目のレコードから遍歴することなく、5番目から10番目のレコードを直接取得したり、12番目から15番目のレコードを直接取得したりすることができます.
# ,
CREATE TABLE fruits (
id INT NOT NULL,
sid INT NOT NULL,
NAME CHAR(255) NOT NULL,
price DECIMAL (8, 2) NOT NULL,
PRIMARY KEY (id)
);
#
INSERT INTO fruits
VALUES
('1', 101, 'apple', 5.2),
('2', 101, 'blackberry', 10.2),
('3', 102, 'orange', 11.2),
('4', 105, 'melon', 8.2),
('5', 102, 'banana', 10.3),
('6', 102, 'grape', 5.3),
('7', 103, 'coconut', 9.2),
('8', 101, 'cherry', 3.2),
('9', 103, 'apricot', 2.2),
('10', 104, 'lemon', 6.4),
('11', 104, 'berry', 7.6),
('12', 106, 'mango', 15.6);
単一テーブルクエリ
すべてのフィールドを問合せ
SELECT * FROM fruits;
id sid name price
1 101 apple 5.20
2 101 blackberry 10.20
3 102 orange 11.20
4 105 melon 8.20
5 102 banana 10.30
6 102 grape 5.30
7 103 coconut 9.20
8 101 cherry 3.20
9 103 apricot 2.20
10 104 lemon 6.40
11 104 berry 7.60
12 106 mango 15.60
クエリー指定フィールド
SELECT ID,NAME FROM fruits;
ID NAME
1 apple
2 blackberry
3 orange
4 melon
5 banana
6 grape
7 coconut
8 cherry
9 apricot
10 lemon
11 berry
12 mango
クエリー指定条件のフィールド
SELECT * FROM fruits WHERE NAME = 'BANANA';
id sid name price
5 102 banana 10.30
INキー付きクエリー
INキーワード:IN(xx,yy,...)条件を満たす範囲内の値が一致するもの、カッコ内の値、または関係
SELECT * FROM fruits WHERE NAME IN ('BANANA','ORANGE');
id sid name price
3 102 orange 11.20
5 102 banana 10.30
SELECT * FROM fruits WHERE ID NOT IN (3,8);
id sid name price
1 101 apple 5.20
2 101 blackberry 10.20
4 105 melon 8.20
5 102 banana 10.30
6 102 grape 5.30
7 103 coconut 9.20
9 103 apricot 2.20
10 104 lemon 6.40
11 104 berry 7.60
12 106 mango 15.60
BETWEEN AND付き範囲クエリー
BETWEEN...AND...:範囲内の値が一致します.
SELECT * FROM fruits WHERE ID BETWEEN 3 AND 9;
id sid name price
3 102 orange 11.20
4 105 melon 8.20
5 102 banana 10.30
6 102 grape 5.30
7 103 coconut 9.20
8 101 cherry 3.20
9 103 apricot 2.20
SELECT * FROM fruits WHERE ID NOT BETWEEN 5 AND 11;
id sid name price
1 101 apple 5.20
2 101 blackberry 10.20
3 102 orange 11.20
4 105 melon 8.20
12 106 mango 15.60
LIKE付き文字照合クエリー
LIKE:ファジイクエリ、LIKEと一緒に使うワイルドカードは「%」、「」
ワイルドカード
機能
“%”
任意の長さに一致する文字を使用します.
“_”
1文字のみ一致
SELECT * FROM fruits WHERE NAME LIKE 'black%';
id sid name price
2 101 blackberry 10.20
SELECT * FROM fruits WHERE NAME LIKE 'b%y';
id sid name price
2 101 blackberry 10.20
11 104 berry 7.60
SELECT * FROM fruits WHERE NAME LIKE '_ER_Y';
id sid name price
11 104 berry 7.60
ロジックとAND付きマルチ条件クエリー
and:同時に条件を満たす
SELECT
*
FROM
fruits
WHERE id IN (2, 4, 6, 8, 10)
AND sid > 102;
id sid name price
4 105 melon 8.20
10 104 lemon 6.40
論理ORの多条件クエリ
OR:一つ満足すればいい、inに似ている
SELECT
*
FROM
fruits
WHERE id IN (2, 4, 6, 8, 10)
OR sid > 102;
id sid name price
2 101 blackberry 10.20
4 105 melon 8.20
6 102 grape 5.30
7 103 coconut 9.20
8 101 cherry 3.20
9 103 apricot 2.20
10 104 lemon 6.40
11 104 berry 7.60
12 106 mango 15.60
キーワードDISTINCT検索重複しないデータ
SELECT
DISTINCT SID
FROM
fruits
WHERE id IN (2, 4, 6, 8, 10)
OR sid > 102;
SID
101
105
102
103
104
106
ORDER BYクエリーの結果のソート
ORDER BYフィールドDESC逆順配列
SELECT DISTINCT
SID
FROM
fruits
WHERE id IN (2, 4, 6, 8, 10)
OR sid > 102
ORDER BY sid DESC;
SID
106
105
104
103
102
101
ORDER BYフィールドASCは正の順序で並べられ、デフォルトでは正
SELECT DISTINCT
SID
FROM
fruits
WHERE id IN (2, 4, 6, 8, 10)
OR sid > 102
ORDER BY sid ASC;
SID
101
102
103
104
105
106
GROUP BYクエリー結果のグループ化
グループ化しない
SELECT SID FROM fruits;
SID
101
101
102
105
102
102
103
101
103
104
104
106
同じ内容を同じグループに分ける
グループ化後、繰り返しはグループ化されます
SELECT SID FROM fruits GROUP BY SID ;
SID
101
102
105
103
104
106
GROUP_CONCATはグループ化された数と内容を表示します
グループ内の各フィールドの内容を表示するGROUP_CONCAT( )
SELECT SID,COUNT(NAME),GROUP_CONCAT(NAME) FROM fruits GROUP BY sid;
SID count(name) group_concat(name)
101 3 apple,blackberry,cherry
102 3 orange,banana,grape
103 2 coconut,apricot
104 2 lemon,berry
105 1 melon
106 1 mango
HAVING条件フィルタリングは、WHEREに相当し、グループ化のみ可能
SELECT SID,COUNT(NAME),GROUP_CONCAT(NAME) FROM fruits GROUP BY sid HAVING SID > 103;
SID count(name) group_concat(name)
104 2 lemon,berry
105 1 melon
106 1 mango
LIMITはクエリ結果の数を制限する
LIMIT位置ずれ量、行数デフォルト位置ずれ量0、すなわち1行目
LIMITでは、データベーステーブルの任意の行数を選択できます.つまり、1番目のレコードから遍歴することなく、5番目から10番目のレコードを直接取得したり、12番目から15番目のレコードを直接取得したりすることができます.
SELECT * FROM fruits WHERE ID LIMIT 0,5;
id sid name price
1 101 apple 5.20
2 101 blackberry 10.20
3 102 orange 11.20
4 105 melon 8.20
5 102 banana 10.30
SELECT * FROM fruits WHERE ID LIMIT 5,9;
id sid name price
6 102 grape 5.30
7 103 coconut 9.20
8 101 cherry 3.20
9 103 apricot 2.20
10 104 lemon 6.40
11 104 berry 7.60
12 106 mango 15.60