2つのテーブルがMySQLFOREIGNKEYに接続されている場合、データの整合性が子テーブルで維持されているとどのように言えますか?
実際、外部キーは参照整合性を強制し、データの整合性と整合性を自動的に維持するのに役立ちます。これは、「customer」と「orders」という名前の2つのテーブルの例で理解できます。ここで、「customer」は親テーブルであり、「orders」は子テーブルです。存在しないお客様の注文はできません。次のように両方のテーブルに値を挿入することで実証できます-
mysql> Select * from Customer; +----+--------+ | id | name | +----+--------+ | 1 | Gaurav | | 2 | Raman | | 3 | Harshit| | 4 | Aarav | +----+--------+ 4 rows in set (0.00 sec) mysql> Select * from orders; +-----------+-------------+------+ | order_id | product | id | +-----------+-------------+------+ | 100 | Notebook | 1 | | 110 | Pen | 1 | | 120 | Book | 2 | | 130 | Charts | 2 | +-----------+-------------+------+ 4 rows in set (0.00 sec)
ここで、存在しない顧客(ID 10が「customer」テーブルに存在しない)の「orders」テーブルに値を挿入しようとすると、外部キー制約の失敗により、MySQLが次のようなエラーをスローするとします。 。
mysql> insert into orders values(400, 'Notebook',10); ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`query`.`orders`, CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`id`) REFERENCES `customer` (`id`))
-
テーブルの動的データを使用するMySQLストアド関数を作成するにはどうすればよいですか?
MySQL Stored関数はテーブルを参照できますが、結果セットを返すステートメントを利用することはできません。したがって、結果セットを返すSELECTクエリはないと言えます。しかし、それを取り除くためにSELECTINTOを持つことができます。たとえば、次のレコードを持つ「Student_marks」という名前のテーブルの動的データを使用して、マークの平均を計算する関数「Avg_marks」を作成しています。 mysql> Select * from Student_marks; +-------+------+---------+---------+---------+ | Nam
-
MySQLテーブルの最大IDに関連付けられたデータを取得するにはどうすればよいですか?
最初にDESCで注文し、次に最大IDに関連付けられた値をフェッチします- select *from yourTableName order by yourColumnName DESC LIMIT 1,1; まずテーブルを作成しましょう- mysql> create table DemoTable -> ( -> Alldata int -> ); Query OK, 0 rows affected (0.63 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します