目次
5. 複数の優先順位でソート可能 ソート優先順位は書き込み順に従います。
-- 曹孟徳の数学のスコアを 60 点に、中国語のスコアを 70 点に変更します。
-- 合計スコアが最も低い 3 人の生徒の数学スコアに 30 ポイントを追加します。
皆さんもこれを見たことがあるでしょう、親指を立てて立ち去ってください、ありがとう、ありがとう! ! !
1.クラッド
注: SQL では「--space + description」を使用して、コメント
CRUD、つまり追加 (作成)、クエリ (取得)、更新 (更新) を示すことができます。 、および削除 (削除)4 単語頭字語
2.追加(作成)
既存のテーブル構造とテーブルデータ:
(1) 文法
INSERT [INTO] table_name
[(column [, column] ...)]
VALUES (value_list) [, (値リスト)] ...
値リスト: 値, [, 値] ...
(2) 単一行のデータ + 全列挿入
構文:テーブル名の値に挿入(挿入するデータ, ...)
注: 挿入されるデータの順序はテーブル構造と同じである必要があります。そうでない場合、挿入は失敗します。
コード表示:
insert into books values('数学', '张三', 6.66, '数学类'); insert into books values('英语', '李四', 8.88, NULL);
結果は次のとおりです。
(3) 複数行データ+指定列挿入
構文:テーブル名 (指定された列名、...) に挿入 値 (指定された列名のデータ)
コード表示
insert into books (name, price, sort) values('语文', 5.55, '语文类'), ('物理', 7.77, '物理类');
結果は次のとおりです。
3. 取得
(1) 文法
SELECT
[DISTINCT] {* | {column [, columns] ...}
[FROM table_name]
[WHERE ...]
[ORDER BY]列 [ASC | DESC]、...]
LIMIT ...
(2) フルカラムクエリ
注:選択クエリ操作はすべて一時テーブルであり、元のデータは変更されません
構文:テーブル名から * を選択
コード表示:
select * from books;
結果は次のとおりです。
注: 通常の状況では列全体のクエリに * を使用することはお勧めできません
-- 1. クエリ カラム数が多いほど、送信する必要のあるデータ量が増加します (処理する必要がある情報が多すぎるため、サーバーが詰まる可能性があります。大量のハードディスク IO とネットワーク IO がいっぱいになる可能性があります)ハードディスクまたはネットワーク カードの帯域幅です。帯域幅がいっぱいになると、サーバーは他のクライアントのリクエストに正常に応答できなくなります。他のクライアントから見ると、サーバーはその帯域幅を超えていると見なされます。ダウンしています)
-- 2. < a i=5>インデックスの使用に影響する可能性があります
(3) カラムクエリの指定
構文:テーブル名から指定された列名を選択します
コード表示:
select name, author, price from books;
結果は次のとおりです。
注: 図に示すように、指定された列クエリは、このテーブルの列順序に従ってクエリすることはできません。
(4) クエリフィールドは式です
1. 式にはフィールドが含まれません。
構文:書籍から式を選択
コードデモ:
select name, price, 10 from books;
結果は次のとおりです
10 がないため、フィールド 10 が作成され、その下に 10 が配置されます。
2. 式にはフィールドが含まれています
構文:テーブル名から 1 つのフィールドを含む式を選択します。
コードデモ:
select name, author, price + 10 from books;
結果は次のとおりです。
テーブル構造は次のとおりです。
3. 式には複数のフィールドが含まれています
構文:テーブル名から複数のフィールドを含む式を選択します...
整数データ コードのデモ:
select name, chinese + math + english from report;
結果は次のとおりです。
整数データ コードのデモではありません。
select price, name + author + sort from books;
結果は次のとおりです。
ご覧のとおり、式には複数行のフィールドが含まれており、NULL がある限り NULL となり、文字列の合計は 0 になります。
(5) 別名
構文:レポートのエイリアスとして列名を選択
注(省略可能ですが、追加した方が区別しやすくなります)
コードデモ:
select id, chinese + math + english as 总分 from report;
結果は次のとおりです。
(6) 重複排除: DISTINCT
既存のテーブル:
構文:テーブル名から個別の列名を選択します
コード表示:
select distinct math from exam_result;
結果は次のとおりです。
(7) 並べ替え:ORDER BY
1. 文法:
--ASC は昇順 (小さいものから大きいものへ)
--DESC は降順 (大きいものから小さいものへ)
--デフォルトは ASC
SELECT ... FROM table_name [WHERE ...]
ORDER BY カラム [ASC|DESC], [...];
2. 昇順
構文:select * ( または他の列名も使用できます) テーブル名から列名順
コード表示:
select * from exam_result order by math;
結果は次のとおりです。
3. 降順
構文:select * ( または他の列名も使用できます) 列名によるテーブル名の順序から desc
コード表示:
select * from exam_result order by math desc;
結果は次のとおりです。
4. 式とエイリアスを使用して並べ替える
構文:テーブル名から列名、式を式順に選択します。
コード表示:
select name, math + chinese + english as total from exam_result order by math + chinese + english;
結果は次のとおりです。
知らせ:
ここでは、注文後にエイリアスを使用できます
5. 複数の優先順位でソート可能 ソート優先順位は書き込み順に従います。
構文:クエリする列を選択します。exam_result 列名順、列名...;
コードデモ:
select * from exam_result order by math, english;
結果は次のとおりです。
(8) 条件付きクエリ: WHERE
注:条件では式を使用できますが、エイリアスは使用できません
1. 比較演算子
2. 論理演算子
注: 1。AND は OR よりも優先されます。同時に使用する場合は、最初に実行される部分を括弧 () で囲む必要があります。あ>
2.WHERE 条件では式 () を使用できますが、エイリアスは使用できません< a i= 4>。
図に示すように:
SQL ステートメントの実行順序:
ステップ 1: レコードを取り出す (テーブルを横断する)
ステップ 2: レコードを条件に組み込み、条件が満たされているかどうかを判断する
ステップ 3: 条件が満たされた場合、select で指定された列を取り出し、いくつかの式操作を実行します
したがって、条件付きクエリの where の後にエイリアスを使用することはできません。
3. 基本的なクエリ:
英語のスコアが 70 点を超える生徒にクエリを実行します。
コードは以下のように表示されます:
select name, english from exam_result where english > 70;
結果は次のとおりです。
英語のスコアが中国語のスコアより高い学生をチェックします。
コードは以下のように表示されます:
select name, english, chinese from exam_result where english > chinese;
結果は次のとおりです。
合計スコアが 200 未満の生徒にクエリを実行します。
コードは以下のように表示されます:
select name, chinese + math + english from exam_result where (chinese + math + english) < 200;
結果は次のとおりです。
4、および和OR:
中国語のスコアが 80 点を超え、英語のスコアが 80 点を超える学生に質問します。
コードは以下のように表示されます:
select name, chinese, english from exam_result where (chinese > 80) and (english > 80);
結果は次のとおりです。
中国語のスコアが 80 点を超える、または英語のスコアが 80 点を超える学生を検索します
コードは以下のように表示されます:
select name, chinese, english from exam_result where (chinese > 80) or (english > 80);
結果は次のとおりです。
注:and は or よりも優先されます。使用する場合は、必要に応じて括弧を使用できます。
5. 範囲クエリ
(1) ...との間
コード表示:
select * from exam_result where chinese between 80 and 90;
結果の表示:
これは、 と を使用して実現することもできます。コード:
select * from exam_result where chinese >= 80 and chinese <= 90;
(2)IN
コードは以下のように表示されます:
select name, math from exam_result where math in(58, 59, 98, 99);
結果の表示:
ここで または を使用することもできます
コード:
select name, math from exam_result where math = 58 or math = 59 or math = 98 or math = 99;
6. ファジークエリ: LIKE
アウトアウトアウトどれからも
コード表示:select name from exam_result where name like '孙%';
結果は次のとおりです。
コード表示:
select name from exam_result where name like '孙_';
結果は次のとおりです。
注:% は次のように使用することもできます: %Sun (「Sun」で終わるフィールド)、%Sun% (フィールドに「Sun」が含まれている場合)
_次のようにも使用できます: _Sun、先頭に 1 文字だけ、最後に「Sun」があるフィールドですが、複数のアンダースコア _ も使用できます。
7. NULL クエリ: IS [NOT] NULL
テーブル内の列が NULL かどうかを判断します。
コードは以下のように表示されます:
select name from exam_result where name is not null;
結果は次のとおりです。
コードは以下のように表示されます:
select name from exam_result where name is NULL;
結果は次のとおりです。
8. ページングクエリ: LIMIT
構文:
-- 開始インデックスは 0 です
-- 0 から開始して、n 個の結果をフィルタリングします
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
-- s から開始して、n 個の結果をフィルタリングします
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;
-- s から開始して、n 個の結果をフィルタリングします。2 番目の使用法よりも明確な、
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;
0 から開始して 3 つの結果をフィルタリングします
コード表示:
select * from exam_result limit 3;
結果は次のとおりです。
0 から開始して、3 つのレコードをフィルターし、ID で順番にページ分割します。
コード表示:
select * from exam_result limit 3;
結果は次のとおりです。
3 から開始して、3 つのレコードをフィルターし、ID で順番にページ分割します。
コード表示:
select * from exam_result order by id limit 3 offset 3;
結果は次のとおりです。
4. 修正(アップデート)
文法:
UPDATE table_name SET 列 = expr [, 列 = expr ...]
[WHERE ...] [ORDER BY ...] [LIMIT ...]
場合:
-- 孫悟空の数学の点数を 80 点に変更します。
文法:
update table name set 変更する列名 = 変更する値 ここで、列名 = 変更するように指定する列の値
コードは以下のように表示されます:
mysql> update exam_result set math = 80 where name = '孙悟空';
結果は次のとおりです。
-- 曹孟徳の数学のスコアを 60 点に、中国語のスコアを 70 点に変更します。
コードは以下のように表示されます:
update exam_result set math = 60, chinese = 70 where name = '曹孟德';
結果は次のとおりです。
-- 合計スコアが最も低い 3 人の生徒の数学スコアに 30 ポイントを追加します。
コードは以下のように表示されます:
結果は次のとおりです。
-- 全生徒の中国語スコアを元の値の 2 倍に更新します
コードは以下のように表示されます:
update exam_result set chinese = chinese * 2;
結果は次のとおりです。
5. 削除
文法:
DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]
場合:
--孫悟空のテストスコアを削除
コードは以下のように表示されます:
delete from exam_result where name = '孙悟空';
結果は次のとおりです。
-- テーブルデータ全体を削除します
次のようにテーブルを準備します。
コードは以下のように表示されます:
delete from for_delete;
結果は次のとおりです。