はじめに: 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の他の関連記事もぜひご覧ください! 以下もご興味があるかもしれません:
|
<<: Linuxはシェルスクリプトを使用して履歴ログファイルを定期的に削除します
>>: JavaScript の async と await のシンプルで詳細な学習
Hyper-V を展開するためのハードウェア要件は次のとおりです。 64 ビット プロセッサ、具体...
序文この記事では、mysqld プロセスをシャットダウンするプロセスと、MySQL インスタンスを安...
MySQL データベース インデックスが B+ ツリーを使用する理由をさらに分析する前に、データ構...
この記事では、画像拡大鏡効果を実現するためのJSの具体的なコードを参考までに紹介します。具体的な内容...
この記事では、JD.comのフラッシュセール効果を実現するためのJavaScriptの具体的なコード...
目次1. 浅いコピー1. Object.assign(ターゲット、ソース、ソース...) 2. スプ...
1. Docker とは何ですか?仮想マシンについては誰もが知っています。Windows に Li...
今日、私は <a href="#13"></a> につい...
目次導入クッキークッキーとはクッキー生成方法クッキーの適用シナリオクッキーのデメリット回避策ローカル...
序文MySQL 5.7.11 以降、MySQL は、別の表領域に格納された InnoDB テーブルの...
まず、MySQL とは何かを理解しましょう。 MySQL は、スウェーデンの会社 MySQL AB ...
1. 文法 場所 [=|~|~*|^~|@] /uri/ { ... } 2. 説明上記の構文から、...
以前、モバイル適応に関する記事を書きました。非常に長く、内容が多すぎて読みづらいものでした。そこで、...
目次プロトタイプを理解するプロトタイプオブジェクトを理解するインスタンスプロパティとプロトタイププロ...
序文:最近、インスタンスの移行の問題に遭遇しました。データの移行後、データベースのユーザーと権限も移...