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 のシンプルで詳細な学習

推薦する

1 つの記事で Nginx の現在の制限を理解する (簡単な実装)

Nginx は現在、最も人気のあるロード バランサーの 1 つです。インターネット トラフィックの...

VMware vSphere 6.7 (ESXI 6.7) のグラフィック インストール手順

環境: VMware VCSA 6.7 (VMware-VCSA-all-6.7.0-8169922...

Nginx のリロード プロセスの背後にある真実を探る

本日の記事では、主にNginxのリロードプロセスについて紹介します。実は前回の記事では、nginx ...

Web ページのスクロール バーが右側に設定されているのはなぜですか?

私たちが毎日使っているブラウザや Word 文書のスクロール バーはなぜ右側にあるのでしょうか。多く...

VueでTypescriptの設定手順を使用する

目次1. TypeScriptが古いVueプロジェクトに導入されるVue+Typescript プロ...

MySQL 5.7.13 ソースコードのコンパイル、インストール、および構成方法のグラフィックチュートリアル

インストール環境: CentOS7 64ビットMINI版公式ソースコードのコンパイルおよびインストー...

モバイルページで縦画面を強制する方法

最近、仕事でモバイルページを作成しました。もともと特別なことではありませんでしたが、非常に奇妙に感じ...

CSS ハート型読み込みアニメーションのソースコードの実装

さっそく、コードをお見せしましょう。コードは非常にシンプルなので、勉強すれば理解できるようになります...

Tencent Cloud 上で Hadoop 3.x 疑似クラスターを構築する方法を説明します

1. 環境整備CentOS Linux リリース 7.5.1804 (コア)インストールフォルダを作...

Vue.jsはタイムライン機能を実装します

この記事では、タイムライン機能を実装するためのVue.jsの具体的なコードを参考までに共有します。具...

Nginx10m+の高並列カーネル最適化に関する簡単な説明

高い同時実行性とは何ですか?デフォルトの Linux カーネル パラメータは、最も一般的なシナリオ向...

ZabbixはLinuxシステムサービスのプロセスを監視

Zabbix は Linux システムのサービス ユニットを監視するためのルールを自動的に検出します...

Vue が学ぶべき知識ポイント: forEach() の使用

序文フロントエンド開発では、目的のコンテンツを取得するためにループをトラバースする必要がある状況に頻...

フィルターを使用して画像に透明な CSS を書く方法

フィルターを使用して画像に透明な CSS を書く方法コードをコピーコードは次のとおりです。 html...

MySQL、Oracle、SQL Server のページングクエリ例の分析

最近、Oracle、MySQL、SQL Server 2005 のデータ ページング クエリについて...