Dalam mysql, nilai pulangan penyata sisipan ialah ID data baharu. Pernyataan INSERT digunakan untuk memasukkan satu atau lebih baris data tuple ke dalam jadual sedia ada dalam pangkalan data Sintaks ialah "INSERT INTO table(column1,column2...) VALUES (value1,value2,...);"; "INSERT INTO" Tanda kurungan selepas klausa menyatakan nama jadual dan senarai lajur yang dipisahkan koma.
Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.
Nilai pulangan sisipan ialah ID data baharu. Sudah tentu, premisnya ialah pangkalan data menyokong kunci utama ID penambahan automatik jika tiada kunci utama penambahan automatik ditentukan, nombor khas akan dikembalikan.
Selepas pangkalan data dan jadual berjaya dibuat, data perlu dimasukkan ke dalam jadual pangkalan data. Dalam MySQL, anda boleh menggunakan pernyataan INSERT untuk memasukkan satu atau lebih baris data tuple ke dalam jadual sedia ada dalam pangkalan data.
1. Kenyataan INSERT MySQL yang ringkas
MySQL INSERT
pernyataan digunakan untuk memasukkan satu atau lebih baris ke dalam jadual. Sintaks pernyataan INSERT
digambarkan di bawah:
INSERT INTO table(column1,column2...) VALUES (value1,value2,...);
Pertama , selepas klausa INSERT INTO
, nyatakan nama jadual dan senarai lajur yang dipisahkan koma dalam kurungan .
Kemudian , letakkan nilai dipisahkan koma dari lajur yang sepadan dalam kurungan selepas kata kunci VALUES
.
Sebelum melaksanakan pernyataan sisipan, anda perlu mempunyai kebenaran INSERT
untuk melaksanakan pernyataan INSERT
.
Mari kita cipta jadual baharu bernama tasks
untuk mempraktikkan pernyataan INSERT
, rujuk kenyataan cipta berikut -
USE testdb; CREATE TABLE IF NOT EXISTS tasks ( task_id INT(11) AUTO_INCREMENT, subject VARCHAR(45) DEFAULT NULL, start_date DATE DEFAULT NULL, end_date DATE DEFAULT NULL, description VARCHAR(200) DEFAULT NULL, PRIMARY KEY (task_id) )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Contohnya, jika anda ingin memasukkan tugasan ke dalam jadual tasts
, gunakan pernyataan INSERT
seperti berikut:
INSERT INTO tasks(subject,start_date,end_date,description) VALUES('Learn MySQL INSERT','2017-07-21','2017-07-22','Start learning..');
Selepas melaksanakan pernyataan ini, MySQL mengembalikan mesej untuk memberitahu bilangan baris yang terjejas. Dalam kes ini, satu baris terjejas.
Sekarang gunakan pernyataan berikut untuk menanyakan data dalam tasks
, seperti yang ditunjukkan di bawah-
SELECT * FROM tasks;
Laksanakan pernyataan pertanyaan di atas dan dapatkan keputusan berikut-
+---------+--------------------+------------+------------+------------------+ | task_id | subject | start_date | end_date | description | +---------+--------------------+------------+------------+------------------+ | 1 | Learn MySQL INSERT | 2017-07-21 | 2017-07-22 | Start learning.. | +---------+--------------------+------------+------------+------------------+ 1 row in set
2. MySQL INSERT - Masukkan berbilang baris
Jika anda ingin memasukkan berbilang baris ke dalam jadual pada satu masa, anda boleh menggunakan INSERT
pernyataan dengan sintaks berikut:
INSERT INTO table(column1,column2...) VALUES (value1,value2,...), (value1,value2,...), ...;
Dalam borang ini, senarai nilai untuk setiap baris dipisahkan dengan koma. Contohnya, untuk memasukkan berbilang baris ke dalam jadual tasks
, gunakan pernyataan berikut:
INSERT INTO tasks(subject,start_date,end_date,description) VALUES ('任务-1','2017-01-01','2017-01-02','Description 1'), ('任务-2','2017-01-01','2017-01-02','Description 2'), ('任务-3','2017-01-01','2017-01-02','Description 3');
Selepas melaksanakan pernyataan di atas, kembalikan -
Query OK, 3 rows affected Records: 3 Duplicates: 0 Warnings: 0
Sekarang tanyakan tasks
jadual Data dalam adalah seperti berikut-
select * from tasks;
Laksanakan pernyataan pertanyaan di atas dan dapatkan keputusan berikut-
+---------+--------------------+------------+------------+------------------+ | task_id | subject | start_date | end_date | description | +---------+--------------------+------------+------------+------------------+ | 1 | Learn MySQL INSERT | 2017-07-21 | 2017-07-22 | Start learning.. | | 2 | 任务-1 | 2017-01-01 | 2017-01-02 | Description 1 | | 3 | 任务-2 | 2017-01-01 | 2017-01-02 | Description 2 | | 4 | 任务-3 | 2017-01-01 | 2017-01-02 | Description 3 | +---------+--------------------+------------+------------+------------------+ 4 rows in set
Jika anda menentukan nilai-nilai lajur yang sepadan untuk semua lajur dalam jadual, anda boleh Abaikan senarai lajur dalam INSERT
pernyataan seperti ini:
INSERT INTO table VALUES (value1,value2,...);
atau -
INSERT INTO table VALUES (value1,value2,...), (value1,value2,...), ...;
Ambil perhatian bahawa ia tidak perlu untuk menambah automatik lajur (cth.
taskid
lajur) kerana MySQL secara automatik menjana nilai untuk lajur penambahan automatik.
3. MySQL INSERT dengan klausa SELECT
Dalam MySQL, anda boleh menggunakan lajur dan nilai yang dikembalikan oleh SELECT pernyataan untuk Mengisi nilai pernyataan INSERT
. Ciri ini sangat mudah kerana anda boleh menyalin jadual sepenuhnya atau sebahagiannya menggunakan klausa INSERT
dan SELECT
seperti ini:
INSERT INTO table_1 SELECT c1, c2, FROM table_2;
Katakan anda ingin menyalin jadual tasks
ke tasks_bak
meja.
Pertama , buat jadual baharu bernama tasks
dengan menyalin struktur jadual tasks_bak
seperti berikut:
CREATE TABLE tasks_bak LIKE tasks;
Langkah kedua , gunakan pernyataan INSERT
berikut untuk memasukkan data dalam jadual tasks
ke dalam jadual tasks_bak
:
INSERT INTO tasks_bak SELECT * FROM tasks;
Langkah ketiga , tandakan tasks_bak
Data dalam jadual untuk melihat sama ada salinan daripada jadual tasks
sebenarnya telah dilengkapkan.
mysql> select * from tasks; +---------+--------------------+------------+------------+------------------+ | task_id | subject | start_date | end_date | description | +---------+--------------------+------------+------------+------------------+ | 1 | Learn MySQL INSERT | 2017-07-21 | 2017-07-22 | Start learning.. | | 2 | 任务-1 | 2017-01-01 | 2017-01-02 | Description 1 | | 3 | 任务-2 | 2017-01-01 | 2017-01-02 | Description 2 | | 4 | 任务-3 | 2017-01-01 | 2017-01-02 | Description 3 | +---------+--------------------+------------+------------+------------------+ 4 rows in set
4 INSERT MySQL dan PADA KEMASKINI KUNCI DUA
Jika baris baharu melanggar kunci utama (KUNCI UTAMA) atau <.> kekangan , ralat akan berlaku dalam MySQL. Sebagai contoh, jika anda melaksanakan penyataan berikut: UNIQUE
INSERT INTO tasks(task_id,subject,start_date,end_date,description) VALUES (4,'Test ON DUPLICATE KEY UPDATE','2017-01-01','2017-01-02','Next Priority');
Error Code: 1062. Duplicate entry '4' for key 'PRIMARY' 0.016 sec
lajur dalam jadual sudah wujud Terdapat baris dengan nilai task_id
, jadi pernyataan itu melanggar kekangan 4
. PRIMARY KEY
, MySQL akan memasukkan baris baharu atau mengemas kini rekod baris asal dengan nilai baharu. INSERT
ialah task_id
dengan subject
dan task_id
baharu. 4
INSERT INTO tasks(task_id,subject,start_date,end_date,description) VALUES (4,'Test ON DUPLICATE KEY UPDATE','2017-01-01','2017-01-02','Next Priority') ON DUPLICATE KEY UPDATE task_id = task_id + 1, subject = 'Test ON DUPLICATE KEY UPDATE';
terjejas. Sekarang, mari kita lihat data dalam jadual 2
: tasks
mysql> select * from tasks; +---------+------------------------------+------------+------------+------------------+ | task_id | subject | start_date | end_date | description | +---------+------------------------------+------------+------------+------------------+ | 1 | Learn MySQL INSERT | 2017-07-21 | 2017-07-22 | Start learning.. | | 2 | 任务-1 | 2017-01-01 | 2017-01-02 | Description 1 | | 3 | 任务-2 | 2017-01-01 | 2017-01-02 | Description 2 | | 5 | Test ON DUPLICATE KEY UPDATE | 2017-01-01 | 2017-01-02 | Description 3 | +---------+------------------------------+------------+------------+------------------+ 4 rows in set
task_id
dikemas kini. Pernyataan 4
di atas adalah bersamaan dengan pernyataan KEMASKINI berikut: INSERT ON DUPLICATE KEY UPDATE
UPDATE tasks SET task_id = task_id + 1, subject = 'Test ON DUPLICATE KEY UPDATE' WHERE task_id = 4;
【相关推荐:mysql视频教程】
Atas ialah kandungan terperinci Apakah nilai pulangan sisipan mysql?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!