Opérations de requête rapide MySQL sur les données dans les tables

Vérification rapide MySQL

Parce que j'oublie souvent certaines instructions, mots-clés, opérations, etc. MySQL dans mon travail et mes études quotidiens, j'ai récemment pris le temps d'écrire le contenu suivant sur MySQL. C'est comme un dictionnaire


Réinitialiser le mot de passe MySQL Opérateurs
de type de données Fonctions communes Intégrité des données Opérations de base de la base de données Opérations sur la table elle-même Cet article sous-requête de la vue d'index de connexion multi-table Prétraitement des instructions SQL Fonctions personnalisées et procédures stockées Programmation dans MySQL













Insérer un enregistrement de table

{
   
   INSERT | REPLACE} [INTO] 表名
	[(字段名 [, 字段名, ...])]
    {
   
   VALUES | VALUE}
    ([,, ...])[,(,[,, ...]), ...]

例如向表t1插入值
表t1结构:
mysql> desc t1;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int      | NO   | PRI | NULL    |       |
| name  | char(10) | YES  | UNI | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.02 sec)

# 插入一行数据
mysql> insert into t1 value(1,'老李');
Query OK, 1 row affected (0.02 sec)

mysql> insert into t1(id) values(2);
Query OK, 1 row affected (0.01 sec)

# 插入多行
mysql> insert t1 values(3, 'ab'),(4,'cd');
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

La différence entre insérer et remplacer

Si un ou plusieurs champs de la table doivent être uniques (non répétables), alors si vous utilisez insert pour insérer des données qui existent déjà dans le champ correspondant de la table, une erreur sera signalée, mais remplacer supprimera d'abord l'enregistrement d'origine. puis insérez le nouveau.

mysql> desc t1;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int      | NO   | PRI | NULL    |       |
| name  | char(10) | YES  | UNI | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.02 sec)
# 表t1中的id是主键,主键必须唯一

# 表中的已有的记录
mysql> select * from t1;
+----+--------+
| id | name   |
+----+--------+
|  2 | NULL   |
|  3 | ab     |
|  4 | cd     |
|  1 | 老李   |
+----+--------+
4 rows in set (0.00 sec)

# 这时候用insert插入会报错
mysql> insert into t1 value(2, '老王');
ERROR 1062 (23000): Duplicate entry '2' for key 't1.PRIMARY'

# 使用replace就能成功插入
mysql> replace into t1 value(2, '老王');
Query OK, 2 rows affected (0.00 sec)
# 改变后
mysql> select * from t1;
+----+--------+
| id | name   |
+----+--------+
|  3 | ab     |
|  4 | cd     |
|  1 | 老李   |
|  2 | 老王   |  # null变成了老王
+----+--------+
4 rows in set (0.00 sec)

Plus

Supprimer un enregistrement de table

DELETE FROM 表名 
    [WHERE where_condition]


# 原来表中内容
mysql> select * from t1;
+----+--------+
| id | name   |
+----+--------+
|  3 | ab     |
|  4 | cd     |
|  1 | 老李   |
|  2 | 老王   |
+----+--------+
4 rows in set (0.00 sec)

# 删除t1表中id为4的记录
mysql> delete from t1 where id = 4;
Query OK, 1 row affected (0.00 sec)

mysql> select * from t1;
+----+--------+
| id | name   |
+----+--------+
|  3 | ab     |
|  1 | 老李   |
|  2 | 老王   |
+----+--------+
3 rows in set (0.00 sec)


# 如果不写where条件将会删除表中所有记录(但不会把表删除)
mysql> delete from t1;
Query OK, 3 rows affected (0.01 sec)

mysql> select * from t1;
Empty set (0.00 sec)

Plus

Modifier les enregistrements de la table

UPDATE  表名
    SET 字段名 =[, 字段名 =, ...]
    [WHERE where_condition]


# 原来的记录
mysql> select * from t1;
+----+--------+
| id | name   |
+----+--------+
|  2 | 阿七   |
|  1 | 老ok   |
+----+--------+
2 rows in set (0.00 sec)

# 将t1表中id为2的记录的name修改为‘老八’
mysql> update t1 set name = '老八' where id = 2;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from t1;
+----+--------+
| id | name   |
+----+--------+
|  1 | 老ok   |
|  2 | 老八   |
+----+--------+
2 rows in set (0.00 sec)

# 不加where条件的话将会修改表中所有记录
mysql> update t1 set name = '九哥';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0
# 注:被修改的字段不能是unique约束的,并且不能是有索引的,否则会报错.

Plus

Enregistrements de table de requête

SELECT [DISTINCT]
    select_expr [, select_expr,...] 
    [FROM 表名[, 表名,...]
    [WHERE 选择条件]
    [GROUP BY {字段名 | 表达式} [WITH ROLLUP]]
    [HAVING 选择条件]
    [ORDER BY {字段名 | 表达式} [ASC | DESC]]
    [LIMIT {
   
   [偏移量(起始行),] 行数 | 行数 OFFSET 偏移量}]]
select_expr:
	字段名 [[as] 显示的字段名]
	*
	select语句 [as]select语句取的名(当做字段名)
  • déduplication distincte
  • où filtre (filtre)
  • groupe par groupe
  • ayant un filtre, généralement utilisé avec group by. Sera filtré davantage après l'endroit où il a été filtré
  • ordre par défaut en ordre croissant (asc), vous pouvez spécifier asc (ordre croissant) ou desc (ordre décroissant)
  • limit limite le nombre de lignes
    à des valeurs plus
    distinctes

    regrouper par
    ordre par
# 查询表t1中所有字段
mysql> select * from t1;
+----+--------+
| id | name   |
+----+--------+
|  1 | 九哥   |
|  2 | 九哥   |
+----+--------+
2 rows in set (0.00 sec)


# 查询表t1的记录,并限制只查一行
mysql> select * from t1 limit 1;
+----+--------+
| id | name   |
+----+--------+
|  1 | 九哥   |
+----+--------+
1 row in set (0.00 sec)

# 查询id为1的记录,并且只要name字段
mysql> select name from t1 where id = 1;
+--------+
| name   |
+--------+
| 九哥   |
+--------+
1 row in set (0.00 sec)

# 查询id大于0的记录,并降序显示
mysql> select * from t1 where id > 0 order by id desc;
+----+--------+
| id | name   |
+----+--------+
|  2 | 九哥   |
|  1 | 九哥   |
+----+--------+
2 rows in set (0.00 sec)

Des requêtes plus complexes seront introduites dans des articles ultérieurs, telles que les opérations de jointure de tables, les sous-requêtes, etc.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_45345384/article/details/115680357
conseillé
Classement