-
MySQL IFNULL()制御フロー関数の使用は何ですか?
MySQL IFNULL()制御フロー関数は、NULLでない場合は最初の引数を返し、そうでない場合は2番目の引数を返します。 構文 IFNULL(expression1, expression2) ここで、expression1がNULLでない場合、IFNULL()はexpression1を返します。それ以外の場合はexpression2を返します。両方の引数がNULLの場合、NULLを返します。次の例はこれを示します- mysql> Select IFNULL(NULL,'Ram'); +--------------------+ | IFNULL(NULL,'
-
MySQLは、ストアドプロシージャが作成された時点で環境を保持していますか?
実際、MySQLは、ストアドプロシージャが作成された時点で環境を保持します。文字列を連結するために2本のバーを使用している例に従うことで理解できます。これは、SQLモードがansiである場合にのみ有効です。ただし、SQLモードを非ANSIに変更した場合でも、手順は元の設定が引き続き真であるかのように機能します。 例 mysql> Set sql_mode = 'ansi'// Query OK, 0 rows affected, 1 warning (0.14 sec) mysql> Create Procedure Con_string() &nb
-
MySQLストアドプロシージャ内の変数のスコープとはどういう意味ですか?
BEGIN / ENDブロック内で変数を宣言すると、この変数のスコープはこの特定のブロックになります。同じ名前の変数を別のBEGIN/ENDブロック内で宣言することもできます。これは完全に有効ですが、そのスコープはBEGIN/ENDブロック内にあります。変数のスコープを表示するプロシージャを作成している次の例の助けを借りて理解することができます- 例 mysql> Create Procedure Scope_variables() -> BEGIN -> DECLARE A Varchar(5) Default
-
MySQL NULLIF()制御フロー関数の使用は何ですか?
MySQL NULLIF()制御フロー関数は、両方の引数が同じ場合はNULLを返し、そうでない場合は最初の引数を返します。 構文 NULLIF(expression1, expression2) ここで、expression1 =expression2の場合、NULLはNULLIF()によって返されます。それ以外の場合、expression1が返されます。次の例はこれを示します- mysql> Select NULLIF('Ram','Ram'); +---------------------+ | NULLIF('Ram','Ra
-
NULLIF()で引数が等しくない場合、MySQLはどのように式を評価しますか?
MySQL NULLIF()制御フロー関数が最初の引数を返すことがわかっているので、両方の引数は同じではありません。両方の引数が同じでない場合、MySQLは最初の引数を2回評価するため、最初の引数が返されます。 例 mysql> Select NULLIF('Tutorialspoint','MySQL'); +----------------------------------+ | NULLIF('Tutorialspoint','MySQL') | +----------------------------------
-
データベースの名前をパラメータとして使用するMySQLストアドプロシージャを作成して、特定のデータベースの詳細情報を含むテーブルを一覧表示します。
現在、「query」という名前のデータベースを使用していて、その中に次のテーブルがあるとします- mysql> Show tables in query; +-----------------+ | Tables_in_query | +-----------------+ | student_detail | | student_info | +-----------------+ 2 rows in set (0.00 sec) 次に、ストアドプロシージャがあります。これは、データベースの名前をパラメータとして受け入れ、詳細情報を含むテーブルのリ
-
MySQLストアドプロシージャは、その中の別のMySQLストアドプロシージャをどのように呼び出すことができますか?
MySQLストアドプロシージャがその中の別のMySQLストアドプロシージャを呼び出す可能性は十分にあります。これを示すために、ストアドプロシージャが別のストアドプロシージャを呼び出してlast_insert_idを見つける例を取り上げています。 例 mysql> Create table employee.tbl(Id INT NOT NULL AUTO_INCREMENT, Name Varchar(30) NOT NULL, PRIMARY KEY(id))// Query OK, 0 rows affected (3.87 sec) mysql> Create Proced
-
MySQLストアドプロシージャを介してテーブルにアクセスするにはどうすればよいですか?
MySQLストアドプロシージャから1つまたはすべてのテーブルにアクセスできます。以下は、テーブルの名前をパラメーターとして受け取り、それを呼び出した後、テーブルのすべての詳細を含む結果セットを生成するストアドプロシージャを作成した例です。 例 mysql> Delimiter // mysql> Create procedure access(tablename varchar(30)) -> BEGIN -> SET @X := CONCAT('Select * from',' ',t
-
MySQLストアドプロシージャ内でSTARTトランザクションを実行するにはどうすればよいですか?
知っているように、STARTトランザクションはトランザクションを開始し、自動コミットモードをオフに設定します。次の例では、次のデータを持つテーブルemployee.tblに新しいレコードを挿入するSTARTトランザクションを使用してストアドプロシージャを作成しました- mysql> Select * from employee.tbl; +----+---------+ | Id | Name | +----+---------+ | 1 | Mohan | | 2 | Gaurav | | 3 |
-
MySQLストアドプロシージャ内でCOMMITトランザクションを実行するにはどうすればよいですか?
知っているように、STARTトランザクションはトランザクションを開始し、COMMITは、トランザクションの開始後に行われた変更を行うために使用されます。次の例では、COMMITとSTARTトランザクションを使用してストアドプロシージャを作成しました。これにより、新しいレコードが挿入され、次のデータを持つテーブル「employee.tbl」に変更がコミットされます- mysql> Select * from employee.tbl; +----+---------+ | Id | Name | +----+---------+ | 1 | Mohan
-
MySQLストアドプロシージャでCOMMITを使用し、STARTトランザクションの下のトランザクションの1つが失敗するとどうなりますか?
クエリの1つが失敗またはエラーを生成し、MySQLが適切に実行された別のクエリが、適切に実行されたクエリの変更をコミットするとします。次のデータを持つテーブル「employee.tbl」を使用している次の例から理解できます- 例 mysql> Select * from employee.tbl; +----+---------+ | Id | Name | +----+---------+ | 1 | Mohan | | 2 | Gaurav | | 3 | Sohan | | 4 &
-
MySQLストアドプロシージャ内でROLLBACKトランザクションを実行するにはどうすればよいですか?
ご存知のとおりロールバック トランザクションの開始後にデータベースに加えられた変更はすべて元に戻されます。 ロールバックを実行するには MySQLストアドプロシージャでは、 EXITを宣言する必要があります ハンドラ。 sqlexceptionまたはSQL警告のいずれかにハンドラーを使用できます。次の詳細を持つテーブルに対してROLLBACKが作成されたストアドプロシージャの例を使用すると理解できます- mysql> SHOW CREATE table gg\G *************************** 1. row ***************************
-
ストアドプロシージャおよび関数内で実行されるアクションはどのように複製されますか?
ストアドプロシージャおよび関数で実行される実際の標準アクションは、マスターMySQLサーバーからスレーブMySQLサーバーに複製されます。マスターMySQLサーバーで通常のDDLステートメントを介して実行されるストアドプロシージャと関数の作成でさえ、スレーブMySQLサーバーに複製されます。このようにして、オブジェクトは両方のサーバーに存在します。 MySQLはストアドプロシージャと関数内で発生する各DDLイベントを記録するため、ストアドプロシージャと関数内で発生するアクションが複製されます。イベントを記録した後、それはスレーブMySQLサーバーに複製されます。ただし、ストアドプロシージャを
-
ストアドプロシージャと関数をレプリケーションと一緒に使用するための特別なセキュリティ要件は何ですか?
実際、MySQLスレーブサーバーには、マスターのMySQLサーバーのバイナリログから読み取られたステートメントを実行する権限があるため、レプリケーションで保存された関数を使用するための特別なセキュリティ上の制約があります。一般にレプリケーションまたはバイナリロギング(ポイントインタイムリカバリの目的で)がアクティブな場合、MySQLDBAには2つのセキュリティオプションがあります- SUPER特権のオプション 保存された関数を作成したいユーザーは、DBAからSUPER特権を付与されている必要があります。 log_bin_trust_function_creatorsモード 実際、log_b
-
ストアドプロシージャと関数を複製するための制限は何ですか?
以下は、ストアドプロシージャと関数を複製するための制限です- アクションの種類 −実際には、ストアドプロシージャと関数の複製は、アクションのタイプによって異なります。ストアドプロシージャに埋め込まれているアクションが非決定的(ランダム)または時間ベースの場合、正しく複製されない可能性があります。その性質上、ランダムに生成された結果は予測できず、正確に再現できません。したがって、スレーブに複製されたランダムなアクションは、マスターで実行されたアクションを反映しません。 トランザクションの種類 −大規模なDMLアクション(一括挿入など)中にエラーが発生する非トランザクションテーブルでは、マスター
-
データベースに格納されている特定のMySQLテーブルの詳細を取得するストアドプロシージャを作成しますか?
次の例では、データベースに保存されている特定のテーブルのすべての詳細を提供する「tabledetails」という名前のプロシージャを作成します。 例 mysql> DELIMITER // mysql> Create Procedure tabledetails() -> BEGIN -> DESCRIBE Student_detail; -> END // Query OK, 0 rows affected (0.00 sec) mysql> DELIMITER ; mysq
-
MySQLストアドプロシージャのパラメータとしてテーブルの名前を渡すことにより、テーブルのすべてのレコードを取得するにはどうすればよいですか?
ストアドプロシージャのパラメータとして名前を渡すことでテーブルのすべてのレコードを表示したい場合、次の例では、次の名前を受け入れるdetailsという名前のプロシージャを作成します。パラメータとしてのテーブル- mysql> DELIMITER // mysql> Create procedure details(tab_name Varchar(40)) -> BEGIN -> SET @t:= CONCAT('Select * from',' ',tab_name);
-
MySQL INTERVAL()関数とは何ですか?
MySQL INTERVAL()関数は、最初の引数よりも大きい引数のインデックス値を返します。 構文 INTERVAL(N,N1,N2,N3,…) ここで、この関数は最初の引数、つまりNを他の引数、つまりN1、N2、N3などと比較します。すべての引数は整数として扱われます。次のように出力を返します- N
-
MySQL ISNULL()関数とIS NULL演算子の違いは何ですか?
重要なのは両方のISNULL() 関数とISNULL 演算子に違いはなく、いくつかの一般的な動作を共有しています。私たちが見ることができる唯一の違いは、それらの構文にあります。 ISNULL()関数は引数として式を持ちますが、 IS NULL 比較演算子はその左側に式があります。それ以外の場合、両方とも、式がNULLの場合は1を返し、式がNULLでない場合は0を返します。次の例は、上記の概念を示しています- mysql> Select 1 IS NULL; +-----------+ | 1 IS NULL | +-----------+ | 0 &nbs
-
INTERVAL()関数の最初の引数がNULLの場合、MySQLは何を返しますか?
MySQLは、INTERVAL()関数の最初の引数がNULLの場合、出力として-1を返します。次の例はそれを示します- mysql> Select INTERVAL(NULL,20,32,38,40,50,55); +--------------------------------------+ | INTERVAL(NULL,20,32,38,40,50,55) | +--------------------------------------+ | -1 &n