INSERT INTO VALUES() pernyataan

Kami telah mengetahui cara membuat jadual, mari kita lihat secara terperinci cara menambah data pada jadual menggunakan pertanyaan SQL.

Sebenarnya, sangat mudah untuk melakukan ini, tetapi terdapat beberapa nuansa. Pilihan paling mudah untuk memasukkan data ke dalam jadual memerlukan menentukan dua perkara:

  • nama lajur
  • nilai lajur (data)

Nama lajur mesti dinyatakan, kerana selalunya lajur mempunyai nilai lalai yang tidak dinyatakan semasa memasukkan data. Dan biasanya setiap jadual mempunyai sekurang-kurangnya satu lajur sedemikian, contohnya id baris.

Bentuk umum pertanyaan untuk memasukkan data ke dalam jadual kelihatan seperti ini:

INSERT INTO table (column1, column2, column3) VALUES
    (value1, value2, value3),
    (value1, value2, value3),
    (value1, value2, value3);

Contohnya, jika anda ingin memasukkan rekod baharu ke dalam jadual pengguna, beginilah rupa pertanyaan:

INSERT INTO user (name, level, created_time) VALUES
	('Rabinovich', 5, ‘2022-06-06’);

INSERT INTO SELECT kenyataan

Satu lagi senario biasa untuk memasukkan data ke dalam jadual ialah mengambilnya daripada jadual, skema, atau DBMS yang lain.

Untuk melakukan ini, terdapat satu lagi INSERT INTO format pertanyaan, di mana, bukannya bahagian VALUES, anda boleh menentukan pertanyaan untuk memilih data.

Bentuk umum permintaan sedemikian ialah:

INSERT INTO table (column1, column2, column3)
SELECT-request;

Mari tulis pertanyaan yang akan menambah semua pengguna daripada jadual pekerja ke jadual pengguna:

INSERT INTO user (name, created_time)
   SELECT employee.name, employee.join_date
   FROM employee;

Kami mempunyai pelbagai data dalam jadual pekerja, tetapi daripada mereka kami hanya memilih dua medan - nama dan masa ketibaan di syarikat.

Juga, jadual pengguna memerlukan anda untuk menentukan tahap pengguna - tahap. Pekerja tidak mempunyai tahap dalam jadual pekerja, jadi kami akan menggunakan fakta bahawa jadual pengguna mempunyai nilai lalai untuk medan tahap. Kami hanya tidak menentukan tahap dan SQL akan menetapkan nilai lalai.

Katakan kami tidak berpuas hati dengan nilai lalai, dan kami mahu tahapnya menjadi 99, dan menggantikan user.created_time dengan tarikh hari ini, maka kami boleh menulis ini:

INSERT INTO user (name, level, created_time)
   SELECT employee.name, 99, CURDATE()
   FROM employee;

Banyak lagi yang boleh dilakukan, tetapi saya rasa ini sudah memadai buat masa ini. Anda boleh membaca lebih lanjut di halaman MySQL rasmi.