Maison > Tutoriel système > Linux > le corps du texte

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

WBOY
Libérer: 2024-07-18 19:06:39
original
1138 Les gens l'ont consulté
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] ... ]
Copier après la connexion

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)
Copier après la connexion
Insérer une seule donnée
MariaDB [mydb]> INSERT INTO user VALUES(1,'test','test',NOW(),NOW(),'127.0.0.1');
Copier après la connexion

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');
Copier après la connexion

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';
Copier après la connexion

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)
Copier après la connexion
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');
Copier après la connexion
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]
Copier après la connexion
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
Copier après la connexion
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;
Copier après la connexion

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[位置偏移量,]行数
Copier après la connexion

La première ligne commence à 0, donc la suivante :

SELECT * FROM user LIMIT 2,2;  //从第3行开始,取两行,即取第3、4条记录。
Copier après la connexion
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';
Copier après la connexion

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');
Copier après la connexion

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 ...]]
Copier après la connexion
删除所有数据

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

MariaDB [mydb]> DELETE FROM user;
Copier après la connexion
使用WHERE语句约束选中行
MariaDB [mydb]> DELETE FROM user WHERE username='test1';
Copier après la connexion

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

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!

source:linuxprobe.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal