mysql tidak menyokong kunci asing
mysql menyokong kunci asing. Dalam MySQL, kunci asing digunakan terutamanya untuk mewujudkan hubungan antara jadual induk dan jadual hamba Mereka boleh mewujudkan sambungan untuk data dalam dua jadual dan mengekang ketekalan dan integriti data dalam dua jadual jadual memadam rekod, Rekod yang sepadan daripada jadual juga mesti diubah dengan sewajarnya. Jadual boleh mempunyai satu atau lebih kunci asing, dan kunci asing boleh menjadi nilai nol Jika ia bukan nilai nol, nilai setiap kunci asing mestilah sama dengan nilai tertentu kunci utama dalam jadual utama; dan bilangan lajur dalam kunci asing dan Jenis data yang sepadan mestilah sama dengan kunci utama jadual utama.
Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.
mysql menyokong kunci asing.
KUNCI ASING MySQL
Kunci asing ialah medan dalam jadual tertentu yang sepadan dengan medan lain dalam medan jadual lain. Kunci asing menetapkan kekangan pada data dalam jadual berkaitan, yang membolehkan MySQL mengekalkan integriti rujukan.
Kunci asing digunakan untuk mewujudkan hubungan antara jadual induk dan jadual hamba, mewujudkan sambungan untuk data dalam dua jadual, dan mengekang ketekalan dan integriti data dalam dua jadual.
Untuk dua jadual dengan perhubungan yang berkaitan, jadual di mana kunci utama dalam medan yang berkaitan terletak ialah jadual utama (jadual induk) dan jadual di mana kunci asing terletak adalah yang kedua. meja (meja kanak-kanak).
Apabila rekod dipadamkan daripada jadual utama, rekod yang sepadan daripada jadual juga mesti ditukar sewajarnya. Sesuatu jadual boleh mempunyai satu atau lebih kunci asing, dan kunci asing boleh menjadi batal Jika ia tidak batal, nilai setiap kunci asing mestilah sama dengan nilai tertentu kunci utama dalam jadual utama.
Mari kita lihat rajah pangkalan data berikut daripada pangkalan data sampel.
Kami mempunyai dua jadual: pelanggan dan pesanan Setiap pelanggan mempunyai sifar atau lebih pesanan, dan setiap pesanan hanya boleh dimiliki oleh seorang pelanggan. Hubungan antara jadual pelanggan dan jadual pesanan adalah satu-ke-banyak, dengan pesanan ditubuhkan oleh kunci asing dalam jadual yang ditentukan oleh medan customerNumber. Medan customerNumber dalam jadual pelanggan berkaitan dengan medan kunci utama customerNumber dalam jadual pesanan.
Jadual pelanggan dipanggil jadual induk atau jadual rujukan, dan jadual pesanan dipanggil jadual anak atau jadual rujukan.
Kunci asing boleh menjadi lajur atau set lajur. Lajur dalam jadual anak biasanya merujuk kepada lajur kunci utama dalam jadual induk.
Sesuatu jadual boleh mempunyai berbilang kunci asing dan setiap kunci asing dalam jadual anak boleh merujuk jadual induk yang berbeza.
Baris dalam jadual anak mesti mengandungi nilai yang wujud dalam jadual induk, contohnya, setiap rekod pesanan dalam jadual pesanan mesti mempunyai nilai yang wujud dalam nombor pelanggan jadual pelanggan. Oleh itu, berbilang pesanan boleh merujuk pelanggan yang sama, dan hubungan ini dipanggil satu (pelanggan) kepada banyak (pesanan) atau satu-ke-banyak.
Kadangkala, meja anak dan meja induk adalah sama. Kunci asing merujuk kepada kunci utama jadual, contohnya, jadual pekerja berikut:
Lajur reportTo ialah kunci asing yang merujuk kepada employeeNombor sebagai lajur kunci utama jadual pekerja untuk menggambarkan hubungan antara pekerja Struktur pelaporan di mana setiap pekerja melaporkan kepada pekerja lain, dan pekerja boleh mempunyai sifar atau lebih laporan langsung. Kami mempunyai tutorial tentang sambung sendiri yang boleh membantu anda menanyakan data terhadap jadual tersebut.
laporkan kepada kunci asing juga dikenali sebagai kunci asing rekursif atau rujukan sendiri.
Kunci asing menguatkuasakan integriti rujukan, membantu anda mengekalkan konsistensi dan integriti data anda secara automatik. Sebagai contoh, anda tidak boleh membuat pesanan untuk pelanggan yang tidak wujud.
Selain itu, anda boleh menyediakan lata pada operasi pemadaman kunci asing customerNumber supaya apabila pelanggan dipadamkan dalam jadual pelanggan, semua pesanan yang dikaitkan dengan pelanggan juga dipadamkan. Ini menjimatkan masa dan usaha menggunakan berbilang kenyataan DELETE atau DELETE JOIN kenyataan.
Sama seperti padam, anda juga boleh mentakrifkan lata untuk kunci asing customerNumber pada operasi kemas kini untuk melaksanakan kemas kini merentas jadual tanpa menggunakan berbilang penyataan KEMASKINI atau KEMASKINI kenyataan JOIN.
Nota: Dalam MySQL, enjin storan InnoDB menyokong kunci asing, jadi anda mesti mencipta jadual InnoDB untuk menggunakan kekangan kunci asing.
Apabila mysql mentakrifkan kunci asing, anda perlu mematuhi peraturan berikut:
Jadual utama mesti sudah wujud dalam pangkalan data, atau mesti semasa Jadual sedang dibuat. Jika ia adalah kes kedua, jadual induk dan jadual hamba adalah jadual yang sama dipanggil jadual rujukan sendiri, dan struktur ini dipanggil integriti rujukan sendiri.
Mesti menentukan kunci utama untuk jadual utama.
Kunci utama tidak boleh mengandungi nilai nol, tetapi nilai null dibenarkan dalam kunci asing. Iaitu, selagi setiap nilai bukan nol kunci asing muncul dalam kunci utama yang ditentukan, kandungan kunci asing adalah betul.
Nyatakan nama lajur atau gabungan nama lajur selepas nama jadual jadual utama. Lajur atau gabungan lajur ini mestilah kunci utama atau kunci calon jadual utama.
Bilangan lajur dalam kunci asing mestilah sama dengan bilangan lajur dalam kunci utama jadual utama.
Jenis data lajur dalam kunci asing mestilah sama dengan jenis data lajur yang sepadan dalam kunci utama jadual utama.
Buat kunci asing untuk jadual
MySQL Cipta Sintaks Kunci Asing
Sintaks berikut menerangkan cara untuk mencipta kunci asing dalam CREATE TABLE Kekunci asing ditakrifkan dalam jadual anak dalam pernyataan.
CONSTRAINT constraint_name FOREIGN KEY foreign_key_name (columns) REFERENCES parent_table(columns) ON DELETE action ON UPDATE action
Mari kita pelajari sintaks dengan lebih terperinci:
Klausa CONSTRAINT membolehkan anda mentakrifkan nama kekangan untuk kekangan kunci asing. Jika anda meninggalkannya, MySQL akan menjana nama secara automatik.
Klausa KUNCI ASING menentukan lajur dalam jadual anak yang merujuk kepada lajur kunci utama dalam jadual induk. Anda boleh meletakkan nama kunci asing selepas klausa KUNCI ASING, atau biarkan MySQL mencipta nama untuk anda. Ambil perhatian bahawa MySQL secara automatik mencipta indeks menggunakan nama foreign_key_name. Klausa
RUJUKAN menentukan jadual induk dan lajur yang dirujuk oleh lajur dalam jadual anak. Bilangan lajur dalam jadual anak dan jadual induk yang ditentukan KUNCI DAN RUJUKAN ASING mestilah sama.
Klausa PADAM membolehkan anda mentakrifkan perkara yang berlaku kepada rekod dalam jadual anak apabila rekod dalam jadual induk dipadamkan. Jika anda meninggalkan klausa ON DELETE dan memadam rekod dalam jadual induk yang mengandungi rekod dalam jadual anak, MySQL akan menolak untuk memadam. Selain itu, MySQL juga memberi anda tindakan supaya anda boleh menggunakan pilihan tambahan seperti ON DELETE CASCADE , yang meminta MySQL memadamkan rekod dalam jadual anak Apabila rekod dalam jadual induk dipadamkan, rekod akan merujuk rekod itu meja induk. Jika anda tidak mahu memadamkan rekod berkaitan dalam jadual anak, gunakan operasi ON DELETE SET NULL sebagai gantinya. MySQL akan menetapkan nilai lajur kunci asing dalam jadual anak kepada NULL apabila memadam rekod dalam jadual induk, syaratnya lajur kunci asing dalam jadual anak mesti menerima nilai NULL. Ambil perhatian bahawa MySQL akan menolak pemadaman jika anda menggunakan operasi ON DELETE NO ACTION atau ON DELETE RESTRICT.
Klausa ON UPDATE membenarkan anda menentukan perkara yang berlaku kepada baris dalam jadual anak apabila baris dalam jadual induk dikemas kini. Anda boleh meninggalkan klausa ON UPDATE untuk meminta MySQL menolak sebarang kemas kini pada baris dalam jadual anak apabila mengemas kini baris dalam jadual induk. Operasi ON UPDATE CASCADE membolehkan anda melakukan kemas kini silang jadual, dan apabila satu baris dalam jadual induk dikemas kini PADA SET KEMASKINI NULL, operasi menetapkan semula nilai dalam baris dalam jadual anak kepada nilai NULL. ON UPDATE NO ACTION or UPDATE HAD tindakan untuk menolak sebarang kemas kini.
MySQL Create Table Foreign Key Contoh
Contoh berikut mencipta pangkalan data dbdemo dan dua jadual: kategori dan produk Setiap kategori mempunyai Satu atau lebih banyak produk dan setiap produk tergolong dalam satu kategori sahaja. Medan cat_id dalam jadual produk ditakrifkan sebagai kunci asing dengan operasi KEMASKINI ON CASCADE dan DELETE ON RESTRICT.
CREATE DATABASE IF NOT EXISTS dbdemo; USE dbdemo; CREATE TABLE categories( cat_id int not null auto_increment primary key, cat_name varchar(255) not null, cat_description text ) ENGINE=InnoDB; CREATE TABLE products( prd_id int not null auto_increment primary key, prd_name varchar(355) not null, prd_price decimal, cat_id int not null, FOREIGN KEY fk_cat(cat_id) REFERENCES categories(cat_id) ON UPDATE CASCADE ON DELETE RESTRICT )ENGINE=InnoDB;
Tambah kunci asing pada jadual
MySQL tambahkan sintaks kunci asing
Kepada tambah kunci asing pada jadual sedia ada, gunakan pernyataan ALTER TABLE dengan sintaks definisi kunci asing di atas:
ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY foreign_key_name(columns) REFERENCES parent_table(columns) ON DELETE action ON UPDATE action;
MySQL Add Foreign Key Contoh
Sekarang, mari tambah jadual baharu yang dipanggil vendor dan tukar jadual produk untuk memasukkan medan ID vendor:
USE dbdemo; CREATE TABLE vendors( vdr_id int not null auto_increment primary key, vdr_name varchar(255) )ENGINE=InnoDB; ALTER TABLE products ADD COLUMN vdr_id int not null AFTER cat_id;
Untuk menambah produk kunci asing pada jadual, gunakan pernyataan berikut:
ALTER TABLE products ADD FOREIGN KEY fk_vendor(vdr_id) REFERENCES vendors(vdr_id) ON DELETE NO ACTION ON UPDATE CASCADE;
Kini, jadual produk mempunyai dua kunci asing, satu merujuk kepada jadual kategori dan satu lagi merujuk kepada jadual vendor.
[Cadangan berkaitan: tutorial video mysql]
Atas ialah kandungan terperinci mysql tidak menyokong kunci asing. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



MySQL sesuai untuk pemula kerana mudah dipasang, kuat dan mudah untuk menguruskan data. 1. Pemasangan dan konfigurasi mudah, sesuai untuk pelbagai sistem operasi. 2. Menyokong operasi asas seperti membuat pangkalan data dan jadual, memasukkan, menanyakan, mengemas kini dan memadam data. 3. Menyediakan fungsi lanjutan seperti menyertai operasi dan subqueries. 4. Prestasi boleh ditingkatkan melalui pengindeksan, pengoptimuman pertanyaan dan pembahagian jadual. 5. Sokongan sokongan, pemulihan dan langkah keselamatan untuk memastikan keselamatan data dan konsistensi.

Navicat sendiri tidak menyimpan kata laluan pangkalan data, dan hanya boleh mengambil kata laluan yang disulitkan. Penyelesaian: 1. Periksa Pengurus Kata Laluan; 2. Semak fungsi "Ingat Kata Laluan" Navicat; 3. Tetapkan semula kata laluan pangkalan data; 4. Hubungi pentadbir pangkalan data.

Buat pangkalan data menggunakan Navicat Premium: Sambungkan ke pelayan pangkalan data dan masukkan parameter sambungan. Klik kanan pada pelayan dan pilih Buat Pangkalan Data. Masukkan nama pangkalan data baru dan set aksara yang ditentukan dan pengumpulan. Sambung ke pangkalan data baru dan buat jadual dalam penyemak imbas objek. Klik kanan di atas meja dan pilih masukkan data untuk memasukkan data.

Menyalin jadual di MySQL memerlukan membuat jadual baru, memasukkan data, menetapkan kunci asing, menyalin indeks, pencetus, prosedur tersimpan, dan fungsi. Langkah -langkah khusus termasuk: mewujudkan jadual baru dengan struktur yang sama. Masukkan data dari jadual asal ke dalam jadual baru. Tetapkan kekangan utama asing yang sama (jika jadual asal mempunyai satu). Buat indeks yang sama. Buat pencetus yang sama (jika jadual asal mempunyai satu). Buat prosedur atau fungsi yang disimpan yang sama (jika jadual asal digunakan).

Lihat pangkalan data MySQL dengan arahan berikut: Sambungkan ke pelayan: MySQL -U Pengguna Nama -P Kata Laluan Run Show pangkalan data; Perintah untuk mendapatkan semua pangkalan data yang sedia ada Pilih pangkalan data: Gunakan nama pangkalan data; Lihat Jadual: Tunjukkan Jadual; Lihat Struktur Jadual: Huraikan nama jadual; Lihat data: pilih * dari nama jadual;

Navicat untuk MariaDB tidak dapat melihat kata laluan pangkalan data secara langsung kerana kata laluan disimpan dalam bentuk yang disulitkan. Untuk memastikan keselamatan pangkalan data, terdapat tiga cara untuk menetapkan semula kata laluan anda: Tetapkan semula kata laluan anda melalui Navicat dan tetapkan kata laluan yang kompleks. Lihat fail konfigurasi (tidak disyorkan, risiko tinggi). Gunakan alat baris perintah sistem (tidak disyorkan, anda perlu mahir dalam alat baris arahan).

Langkah -langkah untuk melaksanakan SQL di Navicat: Sambungkan ke pangkalan data. Buat tetingkap editor SQL. Tulis pertanyaan SQL atau skrip. Klik butang Run untuk melaksanakan pertanyaan atau skrip. Lihat hasilnya (jika pertanyaan dilaksanakan).

Anda boleh membuat sambungan MySQL baru di Navicat dengan mengikuti langkah -langkah: Buka aplikasi dan pilih Sambungan Baru (Ctrl N). Pilih "MySQL" sebagai jenis sambungan. Masukkan nama host/alamat IP, port, nama pengguna, dan kata laluan. (Pilihan) Konfigurasikan pilihan lanjutan. Simpan sambungan dan masukkan nama sambungan.
