MySQLデータベースの共通操作スキルのまとめ

MySQLデータベースの共通操作スキルのまとめ

この記事では、MySQL データベースの一般的な操作テクニックをまとめます。ご参考までに、詳細は以下の通りです。

1. 異なるテーブル内の同じ名前のフィールドをクエリする(テーブル接続クエリ条件アーティファクト)

information_schema を使用します。
column_name='フィールド名' の列から * を選択します。

2. クエリレコードの総数

1=1 となるテーブルから SQL_CALC_FOUND_ROWS * を選択します。

データ行の総数を取得できる

@RowCount=found_rows() を設定します。

3. ストアドプロシージャデータクエリページング

定義済み変数:

/*エラーコード*/
@RetCode を '1' に設定します。
/*エラーメッセージ*/
@RetVal='1' を設定します。
/*行数を返す*/
@RowCount を '0' に設定します。
/*ページ番号*/
@PageCount を '0' に設定します。
/*ページあたりの表示数*/
@CurrentItem を 0 に設定します。
/*ページあたりの表示数*/
@PageSize=arg_page_size を設定します。
/*ページ番号*/
@PageCurrent=arg_page_current を設定します。
SET @SqlExe='1=1 のテーブルから * を選択';
入力パラメータ: arg_page_size int、arg_page_current int
IF(@PageCurrent が NULL でない場合 && @PageSize が NULL でない場合)
@CurrentItem を (@PageCurrent-1)*@PageSize に設定します。
SET @SqlExe=CONCAT(@SqlExe,'LIMIT', @PageSize,' OFFSET ', @CurrentItem);
それ以外
@SqlExe を CONCAT(@SqlExe,' ') に設定します。
終了の場合;
@SqlExe から stmt を準備します。
ステートメントを実行します。
準備ステートメントの割り当てを解除します。
IF(@RowCount が NULL でない場合 && @RowCount != 0)
IF(@PageSizeがnullの場合)
@PageSize を @RowCount に設定します。
終了の場合;
@PageCount を ceiling(@RowCount/@PageSize) に設定します。
それ以外
@RowCount を 0 に設定します。
@ページ数 = 1 を設定します。
終了の場合;

4. 文字列関連の操作

1. 左から文字列を傍受する

左(文字列、長さ)

説明: 左 (切り捨てられたフィールド、切り捨てられた長さ)

例:

my_content_t から抽象として left(content,200) を選択します。

2. 右から文字列をインターセプトする

右(文字列、長さ)

説明:右 (切り捨てられたフィールド、切り捨てられた長さ)

例:

my_content_t から abstract として right(content,200) を選択します。

3. インターセプト文字列

部分文字列(str, pos)

部分文字列(str, pos, length)

例:

部分文字列(インターセプトされたフィールド、インターセプトが開始される位置)

部分文字列 (インターセプトされたフィールド、インターセプトを開始する番号、およびインターセプトの長さ)

例:

my_content_t から抽象として部分文字列 (content,5) を選択
my_content_t から抽象として部分文字列 (content,5,200) を選択

(注: 桁数が -5 などの負の数の場合は、最後の桁から文字列の末尾までの長さ、または切り捨てられた長さになります)

4. キーワードで文字列をインターセプトする

部分文字列インデックス(文字列、区切り文字、数)

説明: substring_index (インターセプトされたフィールド、キーワード、キーワードの出現回数)

例:

my_content_t から抽象として substring_index("blog.csdn.net",".",2) を選択します。

結果:

ブログ

(注: キーワードの出現回数が -2 などの負の数の場合は、文字列の末尾まで逆方向にカウントされます)

機能紹介:

SUBSTRING(str,pos)SUBSTRING(str FROM pos)SUBSTRING(str,pos,len)SUBSTRING(str FROM pos FOR len)

len 引数のないフォーマットは、位置 pos から始まる文字列 str の部分文字列を返します。 len 引数を持つフォーマットは、位置 pos から始まる長さ len 文字の部分文字列を文字列 str から返します。 FROM を使用する形式は標準の SQL 構文です。 pos に負の値を使用することもできます。この場合、部分文字列の位置は文字列の先頭ではなく、文字列の末尾の pos 文字から始まります。次の形式の関数では、pos に負の値を使用できます。

MySQL 文字列の大文字と小文字の変換

deMySQLの文字列大文字小文字変換関数には、 lower()uppper()lcase()ucase()の2つのペアがあります。

mysql> 下位を選択します('DDD');
結果: ddd
mysql> 上位('ddd')を選択します。
結果: DDD
mysql> lcase('DDD') を選択します。
結果: ddd
mysql> ucase('ddd') を選択します。
結果: DDD

通常、文字列の大文字と小文字を変換するには、他のデータベース関数と互換性があるためlower()upper()選択します。

5. 時間取得関連操作

_LastWeekStartTime date; を宣言します -- 先週の開始時刻 _LastWeekEndTime date; を宣言します -- 先週の終了時刻

-- システムでは日曜日を週の最初の日としているので、1を引く必要があります。

@A = date_add(curdate(), 間隔 -1 日) を設定します。

-- 今週の月曜日の日付を計算する

@B = サブ日付( @A,date_format(@A,'%w')-1) を設定します。

-- システムでは日曜日を週の最初の日として使用するため、前週の最終日(前週の土曜日)を取得するには 2 を引く必要があります。

@C = date_add(@B、間隔 -2 日) を設定します。
_LastWeekStartTime = (subdate( @C,date_format( @C,'%w')-1)); を設定します。
_LastWeekEndTime を ( date_add(subdate( @C,date_format( @C,'%w')-1), interval 6 day) に設定します);

-- 現在の日付を取得します。1 は日曜日、2 は月曜日、というようになります。

@nowdate を設定します (DAYOFWEEK(NOW()) を選択)。
SET @NowD=ケース @nowdate
1の場合は「日曜日」
2の場合は「月曜日」
3のときは「火曜日」
4のときは「水曜日」
5のときは「木曜日」
6時なら「金曜日」
7のときは「土曜日」
終わり;

-- 日曜日の時間を再計算する必要がある

(DATE_FORMAT(CURDATE(),'%w')=0)の場合
@curmon を設定します (SELECT SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')+6));
SET @cursun=(SELECT SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')));
それ以外

-- 開始時間(月曜日)

@curmon を設定します。(SELECT SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')-1));

-- 終了時間(日曜日)

@cursun を設定します (SELECT SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')-7));

6. 分類スキル

CREATE TABLEテスト(
id INT PRIMARY KEY NULLではない auto_increment,
val nvarchar (50) NULLではない
);
test(val) に VALUES ('0') を挿入します。
test(val) VALUES ('1') に INSERT します。
test(val) VALUES ('2') に INSERT します。
test(val) に VALUES ('3') を挿入します。
テストから * を選択;
-- id 2 0 1 3 の優先度に基づいて順序をカスタマイズします。SELECT * FROM test ORDER BY instr('2013',id);
-- 原則的な例 SET @ORDBYD='2013';
'2'、instr(@ORDBYD、'2') を `INDEX` として選択します
連合
'0'、instr(@ORDBYD、'0') を `INDEX` として選択します
連合
'1'、instr(@ORDBYD、'1') を `INDEX` として選択します
連合
'3'、instr(@ORDBYD、'3') を `INDEX` として選択します。

instr 関数(Baidu 百科事典の instr 関数構文より)

instr( 文字列1, 文字列2, 開始位置, n番目の外観 )

string1 : 検索するソース文字列。
string2 : string1 で検索する文字列。
start_position : 検索を開始する string1 の位置を表します。このパラメータはオプションであり、省略した場合はデフォルトで 1 になります。文字列のインデックスは 1 から始まります。このパラメータが正の場合、検索は左から右へ開始されます。このパラメータが負の場合、検索は右から左へ開始され、ソース文字列内で検索する文字列の開始インデックスが返されます。
nth_appearance : 検索される string2 の n 番目の出現を表します。このパラメータはオプションです。省略した場合、デフォルト値は 1 です。負の数の場合、システムはエラーを報告します。

知らせ:

位置インデックスは 1 から始まります。

String2 が String1 内に見つからない場合、instr 関数は 0 を返します。

例:

SELECT instr('syranmo','s') FROM Dual; -- 1 を返します
SELECT instr('syranmo','ra') FROM Dual; -- 3 を返します
SELECT instr('syran mo','at',1,2) FROM Dual; -- 0 を返します

MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL トランザクション操作スキル」、「MySQL ストアド プロシージャ スキル」、「MySQL データベース ロック関連スキルの概要」、および「MySQL 共通関数の概要」

この記事が皆様のMySQLデータベース設計に役立つことを願っています。

以下もご興味があるかもしれません:
  • MySQL 5.7.20 共通ダウンロード、インストール、設定方法と簡単な操作スキル(解凍版無料インストール)
  • Java Web を使用して MySQL データベースに接続する方法
  • tcpdump を使用して mysql のパケットをキャプチャする方法
  • MySQL数千万の大規模データに対する30のSQLクエリ最適化テクニックの詳細な説明
  • 時間に基づいて日付をクエリするためのMySQL最適化テクニック
  • MYSQL クエリの効率を向上させる 10 の SQL ステートメント最適化テクニック
  • MySQL クイックデータ比較テクニック
  • MySQL の一般的な問題とアプリケーション スキルの概要
  • MySQL データ ウェアハウスを保護するための 5 つのヒント
  • MySQL のデバッグと最適化に関する 101 のヒントを共有する
  • MySql SQL最適化のヒントの共有
  • MySQLインジェクションバイパスフィルタリング技術の概要

<<:  Windows Server 2016 に Docker をインストールする方法

>>:  TS 数値区切り文字とより厳密なクラス属性チェックの詳細な説明

推薦する

Linuxのtopコマンド出力の詳細な説明

序文皆さんは Linux で top コマンドを使ったことがあると思います。私は Linux に触れ...

MySQL ページングクエリ最適化テクニック

ページング クエリを使用するアプリケーションでは、LIMIT と OFFSET を含むクエリが非常に...

理論の普及——ユーザーエクスペリエンス

1. 概念分析 1: UE ユーザー エクスペリエンス <br />英語ではユーザー エ...

XHTML と CSS によるオブジェクト指向プログラミング

<br />XHTML と CSS がオブジェクト指向だったらよかったのに。 。太陽は北...

Zabbix redis 自動ポート検出スクリプトは json 形式を返します

自動検出を行う際には、ポートなどの情報を取得してjson形式で返すスクリプトが必ず存在します。Red...

Tomcatのデフォルトプログラム公開パスの使用と変更についての説明

tomcat7 のデフォルトのプログラム公開パスは tomcat/webapps/ROOT/ です。...

MySql データベースにおける単一テーブル クエリと複数テーブル結合クエリの効率の比較

この間、プロジェクトに取り組んでいるときに、データ間の接続が非常に複雑なモジュールに遭遇しました。テ...

MySQL COUNT関数の使用と最適化

目次COUNT 関数は何をするのですか? MyISAMの「魔法」シンプルなCOUNT最適化近似値を使...

uni-app を使用して上部のナビゲーション バーにボタンと検索ボックスを表示する方法

最近、会社でアプリを開発する準備をしており、最終的に開発には uni-app フレームワークを使用す...

Linux LVM 論理ボリューム構成プロセス (作成、増加、削減、削除、アンインストール) の詳細な説明

Linux LVM論理ボリューム構成プロセスの詳細な説明多くの Linux ユーザーは、オペレーティ...

シェルを使用して複数のサーバーでバッチ操作を実行する方法

目次SSHプロトコルパスワード接続プロセスsshツールssh公開鍵ログインバッチ操作複数サーバーファ...

VueはExcelデータをエクスポートするパブリック関数メソッドをカプセル化します

vue+element UI は Excel データをエクスポートするためのパブリック関数をカプセル...

Linux コマンドラインからファイルを削除する実用的な方法

rm コマンドrm コマンドは、ファイルを削除するときによく使用されるコマンドです。ファイルまたはデ...

nginx が複数のプロキシ層を通過して実際の送信元 IP を取得するプロセスの詳細な説明

質問Nginx は $remote_addr を実際の IP アドレスとして受け取りますが、実際には...

MySQLの明示的な型変換の簡単な分析

CAST関数前回の記事では、型変換を表示するために使用する CAST 関数について説明しました。暗黙...