


Bagaimana untuk bertanya dan mengubah suai data json dengan Mysql
Soal dan ubah suai data json
Gunakan medan->'$.json attribute' untuk pertanyaan syarat
Gunakan fungsi json_extract untuk membuat pertanyaan, json_extract(medan, "atribut $.json")
Pertanyaan berdasarkan tatasusunan json, gunakan JSON_CONTAINS(medan, JSON_OBJECT( 'json attribute', "content")): [{}] Tanya bentuk tatasusunan json ini
MySQL 5.7 atau lebih tinggi menyokong operasi JSON dan menambah jenis storan JSON
Pangkalan data umum akan menggunakan jenis JSON atau jenis TEKS untuk menyimpan data jenis JSON
Beberapa fungsi berkaitan
Contoh
Saya tidak mencipta format medan json di sini, tetapi menggunakan teks untuk menyimpan json.
Sila ambil perhatian: Jika anda ingin menggunakan jenis JSON, data yang disimpan dalam lajur mesti mematuhi format JSON, jika tidak, ralat akan berlaku. 2) Jenis data JSON tidak mempunyai nilai lalai.
Masukkan data format json ke dalam lajur ini:
{"age": "28", "pwd": "lisi", "name": "李四"}
Query
1,
select * from `offcn_off_main` where json_extract(json_field,"$.name") = '李四'
2,
select * from `offcn_off_main` where json_field->'$.name' = '李四'
Gunakan terangkan untuk melihat bahawa indeks tidak boleh digunakan.
Jadi ia perlu diubah suai:
mysql tidak menyokong indeks atribut secara asli dalam lajur json, tetapi kami secara tidak langsung boleh mengindeks atribut tertentu dalam json melalui lajur maya mysql Prinsip mencipta indeks untuk atribut adalah untuk mencipta lajur maya untuk atribut dalam json, dan kemudian mencipta indeks untuk lajur maya, dengan itu secara tidak langsung mencipta indeks untuk atribut.
Dalam MySQL 5.7, dua jenis Lajur Terhasil disokong, iaitu Lajur Terhasil Maya dan Lajur Terhasil Tersimpan yang pertama hanya menyimpan Lajur Terhasil dalam kamus data (metadata jadual) dan tidak menyimpan lajur ini daripada data Berterusan ke cakera; Jelas sekali, yang terakhir menyimpan data yang boleh dikira daripada data sedia ada, memerlukan lebih banyak ruang cakera, dan tidak mempunyai kelebihan berbanding Lajur Maya----(Malah, saya fikir masih ada kelebihan, lagipun, akan ada kurang pertanyaan pengiraan. )
Oleh itu, dalam MySQL 5.7, jenis Lajur Dihasilkan tidak ditentukan, dan lalainya ialah Lajur Maya.
Jika Stored Generated Golumn diperlukan, mungkin lebih sesuai untuk mencipta indeks pada Virtual Generated Column Dalam keadaan biasa, Virtual Generated Column digunakan, yang juga merupakan kaedah lalai MySQL.
Formatnya adalah seperti berikut:
fieldname <type> [ GENERATED ALWAYS ] AS ( <expression> ) [ VIRTUAL|STORED ] [ UNIQUE [KEY] ] [ [PRIMARY] KEY ] [ NOT NULL ] [ COMMENT <text> ]
Jadi di sini saya:
ALTER TABLE 'off_main' `names_virtual` VARCHAR(20) GENERATED ALWAYS AS (`json_field` ->> '$.name') not null;
Sila ambil perhatian: Anda boleh menggunakan operator "»" untuk merujuk kunci dalam medan JSON (KEY). Dalam contoh ini, medan maya names_virtual telah ditakrifkan sebagai tidak boleh dibatalkan. Dalam kerja sebenar, ia mesti ditentukan berdasarkan keadaan tertentu. Kerana JSON itu sendiri adalah objek data berstruktur lemah. Dengan kata lain, strukturnya tidak tetap.
Tambah indeks pada medan maya:
CREATE INDEX `names` ON `off_main`(`names_virtual`);
Perhatikan bahawa jika medan maya tidak ditambah apabila jadual dibuat, tetapi ditambah kemudian, apabila menambah indeks, jika medan maya dalam beberapa baris adalah batal, Tetapi jika ia ditetapkan kepada tidak menjadi nol, maka indeks tidak boleh dibuat dengan jayanya, dan lajur gesaan tidak boleh menjadi batal
Selepas menambah indeks, terangkan dan anda akan melihat bahawa indeks digunakan, dan nilai medan maya akan berubah dengan Sifat medan json berubah secara automatik apabila diubah suai.
Mari kita lihat pengubahsuaian
update off_main set json_field = json_set(json_field,'$.phone', '132') WHERE id = 45 //同时修改多个 UPDATE offcn_off_main set json_field = json_set(json_field,'$.name',456,'$.age','bbb') WHERE id = 45
Jika kaedah json_set() wujud, ia akan ditimpa, dan jika ia tidak wujud, ia akan ditambah.
Padam
UPDATE offcn_off_main set json_field = json_remove(json_field,'$.pwd','$.phone') WHERE id = 45
Sisipkan
UPDATE offcn_off_main set json_field = json_insert(json_field,'$.pwd','111') WHERE id = 45
Perbezaan antara sisipan dan kemas kini ialah sisipan yang tidak wujud akan ditambah, dan sisipan sedia ada tidak akan ditimpa
Mysql memproses Data json
1 Jika jumlah data adalah kecil, salin data json terus ke medan json mysql Jika data terlalu besar, anda boleh menghuraikan data json java dan bentuk latar belakang lain, dan kemudian tuliskannya ke pangkalan data.
Operasi pertanyaan
select *,json->'$.features[0].geometry.rings' as rings from JSON;
Baca sebahagian daripada data dari satu jadual dan simpan dalam jadual lain (satu keping data)
insert into DT_village(name, border) SELECT json->'$.features[0].attributes.CJQYMC',json->'$.features[0].geometry.rings' from JSON;
Baca data json dan tuliskannya ke pangkalan data (pada masa ini Kaedah ini dilaksanakan dalam bentuk fungsi yang ditentukan, dan jumlahnya boleh ditakrifkan)
#清空数据库 TRUNCATE table DT_village; #定义存储过程 delimiter // DROP PROCEDURE IF EXISTS insert_test_val; ##num_limit 要插入数据的数量,rand_limit 最大随机的数值 CREATE PROCEDURE insert_test_val() BEGIN DECLARE i int default 0; DECLARE a,b varchar(5000); WHILE i<10 do set a=CONCAT('$.features[',i,'].attributes.CJQYMC'); set b=CONCAT('$.features[',i,'].geometry.rings'); insert into DT_village(name, border) select #json->'$.features[0].attributes.CJQYMC',json->'$.features[0].geometry.rings' # (json->a),(json->b) json_extract(json,a),json_extract(json,b) from JSON; set i = i + 1; END WHILE; END // #调用存储过程 call insert_test_val();
Panggil kursor untuk mendapatkan baris dalam data jsosn, dan lakukan operasi sisipan
rreeeeAtas ialah kandungan terperinci Bagaimana untuk bertanya dan mengubah suai data json dengan Mysql. 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



Dalam pangkalan data MySQL, hubungan antara pengguna dan pangkalan data ditakrifkan oleh kebenaran dan jadual. Pengguna mempunyai nama pengguna dan kata laluan untuk mengakses pangkalan data. Kebenaran diberikan melalui perintah geran, sementara jadual dibuat oleh perintah membuat jadual. Untuk mewujudkan hubungan antara pengguna dan pangkalan data, anda perlu membuat pangkalan data, membuat pengguna, dan kemudian memberikan kebenaran.

Penyederhanaan Integrasi Data: AmazonRDSMYSQL dan Integrasi Data Integrasi Zero ETL Redshift adalah di tengah-tengah organisasi yang didorong oleh data. Proses tradisional ETL (ekstrak, menukar, beban) adalah kompleks dan memakan masa, terutamanya apabila mengintegrasikan pangkalan data (seperti Amazonrdsmysql) dengan gudang data (seperti redshift). Walau bagaimanapun, AWS menyediakan penyelesaian integrasi ETL sifar yang telah mengubah keadaan ini sepenuhnya, menyediakan penyelesaian yang mudah, hampir-sebenar untuk penghijrahan data dari RDSMYSQL ke redshift. Artikel ini akan menyelam ke integrasi RDSMYSQL Zero ETL dengan redshift, menjelaskan bagaimana ia berfungsi dan kelebihan yang dibawa kepada jurutera dan pemaju data.

Untuk mengisi nama pengguna dan kata laluan MySQL: 1. Tentukan nama pengguna dan kata laluan; 2. Sambungkan ke pangkalan data; 3. Gunakan nama pengguna dan kata laluan untuk melaksanakan pertanyaan dan arahan.

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.

1. Gunakan indeks yang betul untuk mempercepatkan pengambilan data dengan mengurangkan jumlah data yang diimbas memilih*frommployeesWherElast_name = 'Smith'; Jika anda melihat lajur jadual beberapa kali, buat indeks untuk lajur tersebut. Jika anda atau aplikasi anda memerlukan data dari pelbagai lajur mengikut kriteria, buat indeks komposit 2. Elakkan pilih * Hanya lajur yang diperlukan, jika anda memilih semua lajur yang tidak diingini, ini hanya akan memakan lebih banyak pelayan dan menyebabkan pelayan melambatkan pada masa yang tinggi atau kekerapan misalnya, jadual anda

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 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.

Penjelasan terperinci mengenai atribut asid asid pangkalan data adalah satu set peraturan untuk memastikan kebolehpercayaan dan konsistensi urus niaga pangkalan data. Mereka menentukan bagaimana sistem pangkalan data mengendalikan urus niaga, dan memastikan integriti dan ketepatan data walaupun dalam hal kemalangan sistem, gangguan kuasa, atau pelbagai pengguna akses serentak. Gambaran keseluruhan atribut asid Atomicity: Transaksi dianggap sebagai unit yang tidak dapat dipisahkan. Mana -mana bahagian gagal, keseluruhan transaksi dilancarkan kembali, dan pangkalan data tidak mengekalkan sebarang perubahan. Sebagai contoh, jika pemindahan bank ditolak dari satu akaun tetapi tidak meningkat kepada yang lain, keseluruhan operasi dibatalkan. Begintransaction; UpdateAcCountSsetBalance = Balance-100Wh
