MySQL でよく使われる連結文のまとめ

MySQL でよく使われる連結文のまとめ

はじめに: MySQL では、CONCAT() 関数を使用して複数の文字列を 1 つの文字列に連結します。この関数を使用すると、1 つのステップで取得できなかった SQL を切り出すことができます。作業では非常に便利になる場合があります。以下では、主によく使用されるシナリオをいくつか紹介します。

注: バージョン 5.7 以前のバージョンに適用される場合、若干異なる場合があります。

1. すべてのユーザーに参加してクエリを実行する

選択する
  連結(
    'ユーザー: \'',
    ユーザー、
    '\'@\''、
    ホスト、
    '\';'
  ) クエリとして
から
  mysql.USER;
# 連結文字列に ' が出現する場合は、\ エスケープ文字を使用する必要があります

2. DROPテーブルを結合する

選択
  連結(
    'テーブルを削除'、
    テーブル名、
    ';'
  )
から
  情報スキーマ。テーブル
どこ
  TABLE_SCHEMA = 'テスト';

3. スプライスキル接続

選択
  concat('KILL ', id, ';')
から
  情報スキーマ。PROCESSLIST
どこ
  STATE LIKE 'ソートインデックスを作成しています';

4. ステートメントを結合してデータベースを作成する

選択
  連結(
    'データベースを作成'、
    '`',
  スキーマ名、
  '`',
  「デフォルトの文字セット」、
  デフォルト文字セット名、
    ';'
  ) AS CreateDatabaseQuery
から
  情報スキーマ.SCHEMATA
どこ
  SCHEMA_NAME が (
    '情報スキーマ',
    'パフォーマンススキーマ',
    'mysql',
    'システム'
  );

5. ステートメントを連結してユーザーを作成する

選択
  連結(
    'ユーザーを作成 \'',
  ユーザー、
  '\'@\''、
  ホスト、
  '\''
  ' パスワードで識別 \'',
  認証文字列、
    '\';'
  ) AS CreateUserQuery
から
  mysql.`ユーザー`
どこ
  `User` が ( にありません
    '根'、
    'mysql.セッション',
    'mysql.sys'
  );
# パスワード文字列があります。他のインスタンスで実行することで、このインスタンスと同じパスワードを持つユーザーを直接作成できます。

6. エクスポート許可スクリプト このシェルスクリプトもスプライシングを使用しています

#!/bin/bash 
#関数ユーザー権限のエクスポート 

pwd=あなたのパスワード 
外国人移住者() 
{ 
 mysql -B -u'root' -p${pwd} -N $@ -e "SELECT CONCAT( 'SHOW GRANTS FOR ''', user, '''@'''', host, ''';' ) AS query FROM mysql.user" | \
 mysql -u'root' -p${pwd} $@ | \
 sed 's/\(GRANT .*\)/\1;/;s/^\(.*\ の許可)/-- \1 /;/--/{x;p;x;}' 
} 

expgrants > /tmp/grants.sql
echo "権限をフラッシュします。" >> /tmp/grants.sql

7. ルックアップテーブルの断片化

t.TABLE_SCHEMAを選択します。
    t.テーブル名、
    t.TABLE_ROWS、
    concat(round(t.DATA_LENGTH / 1024 / 1024, 2), 'M') ASサイズ、
    t.インデックス長さ、
    concat(round(t.DATA_FREE / 1024 / 1024, 2), 'M') AS データフリー
information_schema.tables t から
WHERE t.TABLE_SCHEMA = 'test' order by DATA_LENGTH desc;

8. 主キーのないテーブルを探します。これはスプライシングには使用されないので、共有します。

#特定のライブラリ内の主キーのないテーブルを検索するSELECT
テーブルスキーマ、
テーブル名
から
  情報スキーマ.TABLES
どこ
  テーブルスキーマ = 'テスト'
かつ、TABLE_NAME が (
  選択
    テーブル名
  から
    情報スキーマ.テーブル制約
  JOIN information_schema.key_column_usage k USING (
    制約名、
    テーブルスキーマ、
    テーブル名
  )
  どこ
    t.constraint_type = '主キー'
  かつ t.table_schema = 'test'
);

#システムライブラリ以外の主キーのないテーブルを検索するSELECT
  t1.テーブルスキーマ、
  t1.テーブル名
から
  情報スキーマ。テーブル t1
LEFT OUTER JOIN information_schema.TABLE_CONSTRAINTS t2 ON t1.table_schema = t2.TABLE_SCHEMA
かつ t1.table_name = t2.TABLE_NAME
AND t2.CONSTRAINT_NAME IN ('PRIMARY')
どこ
  t2.table_name が NULL です
かつ、t1.TABLE_SCHEMA が (
  '情報スキーマ',
  'パフォーマンススキーマ',
  'mysql',
  'システム'
) ;

上記はMySQLでよく使われる連結文の詳しい内容です。MySQLの連結文についてさらに詳しく知りたい方は、123WORDPRESS.COMの他の関連記事もぜひご覧ください!

以下もご興味があるかもしれません:
  • MySQLはshow statusを使用してMySQLサーバーのステータス情報を表示します。
  • MySQLでテーブル情報を取得する方法 テーブルステータスの表示
  • MySQL テーブルを作成するためによく使用される SQL ステートメントの概要
  • MySQLのUPDATE文の落とし穴を記録する
  • Navicat PremiumはMySQLデータベースを操作します(SQL文を実行します)
  • 2 つの MySQL ユーザー削除ステートメント (delete user と drop user) の違い
  • MySQL データベースのステートメント ワイルドカード ファジー クエリの概要
  • MySQLで判定文を書く方法のまとめ
  • MySQLデータの重複チェックと重複排除の実装ステートメント
  • MySQL SHOW STATUSステートメントの使用

<<:  Linuxはシェルスクリプトを使用して履歴ログファイルを定期的に削除します

>>:  JavaScript の async と await のシンプルで詳細な学習

推薦する

デスクトップ仮想化を実現するために Hyper-V を展開する手順 (グラフィック チュートリアル)

Hyper-V を展開するためのハードウェア要件は次のとおりです。 64 ビット プロセッサ、具体...

MySQLプロセスを安全かつ適切にシャットダウンする方法

序文この記事では、mysqld プロセスをシャットダウンするプロセスと、MySQL インスタンスを安...

MySQL データベース インデックスが B+ ツリーの使用を選択するのはなぜですか?

MySQL データベース インデックスが B+ ツリーを使用する理由をさらに分析する前に、データ構...

画像拡大鏡効果のJSバージョン

この記事では、画像拡大鏡効果を実現するためのJSの具体的なコードを参考までに紹介します。具体的な内容...

JD.com フラッシュセール効果を実現する JavaScript

この記事では、JD.comのフラッシュセール効果を実現するためのJavaScriptの具体的なコード...

JS オブジェクトのコピー (ディープ コピーとシャロー コピー)

目次1. 浅いコピー1. Object.assign(ターゲット、ソース、ソース...) 2. スプ...

Docker コンテナ入門から夢中になるまで(推奨)

1. Docker とは何ですか?仮想マシンについては誰もが知っています。Windows に Li...

HTML要素のID属性とName属性の違い

今日、私は <a href="#13"></a> につい...

JSブラウザストレージの詳しい説明

目次導入クッキークッキーとはクッキー生成方法クッキーの適用シナリオクッキーのデメリット回避策ローカル...

MySQL InnoDB テーブルスペース暗号化の例の詳細な説明

序文MySQL 5.7.11 以降、MySQL は、別の表領域に格納された InnoDB テーブルの...

MySQL 5.7.20 Green Edition のインストールの詳細なグラフィックチュートリアル

まず、MySQL とは何かを理解しましょう。 MySQL は、スウェーデンの会社 MySQL AB ...

Nginx ロケーションマッチングルールの例

1. 文法 場所 [=|~|~*|^~|@] /uri/ { ... } 2. 説明上記の構文から、...

Remレイアウトを使用して適応性を実現する

以前、モバイル適応に関する記事を書きました。非常に長く、内容が多すぎて読みづらいものでした。そこで、...

js のプロトタイプ、プロトタイプ オブジェクト、プロトタイプ チェーンの包括的な分析

目次プロトタイプを理解するプロトタイプオブジェクトを理解するインスタンスプロパティとプロトタイププロ...

MySQL アカウント情報をエレガントにバックアップする方法

序文:最近、インスタンスの移行の問題に遭遇しました。データの移行後、データベースのユーザーと権限も移...