Maison  >  Article  >  Tutoriel système  >  Résumé d'apprentissage Mariadb (4) : insertion, suppression et modification de données

Résumé d'apprentissage Mariadb (4) : insertion, suppression et modification de données

WBOY
WBOYoriginal
2024-07-18 19:06:391107parcourir
INSÉRER les données d'insertion

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)
Insérer une seule donnée
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)
Insérer plusieurs lignes de données

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');
Des priorités inexplicables ?

Résumé dapprentissage Mariadb (4) : insertion, suppression et modification de données

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.

Modifier les données

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]
Tout mettre à jour

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
Mettre à jour l'adresse IP de connexion des trois premières personnes inscrites à 127.0.0.1
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条记录。
Utilisez l'instruction WHERE pour sélectionner des lignes spécifiques à mettre à jour
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.

Déclaration REPLACE
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 ? ....

Supprimer les données

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';

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

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn