mysqlクエリステートメントは複数の使用法を選択します
1.selectを使用してキーワードで並べ替えます
キーワードでソートされた構文形式を選択します
SELECT column1(field 1)、column2、... FROMテーブル名ORDERBY column1、column2、... ASC | DESC;
1)ORDER BYステートメントを組み合わせて
並べ替えを実行します2)並べ替えは1つ以上のフィールドに基づくことができます
3)ASC:昇順、Mysqlのデフォルトの配置方法、配置方法が宣言されていない場合、システムはデフォルトの昇順
4)DESC:降順
操作例:
- システムテーブルのデフォルトの並べ替え方法を表示する
mysql> select * from stu; //查询数据库中stu表中的系统默认按主键升序排列方式
+----+---------+--------+-------+
| id | name | score | hoby | //可以看到这个表由4个字段和六条记录组成
+----+---------+--------+-------+
| 1 | tianxia | 78.00 | 2 |
| 2 | diyi | 89.00 | 1 |
| 3 | wode | 55.00 | 1 |
| 4 | tade | 57.00 | 3 |
| 5 | nida | 66.00 | 1 |
| 6 | liushou | 55.00 | 3 |
+----+---------+-------+------+
6 rows in set (0.00 sec)
- IDに基づいて降順でソートするようにテーブルを変更します
mysql> select * from stu order by id desc;
+----+---------+--------+-------+
| id | name | score | hoby |
+----+---------+--------+-------+
| 6 | liushou | 55.00 | 3 |
| 5 | nida | 66.00 | 1 |
| 4 | tade | 57.00 | 3 |
| 3 | wode | 55.00 | 1 |
| 2 | diyi | 89.00 | 1 |
| 1 | tianxia | 78.00 | 2 |
+----+---------+-------+------+
6 rows in set (0.00 sec)
- 最初にスコアフィールドに基づいて降順で並べ替えるようにテーブルを変更し、ホビーフィールドに基づいて並べ替えます。
mysql> select * from stu order by score desc,hoby desc;
+----+---------+-------+------+
| id | name | score | hoby |
+----+---------+-------+------+
| 2 | diyi | 89.00 | 1 |
| 1 | tianxia | 78.00 | 2 |
| 5 | nida | 66.00 | 1 |
| 4 | tade | 57.00 | 3 |
| 6 | liushou | 55.00 | 3 |
| 3 | wode | 55.00 | 1 |
+----+---------+-------+------+
6 rows in set (0.00 sec)
2つ目は、selectを使用して結果をグループ化する
結果をグループ化するための構文形式を選択します
SELECT列、関数FROMテーブル名WHERE条件GROUPBYフィールド;
1)GROUP BYステートメントを使用してグループ化を実現します
2)関数と組み合わせて使用でき、通常は集計関数カウント(フィールド名)と組み合わせて使用できます
3)1つ以上のフィールドに基づくことができます行のグループ化
操作例
- 統計表の趣味フィールドの各グループの人数
mysql> select count(name),hoby from stu where hoby >= 1 group by hoby;
+-------------+------+
| count(name) | hoby |
+-------------+------+
| 3 | 1 |
| 1 | 2 |
| 2 | 3 |
+-------------+------+
3 rows in set (0.00 sec)
- テーブルのhobyフィールドで各グループの人数をカウントし、カウント(名前)を降順で並べ替えます。
mysql> select count(name),hoby from stu group by hoby order by count(name) desc;
+-------------+------+
| count(name) | hoby |
+-------------+------+
| 3 | 1 |
| 2 | 3 |
| 1 | 2 |
+-------------+------+
3 rows in set (0.00 sec)
3つ目は、選択クエリを使用してアイテムの結果を制限する
選択クエリを使用して、エントリ結果の文法構造を制限します
SELECT column1、column2、... FROMテーブル名LIMIT [offset、] number;
1)[offset、]位置オフセット(0から開始)。文法構造では括弧を省略できます。
2)numberは、レコード行の最大数を返します。
3)オフセット位置の行から始めて、番号の行を下にクエリします。
4)LIMITステートメントは、レコードの読み取りを制限するために使用されます。
操作例
- ルックアップテーブルの最初の3行
mysql> select * from stu limit 0,3;
+----+---------+-------+------+
| id | name | score | hoby |
+----+---------+-------+------+
| 1 | tianxia | 78.00 | 2 |
| 2 | diyi | 89.00 | 1 |
| 3 | wode | 55.00 | 1 |
+----+---------+-------+------+
3 rows in set (0.00 sec)
- ルックアップテーブルの4〜6行
mysql> select * from stu limit 3,3;
+----+---------+-------+------+
| id | name | score | hoby |
+----+---------+-------+------+
| 4 | tade | 57.00 | 3 |
| 5 | nida | 66.00 | 1 |
| 6 | liushou | 55.00 | 3 |
+----+---------+-------+------+
3 rows in set (0.00 sec)
4、selectを使用してエイリアスを設定します
selectを使用して、エイリアスの構文構造を設定します
SELECT列(フィールド名)AS列(フィールド名)FROMテーブル名
- フィールドとテーブルのエイリアスを設定できます
- ASステートメントを使用してエイリアスを設定する場合、キーワードASは省略できます。
- エイリアスを設定するときは、ライブラリ内の他のテーブル名またはフィールド名と競合しないようにしてください。4)エイリアスの設定に加えて、ASを接続ステートメントとして使用することもできます。
操作例
- フィールドのエイリアス統計を設定して、フィールドレコード
の数をカウントしますmysql> select count(name)as a from stu;
±– +
| a |
±– +
| 6 |
±– +
1行セット(0.00秒) - テーブルのエイリアスを設定して、最初の3行のIDを表示します
mysql> select c.id from stu as c limit 3;
±— +
| id |
±— +
| 1 |
| 2 |
| 3 |
±— +
3行セット(0.00秒) - ASを接続ステートメントとして使用するAS接続ステートメントを使用
してstuテーブルのデータを新しいテーブルにインポートします
mysql> create table xuexi as select * from stu where score> = 80;
Query OK、1行が影響を受けます(0.00秒)
レコード: 1重複:0警告:0
mysql> desc stu;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(5) | NO | PRI | NULL | auto_increment |
| name | char(15) | NO | | NULL | |
| score | decimal(5,2) | YES | | NULL | |
| hoby | int(5) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
mysql> desc xuexi;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(4) | YES | | 0 | |
| name | char(15) | NO | | NULL | |
| score | decimal(5,2) | YES | | NULL | |
| hoby | int(5) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
ASは、実際には新しいテーブルと接続テーブルのテーブル構造をまったく同じに定義し、接続テーブルのデータを新しいテーブルにインポートしますが、新しいテーブルの
一部の制約タイプは、接続テーブルと同じ方法で定義されていません(キーなど)。主キー、デフォルトのデフォルト値、追加の拡張属性など。
5つ目は、一般的に使用されるワイルドカードを選択して使用する
一般的に使用されるワイルドカード
SELECT列(フィールド名)FROMテーブル名WHERE列LIKE '_%'
- %はゼロ、1つ以上を意味します
- _単一の文字を示します
1)通常はファジークエリに使用され、詳細は明確ではありません。一般的なものしかわからない場合に使用できます
2)フィールド内の一部の文字を示すために使用されます
3)通常はlikeと組み合わせて使用され、WHEREでクエリを完了します
操作例
- ワイルドカード文字「%」の使用法
stuテーブルの名前フィールドでwで始まるレコードを照会します
mysql> select * from stu where name like 'w%';
+----+------+-------+------+
| id | name | score | hoby |
+----+------+-------+------+
| 3 | wode | 55.00 | 1 |
+----+------+-------+------+
1 row in set (0.00 sec)
- ワイルドカード文字「
_ 」の使用法stuテーブルの名前フィールドで、前に2つの任意の文字があり、deで終わるレコードを照会します。
mysql> select * from stu where name like '__de';
+----+------+-------+------+
| id | name | score | hoby |
+----+------+-------+------+
| 3 | wode | 55.00 | 1 |
| 4 | tade | 57.00 | 3 |
+----+------+-------+------+
2 rows in set (0.00 sec)
stuテーブルの名前フィールドでワイルドカード文字「_%」を組み合わせて使用すると、中央にi文字があり、deで終わるレコードが検索されます。
mysql> select * from stu where name like '_i%';
+----+---------+-------+------+
| id | name | score | hoby |
+----+---------+-------+------+
| 1 | tianxia | 78.00 | 2 |
| 2 | diyi | 89.00 | 1 |
| 5 | nida | 66.00 | 1 |
| 6 | liushou | 55.00 | 3 |
+----+---------+-------+------+
4 rows in set (0.00 sec)
6、selectサブクエリを使用します
selectサブクエリの一般的な構文構造を使用する
SELECT列FROMテーブル名WHERE列IN(SELECT列FROMテーブル名WHERE列IN(…));
1)サブクエリは内部クエリまたはネストされたクエリとも呼ばれます
2)メインクエリの前に実行され、結果は次のようになります。外側のメインクエリの条件として
3)サブクエリの追加、削除、変更、検索が可能です
。4)マルチレベルのネストがサポートされています
。5)読み取り方法は内側の層から外側の層への読み取りです
。6)INステートメントは特定の判断に使用されます。値が指定された結果セットにあるかどうか
7)サブクエリのフィールドタイプはメインクエリのフィールドタイプと同じである必要があります
8)結果セットをサブクエリのテーブルとして使用する場合、直接使用することはできず、結果セットのエイリアスを作成する必要があります
操作例
- テーブルサブクエリに基づく
クエリzhitable
mysql> select * fromzhi;
±----- +
| id |
±----- +
| 1 |
| 3 |
| 4 |
| 5 |
±----- +
セット内の4行(0.01秒)
クエリ学習テーブル
mysql> select * from stu;
+----+---------+-------+------+
| id | name | score | hoby |
+----+---------+-------+------+
| 1 | tianxia | 78.00 | 2 |
| 2 | diyi | 89.00 | 1 |
| 3 | wode | 55.00 | 1 |
| 4 | tade | 57.00 | 3 |
| 5 | nida | 66.00 | 1 |
| 6 | liushou | 55.00 | 3 |
+----+---------+-------+------+
6 rows in set (0.01 sec)
データベースレコードをクエリするためのstuテーブルのidクエリ条件としてzhiテーブルのid値を使用します
mysql> select * from stu where id in (select id from zhi);
+----+---------+-------+------+
| id | name | score | hoby |
+----+---------+-------+------+
| 1 | tianxia | 78.00 | 2 |
| 3 | wode | 55.00 | 1 |
| 4 | tade | 57.00 | 3 |
| 5 | nida | 66.00 | 1 |
+----+---------+-------+------+
4 rows in set (0.00 sec)
- 結果セットのサブクエリに基づいて、
stuテーブルの2つのフィールドのレコードをクエリします
。mysql> select id、score from stu;
±—±------ +
| id |スコア|
±—±------ +
| 1 | 78.00 |
| 2 | 89.00 |
| 3 | 55.00 |
| 4 | 57.00 |
| 5 | 66.00 |
| 6 | 55.00 |
±—±------ +
6行セット(0.00秒)で
検索の結果セットをサブクエリステートメントとして使用する場合は、エイリアスを設定する必要があります
mysql> select a.id from(select id、name from stu)a;
±— +
| id |
±— +
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
±— +
6行セット(0.00秒)
7つ目は、selectでサポートされている正規式クエリを使用する
selectでサポートされている正規式クエリの文法構造を使用する
SELECT列…FROMテーブル名WHERE列REGEXP '正規式'
1)指定されたマッチングモードに従って、レコードの要件を満たす特殊文字を照合します
2)REGEXPキーワードを使用してマッチングモードを指定します
操作例
- 名前フィールドがwで始まるクエリレコード
mysql> select * from stu where name regexp '^w';
+----+------+-------+------+
| id | name | score | hoby |
+----+------+-------+------+
| 3 | wode | 55.00 | 1 |
+----+------+-------+------+
1 row in set (0.00 sec)
- 名前フィールドがdeで終わるレコードを照会します
mysql> select * from stu where name regexp 'de$';
+----+------+-------+------+
| id | name | score | hoby |
+----+------+-------+------+
| 3 | wode | 55.00 | 1 |
| 4 | tade | 57.00 | 3 |
+----+------+-------+------+
2 rows in set (0.00 sec)
- hobyフィールドが1のレコードを照会します
mysql> select * from stu where hoby regexp '1';
+----+------+-------+------+
| id | name | score | hoby |
+----+------+-------+------+
| 2 | diyi | 89.00 | 1 |
| 3 | wode | 55.00 | 1 |
| 5 | nida | 66.00 | 1 |
+----+------+-------+------+
3 rows in set (0.00 sec)
8、selectを使用してNULLの値を決定します
NUllは紹介する価値があります
1)間違いなく欠落している値
2)空のオブジェクトがスペースを占有していることを意味します
3)数値0または空白(スペース)とは異なります
4)
ISNULLまたはISNOT NULLを使用して判断します5)NUll値とnull値の違い
- null値の長さは0であり、スペースを占有しません。NULL値の長さはNULLであり、スペースを占有します。
- ISNULLはnull値を判別できません
- null値を処理するには、「=」または「<>(等しくない)」を使用します
- COUNT()計算時に、NULLは無視されて統計に追加されず、空の値が計算に追加されます
操作例
mysql> select * from stu;
+----+---------+-------+------+------+
| id | name | score | hoby | dizi |
+----+---------+-------+------+------+
| 1 | tianxia | 78.00 | 2 | nj |
| 2 | diyi | 89.00 | 1 | nj |
| 3 | wode | 55.00 | 1 | NULL |
| 4 | tade | 57.00 | 3 | NULL |
| 5 | nida | 66.00 | 1 | nj |
| 6 | liushou | 55.00 | 3 | |
+----+---------+-------+------+------+
6 rows in set (0.00 sec)
- クエリは記録する価値のあるNULLです
mysql> select * from stu where dizi is null;
+----+------+-------+------+------+
| id | name | score | hoby | dizi |
+----+------+-------+------+------+
| 3 | wode | 55.00 | 1 | NULL |
| 4 | tade | 57.00 | 3 | NULL |
+----+------+-------+------+------+
2 rows in set (0.00 sec)
- クエリは記録する価値のあるNULLではありません
mysql> select * from stu where dizi is not null;
+----+---------+-------+------+------+
| id | name | score | hoby | dizi |
+----+---------+-------+------+------+
| 1 | tianxia | 78.00 | 2 | nj |
| 2 | diyi | 89.00 | 1 | nj |
| 5 | nida | 66.00 | 1 | nj |
| 6 | liushou | 55.00 | 3 | |
+----+---------+-------+------+------+
4 rows in set (0.00 sec)
- NULLは統計に追加されません
mysql> stuからcount(dizi)を選択します;
±------------ +
| count(dizi)|
±------------ +
| 4 |
±------------ +
1行セット(0.00秒)
元々6つのレコードがありましたが、COUNT()の計算時にNULLが無視され、追加されないため、4つしかカウントされませんでした。統計、null値が計算に追加されます