Adakah mysql mempunyai tatasusunan?
Tiada jenis tatasusunan dalam MySQL elemen Tatasusunan biasanya dibahagikan dengan aksara tertentu dan disimpan dalam bentuk rentetan. Sebab tiada tatasusunan dalam MYSQL adalah kerana kebanyakan orang tidak benar-benar memerlukannya. Dalam pangkalan data hubungan, biasanya menggunakan model hubungan, setiap unit maklumat sebaiknya diberikan kepada baris jadual yang berasingan. Sebagai contoh, seseorang mungkin berfikir "Saya mahu senarai perkara" dan sebaliknya mencipta jadual baharu yang mengaitkan baris daripada satu jadual ke baris daripada jadual lain, ini boleh mewakili perhubungan "M:N". Pangkalan data boleh mengindeks baris ini biasanya tidak diindeks.
1 Tatasusunan disimpan dalam bentuk rentetan dalam MySQL
Tiada jenis tatasusunan dalam MySQL biasanya dibahagikan kepada rentetan oleh a aksara tertentu. Storan dalam bentuk
1.1 Cari bilangan elemen dalam tatasusunan
kaedah: Pisahkan rentetan mengikut simbol yang ditentukan dan kembalikan nombor elemen selepas berpecah. Keputusan yang diperlukan boleh diperolehi dengan mengira bilangan pembatas dalam rentetan dan menambah 1. Kaedahnya sangat mudah.
<code>CREATE function Get_StrArrayLength <br/>( <br/>@str varchar(1024), --要分割的字符串 <br/>@split varchar(10) --分隔符号 <br/>) <br/>returns int <br/>as <br/>begin <br/>declare @location int <br/>declare @start int <br/>declare @length int <br/>set @str=ltrim(rtrim(@str)) <br/>set @location=charindex(@split,@str) <br/>set @length=1 <br/>while @location<>0 <br/>begin <br/>set @start=@location+1 <br/>set @location=charindex(@split,@str,@start) <br/>set @length=@length+1 <br/>end <br/>return @length <br/>end<br/></code>
Contoh panggilan:
select Get_StrArrayLength('78,1,2,3',',')
Nilai pulangan:
4
1.2 Dapatkan elemen pada kedudukan yang ditentukan dalam tatasusunan
kaedah: Pisahkan rentetan mengikut simbol yang ditentukan dan kembalikan elemen indeks yang ditentukan selepas pemisahan (perhatikan bahawa indeks bermula dari 1), semudah tatasusunan
<code>CREATE function Get_StrArrayStrOfIndex <br/>( <br/>@str varchar(1024), --要分割的字符串 <br/>@split varchar(10), --分隔符号 <br/>@index int --取第几个元素 <br/>) <br/>returns varchar(1024) <br/>as <br/>begin <br/>declare @location int <br/>declare @start int <br/>declare @next int <br/>declare @seed int <br/>set @str=ltrim(rtrim(@str)) <br/>set @start=1 <br/>set @next=1 <br/>set @seed=len(@split) <br/>set @location=charindex(@split,@str) <br/>while @location<>0 and @index>@next <br/>begin <br/>set @start=@location+@seed <br/>set @location=charindex(@split,@str,@start) <br/>set @next=@next+1 <br/>end <br/>if @location =0 select @location =len(@str)+1 <br/>--这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。 <br/>return substring(@str,@start,@location-@start) <br/>end<br/></code>
Contoh panggilan:
select Get_StrArrayStrOfIndex('8,9,4',',',2)
Nilai pulangan:
9
1.3. Gabungkan dua fungsi di atas untuk melintasi elemen dalam tatasusunan
Kaedah: Gabungkan dua fungsi di atas untuk melintasi elemen dalam rentetan seperti tatasusunan
<code>declare @str varchar(50) <br/>set @str='1,2,3,4,5' <br/>declare @next int <br/>set @next=1 <br/>while @next<=Get_StrArrayLength(@str,',') <br/>begin <br/>print Get_StrArrayStrOfIndex(@str,',',@next) <br/>set @next=@next+1 <br/>end<br/></code>
Hasil panggilan:
1 2 3 4 5
2 Contoh menyimpan tatasusunan (senarai) dalam MySQL
Saya mempunyai dua jadual. dalam MySQL. Orang jadual mempunyai lajur berikut:
id | name | fruits
Lajur buah boleh mengandungi kosong atau tatasusunan rentetan seperti ('epal', 'oren', 'pisang') atau ('strawberi') dsb. Jadual kedua ialah Table Fruit dan mempunyai tiga lajur berikut:
____________________________ fruit_name | color | price ____________________________ apple | red | 2 ____________________________ orange | orange | 3 ____________________________ ...,...
Jadi bagaimana saya harus mereka bentuk lajur buah dalam jadual pertama supaya ia boleh menampung mendapatkan nilai daripada lajur fruit_name dalam tatasusunan String jadual kedua ? Oleh kerana tiada jenis data tatasusunan dalam MySQL, apakah yang perlu saya lakukan?
Jawapan terbaik:
Cara yang betul ialah menggunakan berbilang jadual dan menyertainya dalam pertanyaan.
Contohnya:
CREATE TABLE person ( `id` INT NOT NULL PRIMARY KEY, `name` VARCHAR(50) ); CREATE TABLE fruits ( `fruit_name` VARCHAR(20) NOT NULL PRIMARY KEY, `color` VARCHAR(20), `price` INT ); CREATE TABLE person_fruit ( `person_id` INT NOT NULL, `fruit_name` VARCHAR(20) NOT NULL, PRIMARY KEY(`person_id`, `fruit_name`) );
orang_buah jadual mengandungi baris untuk setiap buah yang dikaitkan dengan seseorang, dan secara berkesan menghubungkan orang dan jadual buah-buahan bersama-sama.
1 | "banana" 1 | "apple" 1 | "orange" 2 | "straberry" 2 | "banana" 2 | "apple"
Apabila anda ingin mendapatkan semula seseorang dan buahnya, anda boleh melakukan sesuatu seperti ini:
SELECT p.*, f.* FROM person p INNER JOIN person_fruit pf ON p.id = pf.person_id INNER JOIN fruits f ON pf.fruit_name = f.fruit_name
Arahan 1:
Sebab tiada tatasusunan dalam SQL adalah kerana kebanyakan orang tidak benar-benar memerlukannya. Pangkalan data perhubungan (itulah SQL) berfungsi menggunakan perhubungan, dan pada kebanyakan masa adalah lebih baik untuk mempunyai satu baris jadual untuk setiap "bit maklumat". Sebagai contoh, anda mungkin fikir "Saya mahu senarai perkara ", sebaliknya buat Jadual baharu yang mengaitkan baris dalam satu jadual dengan baris dalam jadual lain . [1] Dengan cara ini, anda boleh mewakili perhubungan M:N. Kelebihan lain ialah pautan ini tidak mengacaukan baris yang mengandungi item yang dipautkan. Pangkalan data boleh mengindeks baris ini. Tatasusunan biasanya tidak diindeks.
Jika anda tidak memerlukan pangkalan data hubungan, anda boleh menggunakan mis.
” mesej. Ayat yang ditulis semula: Mengikut peraturan emas, setiap atribut bukan kunci mesti memberikan maklumat yang sepadan untuk kunci dan keseluruhan fakta utama. ” Tatasusunan melakukan terlalu banyak fakta, ia menyimpan susunan (tidak berkaitan dengan perhubungan itu sendiri) (lihat di atas). jadual yang membolehkan orang membuat panggilan telefon Sekarang anda boleh mempunyai senarai panggilan telefonnya kepada setiap orang tetapi setiap orang mempunyai banyak hubungan lain dengan banyak perkara lain Adakah ini bermakna jadual orang saya harus mengandungi setiap perkara yang disambungkan kepadanya Perkara? Tidak, ia bukan milik orang itu sendiri
[1]: Tidak kira jika jadual terpaut hanya mempunyai dua lajur (kunci utama setiap jadual)! dalam jadual ini.
Nota 2:MySQL 5.7 kini menyediakan jenis data JSON untuk storan kaedah baharu yang mudah untuk data kompleks: senarai, kamus, dsb -pemetaan hubungan boleh menjadi sangat kompleks kerana Rrays tidak boleh dipetakan dengan cekap ke pangkalan data, orang biasanya membuat jadual untuk menyimpan senarai atau tatasusunan , dan menambah setiap nilai sebagai rekod, atau mungkin mengandungi lebih banyak. Bagaimana untuk menyimpan data sedemikian benar-benar bergantung pada ciri-ciri data Contohnya, sama ada senarai itu mengandungi bilangan entri yang statik atau dinamik Adakah senarai itu akan berkembang kepada berjuta-juta rekod? pada jadual ini apabila memutuskan cara menyimpan pengumpulan data ini adalah semua faktor yang perlu dipertimbangkan
Selain itu, stor data/simpan fail key:value seperti Cassandra, MongoDB, Redis, dsb. juga menyediakan penyelesaian yang baik. Perhatikan di mana data sebenarnya disimpan (jika pada cakera atau dalam ingatan). Tidak semua data perlu berada dalam pangkalan data yang sama. Sesetengah data tidak dipetakan dengan baik ke pangkalan data hubungan dan anda mungkin mempunyai sebab untuk menyimpannya di tempat lain, atau anda mungkin mahu menggunakan pangkalan data kunci: nilai dalam ingatan sebagai cache panas untuk data yang disimpan di suatu tempat pada cakera atau sebagai storan sementara Perkara seperti sesi.
Atas ialah kandungan terperinci Adakah mysql mempunyai tatasusunan?. 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

Kemahiran pemprosesan struktur data besar: Pecahan: Pecahkan set data dan proseskannya dalam bahagian untuk mengurangkan penggunaan memori. Penjana: Hasilkan item data satu demi satu tanpa memuatkan keseluruhan set data, sesuai untuk set data tanpa had. Penstriman: Baca fail atau hasil pertanyaan baris demi baris, sesuai untuk fail besar atau data jauh. Storan luaran: Untuk set data yang sangat besar, simpan data dalam pangkalan data atau NoSQL.

Prestasi pertanyaan MySQL boleh dioptimumkan dengan membina indeks yang mengurangkan masa carian daripada kerumitan linear kepada kerumitan logaritma. Gunakan PreparedStatements untuk menghalang suntikan SQL dan meningkatkan prestasi pertanyaan. Hadkan hasil pertanyaan dan kurangkan jumlah data yang diproses oleh pelayan. Optimumkan pertanyaan penyertaan, termasuk menggunakan jenis gabungan yang sesuai, membuat indeks dan mempertimbangkan untuk menggunakan subkueri. Menganalisis pertanyaan untuk mengenal pasti kesesakan; gunakan caching untuk mengurangkan beban pangkalan data;

Membuat sandaran dan memulihkan pangkalan data MySQL dalam PHP boleh dicapai dengan mengikuti langkah berikut: Sandarkan pangkalan data: Gunakan arahan mysqldump untuk membuang pangkalan data ke dalam fail SQL. Pulihkan pangkalan data: Gunakan arahan mysql untuk memulihkan pangkalan data daripada fail SQL.

Bagaimana untuk memasukkan data ke dalam jadual MySQL? Sambung ke pangkalan data: Gunakan mysqli untuk mewujudkan sambungan ke pangkalan data. Sediakan pertanyaan SQL: Tulis pernyataan INSERT untuk menentukan lajur dan nilai yang akan dimasukkan. Laksanakan pertanyaan: Gunakan kaedah query() untuk melaksanakan pertanyaan sisipan Jika berjaya, mesej pengesahan akan dikeluarkan.

Salah satu perubahan utama yang diperkenalkan dalam MySQL 8.4 (keluaran LTS terkini pada 2024) ialah pemalam "Kata Laluan Asli MySQL" tidak lagi didayakan secara lalai. Selanjutnya, MySQL 9.0 mengalih keluar pemalam ini sepenuhnya. Perubahan ini mempengaruhi PHP dan apl lain

Untuk menggunakan prosedur tersimpan MySQL dalam PHP: Gunakan PDO atau sambungan MySQLi untuk menyambung ke pangkalan data MySQL. Sediakan penyata untuk memanggil prosedur tersimpan. Laksanakan prosedur tersimpan. Proses set keputusan (jika prosedur tersimpan mengembalikan hasil). Tutup sambungan pangkalan data.

Mencipta jadual MySQL menggunakan PHP memerlukan langkah berikut: Sambung ke pangkalan data. Buat pangkalan data jika ia tidak wujud. Pilih pangkalan data. Buat jadual. Laksanakan pertanyaan. Tutup sambungan.

Pangkalan data Oracle dan MySQL adalah kedua-dua pangkalan data berdasarkan model hubungan, tetapi Oracle lebih unggul dari segi keserasian, skalabiliti, jenis data dan keselamatan manakala MySQL memfokuskan pada kelajuan dan fleksibiliti dan lebih sesuai untuk set data bersaiz kecil. ① Oracle menyediakan pelbagai jenis data, ② menyediakan ciri keselamatan lanjutan, ③ sesuai untuk aplikasi peringkat perusahaan ① MySQL menyokong jenis data NoSQL, ② mempunyai langkah keselamatan yang lebih sedikit, dan ③ sesuai untuk aplikasi bersaiz kecil hingga sederhana.
