Rumah > Artikel > pangkalan data > Bagaimana untuk menggunakan kunci asing dalam MySQL untuk mengekalkan integriti data?
Bagaimana untuk menggunakan kunci asing dalam MySQL untuk mengekalkan integriti data?
Petikan:
Dalam pangkalan data, integriti data adalah sangat penting. Dengan menggunakan kunci asing, kami memastikan ketekalan dan integriti data dikekalkan antara jadual berkaitan dalam pangkalan data. Artikel ini akan memperkenalkan anda kepada cara menggunakan kunci asing untuk mengekalkan integriti data dalam MySQL.
Pertama, kita perlu mencipta dua jadual dan mengaitkannya. Katakan kita mempunyai dua jadual, satu jadual "pesanan" dan satu lagi jadual "pelanggan". Setiap pesanan perlu dikaitkan dengan pelanggan, dan kami akan menggunakan kunci asing untuk mengekalkan perkaitan ini.
Pernyataan SQL untuk mencipta jadual "pelanggan" adalah seperti berikut:
CREATE TABLE customers ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), email VARCHAR(100) );
Pernyataan SQL untuk mencipta jadual "pesanan" adalah seperti berikut:
CREATE TABLE orders ( id INT PRIMARY KEY AUTO_INCREMENT, order_date DATE, amount DECIMAL(10,2), customer_id INT, FOREIGN KEY (customer_id) REFERENCES customers(id) );
Dalam jadual "pesanan" di atas, kami menambah fail bernama " customer_id" dan menggunakan lajur "id" pada jadual "pelanggan" dalam kekangan kunci asing.
Seterusnya, kami memasukkan beberapa data ke dalam jadual "pelanggan" dan jadual "pesanan". Berikut ialah pernyataan SQL untuk beberapa sampel data:
-- 插入customers表格的数据 -- INSERT INTO customers (name, email) VALUES ('张三', 'zhangsan@example.com'); INSERT INTO customers (name, email) VALUES ('李四', 'lisi@example.com'); INSERT INTO customers (name, email) VALUES ('王五', 'wangwu@example.com'); -- 插入orders表格的数据 -- INSERT INTO orders (order_date, amount, customer_id) VALUES ('2021-01-01', 100.00, 1); INSERT INTO orders (order_date, amount, customer_id) VALUES ('2021-01-02', 200.00, 2); INSERT INTO orders (order_date, amount, customer_id) VALUES ('2021-01-03', 300.00, 3);
Dalam pernyataan SQL di atas, kami sedang memasukkan data pesanan dengan menggunakan nilai "id" daripada jadual "pelanggan" yang dikaitkan dengan kunci asing.
Sekarang, mari kita uji kekangan dan penyelenggaraan kunci asing. Kami cuba melaksanakan pernyataan berikut:
-- 尝试在orders表格中插入无效的customer_id值 -- INSERT INTO orders (order_date, amount, customer_id) VALUES ('2021-01-04', 400.00, 4);
Disebabkan kehadiran kekangan kunci asing, operasi sisipan ini akan gagal dengan mesej ralat.
Dalam MySQL, kunci asing juga boleh ditakrifkan dengan pilihan "ON DELETE" dan "ON UPDATE" untuk menentukan tindakan yang perlu diambil apabila baris dalam jadual yang berkaitan dipadamkan atau dikemas kini. Berikut ialah contoh:
-- 创建orders表格时定义外键的ON DELETE和ON UPDATE选项 -- CREATE TABLE orders ( id INT PRIMARY KEY AUTO_INCREMENT, order_date DATE, amount DECIMAL(10,2), customer_id INT, FOREIGN KEY (customer_id) REFERENCES customers(id) ON DELETE CASCADE ON UPDATE CASCADE );
Dalam contoh di atas, kami menetapkan pilihan "ON DELETE CASCADE" dan "ON UPDATE CASCADE" bagi kunci asing, yang bermaksud jika satu baris dalam jadual "pelanggan" dipadamkan atau dikemas kini, semua baris dalam jadual "pesanan" yang berkaitan juga akan dipadamkan atau dikemas kini dengan sewajarnya.
Ringkasan:
Dengan menggunakan kunci asing, kami dapat memastikan ketekalan dan integriti data dikekalkan antara jadual yang berkaitan dalam pangkalan data. Dalam MySQL, kita boleh menggunakan kata kunci "KUNCI ASING" untuk mencipta kunci asing dan dikekang semasa memasukkan atau mengemas kini data. Selain itu, kita boleh menggunakan pilihan "HIDUP" dan "HIDUP KEMASKINI" untuk menentukan tindakan yang perlu diambil apabila baris yang berkaitan dengan kunci asing dipadamkan atau dikemas kini dalam jadual berkaitan.
Di atas adalah pengenalan tentang cara menggunakan kunci asing dalam MySQL untuk mengekalkan integriti data saya harap ia akan membantu anda. Terima kasih kerana membaca!
Atas ialah kandungan terperinci Bagaimana untuk menggunakan kunci asing dalam MySQL untuk mengekalkan integriti data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!