


Artikel ini membawakan anda pengetahuan yang berkaitan tentang pangkalan data mysql Ia terutamanya mengatur beberapa titik pengetahuan asas pangkalan data, termasuk pengindeksan, susunan sintaks, perintah pelaksanaan, prosedur tersimpan dan isu lain yang berkaitan semua orang.
Pembelajaran yang disyorkan: tutorial mysql
1. Pangkalan Data
1.1 Transaksi
1.1.1 Empat ciri urus niaga (ACID)
- Atomicity (
Atomicity
)
Semua operasi yang diperlukan dalam keseluruhan transaksi mesti berjaya diserahkan , atau semuanya gagal dan berguling kembali. - Ketekalan (
Consistency
)
Memastikan ketekalan data dalam pangkalan data sebelum dan selepas operasi. (Sebagai contoh, pemindahan antara berbilang akaun pengguna, tetapi jumlah keseluruhan pengguna kekal tidak berubah) - Pengasingan (
Isolation
)
Pengasingan memerlukan transaksi untuk mengubah suai data dalam pangkalan data tidak kelihatan kepada transaksi lain sehingga komit selesai. (Iaitu, urus niaga mesti dilaksanakan secara bersiri) - Kegigihan (
Durability
)
Ketahanan bermaksud sebaik sahaja transaksi diserahkan, perubahan kepada data dalam pangkalan data adalah kekal, walaupun operasi melakukan transaksi tidak akan hilang walaupun sistem pangkalan data menghadapi kegagalan.
SQL
Standard mentakrifkan empat jenis pengasingan: (Pengasingan berikut adalah dari rendah ke tinggi, dan konkurensi adalah dari tinggi ke rendah)
- Bacaan tanpa komitmen.
Tahap pengasingan paling rendah, membolehkan transaksi lain melihat data tidak komited, yang akan membawa kepada bacaan kotor. - Diserahkan untuk dibaca.
Memandangkan pangkalan data dibaca dan tulis dipisahkan, kunci baca diperoleh apabila transaksi dibaca, tetapi ia dikeluarkan serta-merta selepas kunci baca dikeluarkan, data mungkin diubah suai oleh transaksi lain , anda akan mendapati bahawa data telah dibaca sebelum dan selepas Keputusan adalah berbeza, menyebabkan bacaan tidak boleh diulang. (Kunci baca tidak perlu dilepaskan selepas transaksi dilakukan, manakala kunci tulis perlu dilepaskan selepas transaksi dilakukan.) - Bacaan berulang.
Semua data yang diperolehi olehselect
tidak boleh diubah suai, sekali gus mengelakkan bacaan tidak konsisten sebelum dan selepas transaksi. Tetapi tiada cara untuk mengawal bacaan hantu, kerana urus niaga lain tidak boleh menukar data yang dipilih pada masa ini, tetapi mereka boleh menambah data - boleh bersiri.
Semua urus niaga dilaksanakan satu demi satu untuk mengelakkan bacaan hantu Untuk pangkalan data yang melaksanakan kawalan serentak berdasarkan kunci, siri memerlukan apabila melaksanakan pertanyaan julat, kunci julat perlu diperolehi Jika konkurensi tidak dilaksanakan berdasarkan kunci Terkawal pangkalan data, apabila transaksi yang melanggar operasi bersiri dikesan, urus niaga itu perlu ditarik balik.
Ringkasan: Empat tahap dipertingkatkan secara beransur-ansur, dan setiap tahap menyelesaikan masalah Semakin tinggi tahap transaksi, semakin teruk prestasinya. Tahap pengasingan yang tidak dapat dibaca dengan bacaan yang tidak dapat dikembalikan masalah hasil bacaan yang tidak konsisten, tetapi menyebabkan bacaan hantu (bukan sebelum ini, tetapi sekarang) -> Serializable menyelesaikan bacaan hantu, tetapi menambah banyak kunci julat , boleh menyebabkan kunci tamat masa;
1.1.2 Bacaan kotor, bacaan tidak boleh berulang dan bacaan hantu
- Bacaan kotor (untuk operasi rollback): Transaksi T1 mengemas kini deretan kandungan rekod , tetapi pengubahsuaian tidak dilakukan Transaksi T2 membaca baris yang dikemas kini, dan kemudian T1 melakukan operasi rollback dan membatalkan pengubahsuaian yang baru dibuat. Kini bilangan baris yang dibaca oleh T2 adalah tidak sah (satu transaksi membaca satu lagi transaksi); rekod yang baru dibaca T1, dan kemudian T1 membaca baris rekod ini sekali lagi, dan mendapati keputusannya berbeza daripada keputusan yang baru dibaca.
- Baca hantu (untuk operasi kemas kini): Transaksi T1 membaca set hasil yang dikembalikan oleh klausa tempat yang ditentukan, dan kemudian transaksi T2 memasukkan baris rekod baharu, yang betul-betul boleh memenuhi pertanyaan yang digunakan oleh keadaan T1. Kemudian T1 mendapatkan semula jadual, tetapi melihat data yang dimasukkan oleh T2 sekali lagi. (Saya tidak melihatnya pada kali pertama, tetapi saya melihatnya kali kedua)
- 2. 🎜>
2.1.1 Kelebihan indeks
- Buat indeks unik untuk memastikan keunikan setiap baris data dalam jadual pangkalan data; Mempercepatkan perolehan data dengan ketara, yang merupakan sebab utama untuk mencipta indeks;
- Mempercepatkan pautan antara jadual pangkalan data, terutamanya dalam mencapai integriti rujukan pangkalan data; untuk mendapatkan semula, masa untuk mengumpulkan dan menyusun dalam pertanyaan juga boleh dikurangkan dengan ketara;
- Dengan menggunakan indeks, penyembunyi pengoptimuman boleh digunakan dalam pertanyaan untuk meningkatkan prestasi sistem; >2.1.2 Kelemahan Indeks
Mencipta dan menyelenggara indeks mengambil masa, dan kali ini meningkat dengan pertambahan bilangan Pengindeksan memerlukan Menduduki ruang fizikal, sebagai tambahan kepada ruang data yang diduduki oleh jadual data, setiap indeks juga menduduki jumlah ruang fizikal tertentu Jika indeks berkelompok diwujudkan, ruang yang diperlukan akan menjadi lebih besar; memadam dan mengubah suai, indeks juga perlu dikekalkan, yang mengurangkan kelajuan penyelenggaraan data; ia Tiada sekatan )
(2) Indeks unik (nilai lajur indeks mestilah unik, tetapi nilai nol dibenarkan.)- (3) Indeks kunci utama (indeks unik khas yang tidak membenarkan nilai nol) . Secara amnya, indeks kunci utama dicipta pada masa yang sama semasa mencipta jadual )
- (4) Indeks gabungan (5) Indeks berkelompok membina pokok B mengikut. kunci utama setiap jadual, dan nod daun menyimpan keseluruhan jadual. Baris jadual rekod data, jadi nod daun indeks berkelompok menjadi halaman data.
- (6) Indeks tidak berkelompok (indeks tambahan) (nod halaman tidak menyimpan keseluruhan baris rekod).
- 2.3 Ketaksahan Indeks
- (1) Jika ada atau dalam keadaan, walaupun ada syarat dengan indeks, ia tidak akan digunakan (guna atau sesedikit mungkin); (2) Pertanyaan suka bermula dengan %, contohnya, PILIH * DARI jadual saya WHEREt Nama seperti'�min';
yang biasa digunakan: Indeks myISAM Indeks Innodb Indeks memori Indeks B-Tree menyokong sokongan
Indeks hash tidak menyokong sokongan- Sokongan indeks R-Tree tidak sokongan
- Indeks TEKS penuh tidak menyokong sementara Tidak disokong Tidak disokong
- 2.5 Struktur indeks dalam pangkalan data
B-tree juga dipanggil pepohon carian berbilang laluan seimbang Ciri-ciri pokok B-tertib-m adalah seperti berikut:
- 1. Setiap nod dalam pokok mengandungi paling banyak m anak (m>=2);
- 2. Kecuali nod akar dan nod daun, setiap nod mempunyai sekurang-kurangnya (ceil (m/2)) kanak-kanak (dengan siling (x) ialah fungsi yang mengambil had atas);
- 3. Nod akar);
- 4. Semua nod daun muncul dalam lapisan yang sama, dan nod daun tidak mengandungi sebarang maklumat kata kunci (boleh dianggap sebagai nod luaran atau nod di mana pertanyaan gagal, menunjuk ke nod ini. daripada semua titik adalah nol); (Nota: Nod daun hanya tidak mempunyai anak dan penunjuk kepada kanak-kanak. Nod ini juga wujud dan mempunyai unsur. Sama seperti pokok merah-hitam, setiap penunjuk nol dianggap sebagai nod daun, tetapi terdapat tidak Lukis sahaja)

B tree

Dalam keadaan apakah ia sesuai untuk membina indeks?
(1) Untuk kata kunci yang sering muncul dalam Buat indeks pada medan mengikut susunan mengikut, kumpulan mengikut, berbeza
(2) Buat indeks pada medan set hasil kesatuan dan operasi set lain adalah sama seperti di atas;
(3) sering digunakan Tanya medan yang dipilih dan buat indeks
(4) Buat indeks pada atribut yang sering digunakan sebagai pautan jadual; data jarang dikemas kini Jika pengguna sering Untuk bertanya hanya beberapa medan, anda boleh mempertimbangkan untuk membuat indeks pada medan ini untuk menukar imbasan jadual kepada imbasan indeks.
3. Urutan sintaks Mysql Iaitu, apabila kata kunci berikut wujud dalam sql, mereka mesti mengekalkan susunan ini:

B tree

Dalam keadaan apakah ia sesuai untuk membina indeks?
(1) Untuk kata kunci yang sering muncul dalam Buat indeks pada medan mengikut susunan mengikut, kumpulan mengikut, berbeza
(2) Buat indeks pada medan set hasil kesatuan dan operasi set lain adalah sama seperti di atas;
(3) sering digunakan Tanya medan yang dipilih dan buat indeks
(4) Buat indeks pada atribut yang sering digunakan sebagai pautan jadual; data jarang dikemas kini Jika pengguna sering Untuk bertanya hanya beberapa medan, anda boleh mempertimbangkan untuk membuat indeks pada medan ini untuk menukar imbasan jadual kepada imbasan indeks.
pilih[distinct ] , dari, sertai (seperti kiri sertai), pada, di mana, kumpulandari, pada, sertai, di mana, kumpulan mengikut, mempunyai, pilih, berbeza, kesatuan, susunan mengikutoleh, mempunyai, kesatuan, perintah mengikut, had; Iaitu, apabila melaksanakan, sql dilaksanakan dalam susunan berikut:
kumpulan mengikut dan Fungsi pengagregatan digunakan bersama,
Contohnya:
untuk melaksanakan pertanyaan berbilang jadual (cantuman dalam)
Menggunakan
juga boleh mencapaiselect a.Customer,sum(a.OrderPrice) from orders a where a.Customer=’Bush’ or a.Customer = ‘Adams’ group by a.Customer;5 Prosedur tersimpan
select u.uname,a.addr from lm_user u inner join lm_addr a on u.uid = a.uid;
select from where
Panggil prosedur tersimpan
select u.uname,a.addr from lm_user u, lm_addr a where u.uid = a.uid;
Lihat prosedur tersimpan
delimiter $$ create procedure procedure_bill() comment '查询所有销售情况' begin select billid, tx_time, amt from lm_bill; end $$ delimiter ;
6. . Wujudkan hubungan jadual data many-to-many
call procedure_bill();Dalam pangkalan data, jika hubungan antara dua jadual ialah hubungan banyak-ke-banyak, seperti: "jadual jadual pelajar dan jadual kursus", pelajar boleh memilih berbilang kursus, satu kursus Ia juga boleh dipilih oleh berbilang pelajar mengikut prinsip reka bentuk pangkalan data, jadual persatuan ketiga harus dibentuk.
Langkah 1: Cipta tiga jadual data Pelajar, Kursus, Stu_Cour
show procedure status like 'procedure_bill';
Langkah 2: Tambahkan kunci asing pada jadual berkaitan Stu_Cour
Selesaikan penciptaan!
/**学生表*/ CREATE TABLE Student ( stu_id INT AUTO_INCREMENT, NAME VARCHAR(30), age INT , class VARCHAR(50), address VARCHAR(100), PRIMARY KEY(stu_id) ) /*学生课程表*/ CREATE TABLE Course( cour_id INT AUTO_INCREMENT, NAME VARCHAR(50), CODE VARCHAR(30), PRIMARY KEY(cour_id) ) /**学生课程关联表*/ CREATE TABLE Stu_Cour( sc_id INT AUTO_INCREMENT, stu_id INT , cour_id INT, PRIMARY KEY(sc_id) )
Nota: Tambahkan kunci asing pada jadual data yang ditambahkan:
- Sintaks:/*添加外键约束*/ ALTER TABLE Stu_Cour ADD CONSTRAINT stu_FK1 FOREIGN KEY(stu_id) REFERENCES Student(stu_id); ALTER TABLE Stu_Cour ADD CONSTRAINT cour_FK2 FOREIGN KEY(cour_id) REFERENCES Course(cour_id);;
- Contoh:
-
alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名)
7. Enjin pangkalan data (enjin storan)
alter table tb_active add constraint FK_ID foreign key(user_id) REFERENCES tb_user(id);
Ambil pangkalan data hubungan sebagai contoh Hantar pernyataan SQL kepada enjin pangkalan data Enjin pangkalan data mentafsir pernyataan SQL, mengekstrak data yang anda perlukan dan mengembalikannya kepada anda. Oleh itu, kepada pelawat, enjin pangkalan data adalah penterjemah pernyataan SQL.
Perbezaan utama:
tidak selamat dari segi transaksi, manakala
Ia selamat untuk transaksi;- butiran kunci ialah penguncian peringkat jadual, manakala
- menyokong penguncian peringkat baris;
MYISAM
tidak Menyokong indeks teks penuhInnoDB
- agak mudah, jadi ia lebih baik daripada
NYISAM
dari segi kecekapan aplikasi kecil boleh mempertimbangkan untuk menggunakanInnoDB
- jadual disimpan sebagai fail Borang, menggunakan storan
MYISAM
dalam pemindahan data merentas platform akan menjimatkan banyak masalah; (6) JadualInnoDB
lebih selamat daripada jadual dan boleh memastikan bahawa data tidak hilang Dalam kes ini, tukar jadual bukan transaksi kepada jadual urus niaga -
MYISAM
InnoDB
Senario aplikasi:MYISAM
.-
MYISAM
mengurus jadual bukan urus niaga Ia menyediakan storan dan pengambilan semula berkelajuan tinggi, serta keupayaan carian teks penuh Jika aplikasi perlu melakukan sejumlah besar pertanyaanselect
, makaMYISAM
ialah pilihan yang lebih baik. -
InnoDB
untuk aplikasi pemprosesan transaksi dengan pelbagai ciri termasukACID
sokongan transaksi. Jika aplikasi anda perlu melaksanakan sejumlah besar operasiinsert
atauupdate
, anda harus menggunakaninnodb
, yang boleh meningkatkan prestasi operasi serentak berbilang pengguna.
8. Paradigma pangkalan data
Pada masa ini terdapat 6 paradigma dalam pangkalan data hubungan: bentuk normal pertama {1NF}, bentuk normal kedua {2NF}, bentuk normal ketiga {3NF}, Bath —Kod bentuk normal {BCNF}, bentuk normal keempat {4NF}, bentuk normal kelima {5NF, juga dikenali sebagai bentuk normal sempurna}. Paradigma yang memenuhi keperluan minimum ialah bentuk normal pertama. Berdasarkan bentuk normal pertama, bentuk yang memenuhi lebih banyak keperluan standard dipanggil bentuk normal kedua {2NF}, dan paradigma lain mengikutinya Secara umumnya, pangkalan data hanya perlu memenuhi bentuk normal ketiga (3NF). .
Bentuk biasa:- 1NF: Pastikan setiap lajur kekal atom
- 2NF: Pastikan setiap lajur dalam jadual berkaitan dengan kunci primer (kunci primer bersama) ;
- 3NF: Pastikan setiap lajur dalam jadual berkaitan secara langsung dengan kunci utama (kunci asing); subset kunci utama (hapuskan pergantungan pada subset kunci primer berdasarkan 3NF) Pergantungan pada subset kod utama
- 4NF: memerlukan pemadaman hubungan banyak-ke-banyak dalam yang sama); jadual;
- 5NF: menetapkan semula struktur asal daripada struktur akhir;
-
Atas ialah kandungan terperinci Rizab titik pengetahuan asas pangkalan data MySQL (ringkasan tersusun). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Fungsi MySQL boleh digunakan untuk pemprosesan dan pengiraan data. 1. Penggunaan asas termasuk pemprosesan rentetan, pengiraan tarikh dan operasi matematik. 2. Penggunaan lanjutan melibatkan menggabungkan pelbagai fungsi untuk melaksanakan operasi kompleks. 3. Pengoptimuman prestasi memerlukan mengelakkan penggunaan fungsi dalam klausa WHERE dan menggunakan GroupBy dan jadual sementara.

Kaedah yang cekap untuk memasukkan data dalam MySQL termasuk: 1. Menggunakan sintaks Insertinto ... Sintaks, 2. Menggunakan perintah LoadDatainFile, 3. Menggunakan pemprosesan transaksi, 4. Laraskan saiz batch, 5. Lumpuhkan pengindeks

Di MySQL, tambah medan menggunakan alterTabletable_nameaddcolumnnew_columnvarchar (255) afterexisting_column, memadam medan menggunakan altertabletable_namedropcolumncolumn_to_drop. Apabila menambah medan, anda perlu menentukan lokasi untuk mengoptimumkan prestasi pertanyaan dan struktur data; Sebelum memadam medan, anda perlu mengesahkan bahawa operasi itu tidak dapat dipulihkan; Mengubah struktur jadual menggunakan DDL dalam talian, data sandaran, persekitaran ujian, dan tempoh masa beban rendah adalah pengoptimuman prestasi dan amalan terbaik.

Gunakan perintah Jelaskan untuk menganalisis pelan pelaksanaan pertanyaan MySQL. 1. Perintah Jelaskan memaparkan pelan pelaksanaan pertanyaan untuk membantu mencari kesesakan prestasi. 2. Pelan pelaksanaan termasuk medan seperti ID, Select_Type, Jadual, Jenis, Kemungkinan_Keys, Key, Key_Len, Ref, Rows dan Extra. 3. Menurut pelan pelaksanaan, anda boleh mengoptimumkan pertanyaan dengan menambahkan indeks, mengelakkan imbasan meja penuh, mengoptimumkan operasi gabungan, dan menggunakan indeks overlay.

Subqueries boleh meningkatkan kecekapan pertanyaan MySQL. 1) Subquery memudahkan logik pertanyaan kompleks, seperti penapisan data dan mengira nilai agregat. 2) Pengoptimal MySQL boleh menukar subqueries untuk menyertai operasi untuk meningkatkan prestasi. 3) Menggunakan wujud dan bukannya boleh mengelakkan pelbagai baris yang mengembalikan kesilapan. 4) Strategi pengoptimuman termasuk mengelakkan subqueries yang berkaitan, menggunakan wujud, pengoptimuman indeks, dan mengelakkan bersarang subquery.

Kaedah untuk mengkonfigurasi set aksara dan kolasi dalam MySQL termasuk: 1. Menetapkan set aksara dan kolasi di peringkat pelayan: setNames'utf8 '; Setcharactersetutf8; SetCollation_Connection = 'UTF8_GENERAL_CI'; 2. Buat pangkalan data yang menggunakan set aksara tertentu dan kolasi: createdataTabaseexample_dbcharactersetutf8collateutf8_general_ci; 3. Nyatakan set aksara dan kolasi semasa membuat jadual: createTableExample_table (idint

Untuk selamat dan teliti menyahpasang MySQL dan membersihkan semua fail sisa, ikuti langkah -langkah berikut: 1. Hentikan perkhidmatan MySQL; 2. Nyahpasang pakej MySQL; 3. Fail konfigurasi bersih dan direktori data; 4. Sahkan bahawa pemotongan adalah menyeluruh.

Menamakan semula pangkalan data dalam MySQL memerlukan kaedah tidak langsung. Langkah -langkah adalah seperti berikut: 1. Buat pangkalan data baru; 2. Gunakan mysqldump untuk mengeksport pangkalan data lama; 3. Import data ke dalam pangkalan data baru; 4. Padam pangkalan data lama.


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

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).
