MySQL でいくつかの実用的な SQL ステートメントを共有する
SQL を記述するときは、プログラム ロジックを大幅に簡素化するために SQL ステートメントの記述スキルを使用することがよくあります。プログラムとデータベース間のやり取りの数を減らすことは、データベースの高可用性にとって有益であり、また、あなたの SQL スキルが同僚に目立つようになります。
#実践 SQL
1. 挿入または置換
新しいものを挿入する場合は、レコード (INSERT) ですが、レコードがすでに存在する場合は、最初に元のレコードを削除してから、新しいレコードを挿入します。 シナリオ例: このテーブルには、各顧客の最新のトランザクション注文情報が保存されます。単一のユーザー データが繰り返し入力されないようにする必要があり、データベースとの対話を最小限に抑えて実行効率が最も高くなります。 、データベースの高可用性をサポートします。 現時点では、「REPLACE INTO」ステートメントを使用できるため、最初にクエリを実行してから、削除してから挿入するかどうかを決定する必要がありません。- 「REPLACE INTO」ステートメントは、一意のインデックスまたは主キーに基づいて一意性 (存在するかどうか) を判断します。
- 「REPLACE INTO」ステートメントは、一意のインデックスまたは主キーに基づいて一意性 (存在するかどうか) を判断します。
- 「REPLACE INTO」ステートメントは、一意のインデックスまたは主キーに基づいて一意性 (存在するかどうか) を判断します。
-- 20点充值 REPLACE INTO last_transaction (transId,username,amount,trans_time,remark) VALUES (null, 'chenhaha', 30, '2020-06-11 20:00:20', '会员充值'); -- 21点买皮肤 REPLACE INTO last_transaction (transId,username,amount,trans_time,remark) VALUES (null, 'chenhaha', 100, '2020-06-11 21:00:00', '购买盲僧至高之拳皮肤');
2. 挿入または更新
新しいレコードを挿入する (INSERT) 場合、レコードがすでに存在する場合は、この時点でレコードを更新します。 「INSERT INTO ... ON DUPLICATE KEY UPDATE ...」ステートメントを使用できます: シナリオ例: このテーブルには、ユーザーの過去のリチャージ金額が保存されます。ユーザーが初めてリチャージする場合、新しいユーザーがリチャージする場合 過去のリチャージ金額が蓄積される場合、単一ユーザーのデータが繰り返し入力されないようにする必要があります。 現時点では、「INSERT INTO ... ON DUPLICATE KEY UPDATE ...」ステートメントを使用できます。注: 上記と同様、「INSERT INTO ... ON DUPLICATE KEY UPDATE ...」ステートメントは、一意のインデックスまたは主キーに基づいて一意性 (存在するかどうか) を判断します。次の SQL に示すように、ユーザー名フィールドに一意のインデックス (Unique) を確立する必要があり、transId 設定を増やすことができます。username='chenhaha' のレコードが存在しない場合、INSERT ステートメントは新しいレコードを挿入します。それ以外の場合は、username='chenhaha' の現在のレコードが更新され、更新されたフィールドは UPDATE で指定されます。-- 用户陈哈哈充值了30元买会员 INSERT INTO total_transaction (t_transId,username,total_amount,last_transTime,last_remark) VALUES (null, 'chenhaha', 30, '2020-06-11 20:00:20', '充会员') ON DUPLICATE KEY UPDATE total_amount=total_amount + 30, last_transTime='2020-06-11 20:00:20', last_remark ='充会员'; -- 用户陈哈哈充值了100元买瞎子至高之拳皮肤 INSERT INTO total_transaction (t_transId,username,total_amount,last_transTime,last_remark) VALUES (null, 'chenhaha', 100, '2020-06-11 20:00:20', '购买盲僧至高之拳皮肤') ON DUPLICATE KEY UPDATE total_amount=total_amount + 100, last_transTime='2020-06-11 21:00:00', last_remark ='购买盲僧至高之拳皮肤';ログイン後にコピー
3. 挿入または無視
新しいレコードを挿入 (INSERT) する場合、レコードがすでに存在する場合は、それを無視して何もしません。 、 INSERT IGNORE INTO... ステートメントを使用できます。 多くのシナリオがあるため、例は示しません。注: 上記と同様、「INSERT IGNORE INTO...」ステートメントは、一意性 (存在するかどうか) を決定する一意のインデックスまたは主キー、および一意のインデックス (Unique) に基づいています。ユーザー名フィールドで確立する必要があります。transId 設定は単独で増加できます。username='chenhaha' のレコードが存在しない場合、INSERT ステートメントは新しいレコードを挿入します。存在しない場合、操作は実行されません。-- 用户首次添加 INSERT IGNORE INTO users_info (id, username, sex, age ,balance, create_time) VALUES (null, 'chenhaha', '男', 12, 0, '2020-06-11 20:00:20'); -- 二次添加,直接忽略 INSERT IGNORE INTO users_info (id, username, sex, age ,balance, create_time) VALUES (null, 'chenhaha', '男', 12, 0, '2020-06-11 21:00:20');ログイン後にコピー
4. SQL における if-else 判定ステートメント
ご存知のとおり、if-else 判定は SQL ステートメントのどこでも役に立ちます。 THEN ... ELSE ... END" ステートメントは、さまざまなタイプの追加、削除、変更、クエリ ステートメントで使用できます。 シナリオを教えてください: 女性の日の大きな特典、2020 年に登録された新規ユーザー、すべての成人女性アカウントには 10 元の赤い封筒が与えられ、その他のユーザーには 5 元の赤い封筒が与えられます。自動的に充電されます。 例は次のとおりです:-- 送红包语句 UPDATE users_info u SET u.balance = CASE WHEN u.sex ='女' and u.age > 18 THEN u.balance + 10 ELSE u.balance + 5 end WHERE u.create_time >= '2020-01-01'
##クエリ ステートメント:
SELECT *,case when total_score >= 650 THEN '重点大学' when total_score >= 600 and total_score <650 THEN '一本' when total_score >= 500 and total_score <600 THEN '二本' when total_score >= 400 and total_score <500 THEN '三本' else '大专' end as status_student from student_score;
テーブルのスナップショットを取得したい場合は、コピーを作成します。現在のテーブルから新しいテーブルにデータを転送するには、CREATE TABLE と SELECT を組み合わせることができます。新しく作成されたテーブル構造は、SELECT で使用されるテーブル構造とまったく同じです。
6. クエリ結果セットを書き込むクエリ結果セットをテーブルに書き込む必要がある場合は、INSERT と SELECT を組み合わせて結果セットを直接挿入できます。指定されたテーブルに対する SELECT ステートメントの。 たとえば、統計テーブルを作成して各クラスの平均スコアを記録します:
-- 对class_id=1(一班)的记录进行快照,并存储为新表students_of_class1: CREATE TABLE students_of_class1 SELECT * FROM student WHERE class_id=1;
次に、1 つのステートメントを使用して各クラスの平均スコアを書き込むことができます:
INSERT INTO statistics (class_id, average) SELECT class_id, AVG(score) FROM students GROUP BY class_id;
确保INSERT语句的列和SELECT语句的列能一一对应,就可以在statistics表中直接保存查询的结果:
SELECT * FROM statistics;
+----+----------+--------------+ | id | class_id | average | +----+----------+--------------+ | 1 | 1 | 475.5 | | 2 | 2 | 473.33333333 | | 3 | 3 | 488.66666666 | +----+----------+--------------+ 3 rows in set (0.00 sec)
7.强制使用指定索引
在查询的时候,数据库系统会自动分析查询语句,并选择一个最合适的索引。但是很多时候,数据库系统的查询优化器并不一定总是能使用最优索引。如果我们知道如何选择索引,可以使用FORCE INDEX强制查询使用指定的索引。例如:
SELECT * FROM students FORCE INDEX (idx_class_id) WHERE class_id = 1 ORDER BY id DESC;
指定索引的前提是索引idx_class_id必须存在。
心得体会:
MySQL路漫漫,其修远兮。永远不要眼高手低,一起加油,希望本文能对你有所帮助。
推荐教程: 《mysql教程》
以上がMySQL でいくつかの実用的な SQL ステートメントを共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

NAVICATプレミアムを使用してデータベースを作成します。データベースサーバーに接続し、接続パラメーターを入力します。サーバーを右クリックして、[データベースの作成]を選択します。新しいデータベースの名前と指定された文字セットと照合を入力します。新しいデータベースに接続し、オブジェクトブラウザにテーブルを作成します。テーブルを右クリックして、データを挿入してデータを挿入します。

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

手順に従って、NAVICATで新しいMySQL接続を作成できます。アプリケーションを開き、新しい接続(CTRL N)を選択します。接続タイプとして「mysql」を選択します。ホスト名/IPアドレス、ポート、ユーザー名、およびパスワードを入力します。 (オプション)Advanced Optionsを構成します。接続を保存して、接続名を入力します。

データベースから直接削除された行を直接回復することは、バックアップまたはトランザクションロールバックメカニズムがない限り、通常不可能です。キーポイント:トランザクションロールバック:トランザクションがデータの回復にコミットする前にロールバックを実行します。バックアップ:データベースの定期的なバックアップを使用して、データをすばやく復元できます。データベーススナップショット:データベースの読み取り専用コピーを作成し、データが誤って削除された後にデータを復元できます。削除ステートメントを使用して注意してください:誤って削除されないように条件を慎重に確認してください。 WHERE句を使用します:削除するデータを明示的に指定します。テスト環境を使用:削除操作を実行する前にテストします。

Redisは、単一のスレッドアーキテクチャを使用して、高性能、シンプルさ、一貫性を提供します。 I/Oマルチプレックス、イベントループ、ノンブロッキングI/O、共有メモリを使用して同時性を向上させますが、並行性の制限、単一の障害、および書き込み集約型のワークロードには適していません。

phpmyadminを使用してmysqlに接続する方法は? phpmyadminにアクセスするためのURLは、通常、http:// localhost/phpmyadminまたはhttp:// [サーバーIPアドレス]/phpMyAdminです。 MySQLユーザー名とパスワードを入力します。接続するデータベースを選択します。 [接続]ボタンをクリックして、接続を確立します。
