Mariadb 学習のまとめ (4): データの挿入、削除、変更

WBOY
リリース: 2024-07-18 19:06:39
オリジナル
1124 人が閲覧しました
MASUKKAN data masukkan

INSERT format pernyataan:

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
 [INTO] tbl_name [PARTITION (partition_list)] [(col,...)]
 {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
 [ ON DUPLICATE KEY UPDATE
   col=expr
     [, col=expr] ... ]
ログイン後にコピー

Struktur meja adalah seperti berikut:

MariaDB [mydb]> DESC user;
+----------+-------------+------+-----+---------------------+----------------+
| Field    | Type        | Null | Key | Default             | Extra          |
+----------+-------------+------+-----+---------------------+----------------+
| id       | int(11)     | NO   | PRI | NULL                | auto_increment |
| username | varchar(10) | NO   |     | NULL                |                |
| password | varchar(10) | NO   |     | NULL                |                |
| regtime  | timestamp   | NO   |     | CURRENT_TIMESTAMP   |                |
| logtime  | timestamp   | NO   |     | 0000-00-00 00:00:00 |                |
| logip    | varchar(20) | YES  |     | NULL                |                |
+----------+-------------+------+-----+---------------------+----------------+
6 rows in set (0.01 sec)
ログイン後にコピー
Masukkan sekeping data
MariaDB [mydb]> INSERT INTO user VALUES(1,'test','test',NOW(),NOW(),'127.0.0.1');
ログイン後にコピー

Oleh kerana dalam banyak kes beberapa nilai adalah lalai, jadi kami boleh menentukan lajur untuk memasukkan data, manakala lajur lain menggunakan nilai lalai, seperti berikut:

MariaDB [mydb]> INSERT INTO user(username,password) VALUES('test2','test2');
ログイン後にコピー

Begitu juga, memasukkan data lajur tertentu juga boleh ditulis seperti ini:

MariaDB [mydb]> INSERT INTO user SET username='test3',password='test3';
ログイン後にコピー

Ini hanya akan memasukkan nama pengguna dan kata laluan, dan menggunakan nilai lalai untuk nilai lain.

MariaDB [mydb]> SELECT * FROM user;
+----+----------+----------+---------------------+---------------------+-----------+
| id | username | password | regtime             | logtime             | logip     |
+----+----------+----------+---------------------+---------------------+-----------+
|  1 | test     | test     | 2018-02-24 15:43:41 | 2018-02-24 15:43:41 | 127.0.0.1 |
|  2 | test2    | test2    | 2018-02-24 15:45:16 | 0000-00-00 00:00:00 | NULL      |
|  3 | test3    | test3    | 2018-02-24 15:46:56 | 0000-00-00 00:00:00 | NULL      |
+----+----------+----------+---------------------+---------------------+-----------+
3 rows in set (0.00 sec)
ログイン後にコピー
Masukkan berbilang baris data

Banyak kali kita perlu menggunakan satu pernyataan INSERT untuk memasukkan berbilang rekod ke dalam jadual data Kita boleh menulisnya seperti ini:

MariaDB [mydb]> INSERT INTO user(username,password) VALUES('test4','test4'),('test5',
    -> 'test5');
ログイン後にコピー
Keutamaan yang tidak dapat dijelaskan?

Mariadb 学習のまとめ (4): データの挿入、削除、変更

Apabila enjin storan yang digunakan (MyISAM, MEMORY, MERGE) menggunakan kunci aras meja, anda boleh menggunakan dua kata kunci LOW_PRIORITY | Apabila menggunakan kata kunci LOW_PRIORITY, data ditulis apabila tiada pelanggan membaca jadual sekali lagi.
Apabila HIGH_PRIORITY digunakan, pernyataan INSERT mempunyai keutamaan yang sama dengan pernyataan SELECT. (dasar lalai)

Jadi, apabila pernyataan SELECT dilaksanakan sebelum pernyataan INSERT dilaksanakan, INSERT menyekat dan menunggu SELECT dibaca, tetapi pada masa ini, jika SELECT memasuki jadual sekali lagi, SELECT disekat (kunci baca boleh dibaca secara langsung), tetapi pada masa ini kerana Penyataan INSERT mempunyai keutamaan yang sama seperti pernyataan SELECT, jadi SELECT tidak boleh dilaksanakan sehingga INSERT selesai, jadi INSERT boleh menambah LOW_PRIORITY untuk mengoptimumkan kelajuan bacaan.

Baca perlahan-lahan di sini, saya tidak tahu banyak tentang kunci.

Ubah suai data
KEMASKINI sintaks pernyataan adalah seperti berikut:

UPDATE [LOW_PRIORITY] [IGNORE] table_reference 
  [PARTITION (partition_list)]
  SET col1={expr1|DEFAULT} [,col2={expr2|DEFAULT}] ...
  [WHERE where_condition]
  [ORDER BY ...]
  [LIMIT row_count]
ログイン後にコピー
Kemas kini semua
Apabila klausa WHERE tidak digunakan untuk mengekang syarat pemilihan, semua data dikemas kini Sebagai contoh, masa log masuk semua rekod dalam jadual pengguna diubah suai menjadi sekarang:

MariaDB [mydb]> UPDATE user SET logtime=NOW();
Query OK, 5 rows affected (0.01 sec)
Rows matched: 5  Changed: 5  Warnings: 0
ログイン後にコピー
Kemas kini IP log masuk tiga orang berdaftar pertama kepada 127.0.0.1
MariaDB [mydb]> UPDATE user SET logip='127.0.0.1' ORDER BY regtime LIMIT 3;
ログイン後にコピー
Pernyataan ORDER BY boleh digunakan dalam SELECT UPDATE DELETE, dsb., untuk menunjukkan susunan medan jadual yang harus diikuti semasa mengeluarkan, memadam dan mengemas kini jadual.

Sebagai contoh, dalam perkara di atas, ORDER BY regtime mengatur kemas kini dalam susunan positif mengikut masa pendaftaran dan hanya mengemas kini tiga baris pertama dengan pernyataan LIMIT.

Gunakan DESC untuk menentukan susunan imbas kembali, contohnya: ORDER BY regtime DESC

LIMIT pernyataan: digunakan untuk mengehadkan bilangan hasil pertanyaan.

Penggunaan:

LIMIT[位置偏移量,]行数
ログイン後にコピー
Barisan pertama bermula pada 0, jadi yang berikut:

SELECT * FROM user LIMIT 2,2;  //从第3行开始,取两行,即取第3、4条记录。
ログイン後にコピー
Gunakan pernyataan WHERE untuk memilih baris tertentu untuk kemas kini
MariaDB [mydb]> UPDATE user SET logip='192.168.1.2' WHERE username='test2';
ログイン後にコピー
Oleh kerana terdapat banyak perkara dalam klausa WHERE, saya tidak akan menyiarkan terlalu banyak kandungan di sini.

KEUTAMAAN_RENDAH: Ini sama dengan KEUTAMAAN_RENDAH INSERT.

GANTIKAN kenyataan
MariaDB [mydb]> REPLACE INTO user VALUES(1,'test111','test111',NOW(),NOW(),'192.168.1.1');
ログイン後にコピー
Pernyataan di atas ialah SQL lanjutan MariaDB, yang bersamaan dengan memadamkan rekod pendua (kunci utama atau indeks unik) dan menambah rekod baharu.

Nampak agak tawar? ....

Padam data

DELETE语语法:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] 
    FROM tbl_name [PARTITION (partition_list)]
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]
    [RETURNING select_expr 
      [, select_expr ...]]
ログイン後にコピー
删除所有数据

不使用WHERE语句来约束条件时,则删除所有数据,如下:

MariaDB [mydb]> DELETE FROM user;
ログイン後にコピー
使用WHERE语句约束选中行
MariaDB [mydb]> DELETE FROM user WHERE username='test1';
ログイン後にコピー

那么?这篇文章就简单写到这吧~~

以上がMariadb 学習のまとめ (4): データの挿入、削除、変更の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:linuxprobe.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!