Maison > Article > Tutoriel système > Résumé d'apprentissage Mariadb (4) : insertion, suppression et modification de données
INSÉRER le format de la déclaration :
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] ... ]
La structure du tableau est la suivante :
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)
MariaDB [mydb]> INSERT INTO user VALUES(1,'test','test',NOW(),NOW(),'127.0.0.1');
Parce que dans de nombreux cas, certaines valeurs sont par défaut, nous pouvons donc spécifier pour quelles colonnes insérer des données, tandis que d'autres colonnes utilisent des valeurs par défaut, comme suit :
MariaDB [mydb]> INSERT INTO user(username,password) VALUES('test2','test2');
De même, l'insertion de données de colonne spécifiques peut également être écrite comme ceci :
MariaDB [mydb]> INSERT INTO user SET username='test3',password='test3';
Cela insérera uniquement le nom d'utilisateur et le mot de passe et utilisera les valeurs par défaut pour les autres valeurs.
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)
Souvent, nous avons besoin d'utiliser une seule instruction INSERT pour insérer plusieurs enregistrements dans la table de données. Nous pouvons l'écrire comme ceci :
.MariaDB [mydb]> INSERT INTO user(username,password) VALUES('test4','test4'),('test5', -> 'test5');
Lorsque le moteur de stockage utilisé (MyISAM, MEMORY, MERGE) utilise des verrous au niveau des tables, vous pouvez utiliser les deux mots-clés LOW_PRIORITY | HIGH_PRIORITY :
Lors de l'utilisation du mot-clé LOW_PRIORITY, les données sont écrites lorsqu'aucun client ne lit à nouveau la table.
Lorsque HIGH_PRIORITY est utilisé, l'instruction INSERT a la même priorité que l'instruction SELECT. (politique par défaut)
Ainsi, lorsqu'une instruction SELECT est exécutée avant l'exécution de l'instruction INSERT, l'INSERT se bloque et attend que le SELECT soit lu, mais à ce moment, si un SELECT entre à nouveau dans le planning, le SELECT est bloqué (le verrou de lecture peut être lu directement), mais à ce moment parce que l'instruction INSERT a la même priorité que l'instruction SELECT, donc SELECT ne peut pas être exécuté tant que l'INSERT n'est pas terminé, donc INSERT peut ajouter LOW_PRIORITY pour optimiser la vitesse de lecture.
Lisez-le lentement ici, je ne connais pas grand-chose aux serrures.
La syntaxe de l'instruction UPDATE est la suivante :
UPDATE [LOW_PRIORITY] [IGNORE] table_reference [PARTITION (partition_list)] SET col1={expr1|DEFAULT} [,col2={expr2|DEFAULT}] ... [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]
Lorsque la clause WHERE n'est pas utilisée pour contraindre les conditions de sélection, toutes les données sont mises à jour. Par exemple, l'heure de connexion de tous les enregistrements de la table utilisateur est modifiée pour être maintenant :
.MariaDB [mydb]> UPDATE user SET logtime=NOW(); Query OK, 5 rows affected (0.01 sec) Rows matched: 5 Changed: 5 Warnings: 0
MariaDB [mydb]> UPDATE user SET logip='127.0.0.1' ORDER BY regtime LIMIT 3;
L'instruction ORDER BY peut être utilisée dans SELECT UPDATE DELETE, etc., pour indiquer quelle disposition des champs de la table doit être suivie lors de la sortie, de la suppression et de la mise à jour de la table.
Par exemple, dans ce qui précède, ORDER BY regtime organise les mises à jour dans un ordre positif en fonction de l'heure d'enregistrement et ne met à jour que les trois premières lignes avec l'instruction LIMIT.
Utilisez DESC pour spécifier la disposition du flashback, par exemple : ORDER BY regtime DESC
Instruction LIMIT : utilisée pour limiter le nombre de résultats de requête.
Utilisation :
LIMIT[位置偏移量,]行数
La première ligne commence à 0, donc la suivante :
SELECT * FROM user LIMIT 2,2; //从第3行开始,取两行,即取第3、4条记录。
MariaDB [mydb]> UPDATE user SET logip='192.168.1.2' WHERE username='test2';
Comme il y a beaucoup de choses dans la clause WHERE, je ne publierai pas trop de contenu ici.
LOW_PRIORITY : C'est la même chose que LOW_PRIORITY de INSERT.
MariaDB [mydb]> REPLACE INTO user VALUES(1,'test111','test111',NOW(),NOW(),'192.168.1.1');
L'instruction ci-dessus est le SQL étendu de MariaDB, ce qui équivaut à la suppression des enregistrements en double (clé primaire ou index unique) et à l'ajout de nouveaux enregistrements.
Cela semble un peu insipide ? ....
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;
MariaDB [mydb]> DELETE FROM user WHERE username='test1';
那么?这篇文章就简单写到这吧~~
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!