Table des matières
(1) Interroger tous les champs
Lors de la création d'une table de données, vous pouvez spécifier si une colonne peut contenir la valeur nulle null. La valeur nulle est différente de 0 et elle est également différente de la chaîne vide. Une valeur nulle indique généralement que l'emplacement des données n'est pas utilisé ou que les données seront ajoutées ultérieurement. En utilisant la clause is null dans l'instruction select, vous pouvez interroger les enregistrements dans lesquels le contenu d'un certain champ est vide.
mysql> select s_id,f_name,f_price    -> from fruits    -> where s_id=101 or s_id=102;+------+------------+---------+| s_id | f_name     | f_price |+------+------------+---------+|  101 | apple      |    5.20 ||  101 | blackberry |   10.20 ||  102 | orange     |   11.20 ||  101 | cherry     |    3.20 ||  102 | banana     |   10.30 ||  102 | grape      |    5.30 |+------+------------+---------+6 rows in set (0.00 sec)
Copier après la connexion
" >
mysql> select s_id,f_name,f_price    -> from fruits    -> where s_id=101 or s_id=102;+------+------------+---------+| s_id | f_name     | f_price |+------+------------+---------+|  101 | apple      |    5.20 ||  101 | blackberry |   10.20 ||  102 | orange     |   11.20 ||  101 | cherry     |    3.20 ||  102 | banana     |   10.30 ||  102 | grape      |    5.30 |+------+------------+---------+6 rows in set (0.00 sec)
Copier après la connexion
Format de syntaxe :
(12)分组查询
(13)使用limit限制查询结果的数量
Maison base de données tutoriel mysql Données de requête MySQL : requête à table unique

Données de requête MySQL : requête à table unique

Mar 11, 2021 am 09:18 AM
mysql

Données de requête MySQL : requête à table unique

La requête de table unique fait référence à l'interrogation des données requises à partir d'une table de données.
(1) Interroger tous les champs
(2) Interroger les champs spécifiés
(3) Interroger les enregistrements spécifiés
(4) Interroger avec le mot-clé in
(5) Plage avec entre et Interroger
(6) Requête de correspondance de caractères avec like
(7) Requête de valeur nulle
(8) Requête multi-conditions avec et
(9) Requête multi-conditions avec ou
(10) Requête les résultats ne sont pas répétés
(11) Trier les résultats de la requête
(12) Requête de groupe
(13) Utiliser la limite pour limiter le nombre de résultats de la requête


(Gratuit recommandation d'apprentissage : tutoriel vidéo mysql)

(1) Interroger tous les champs

1. >select * from fruits 2.
select f_id,s_id,f_name,f_price from fruits;

Le résultat de l'exécution des deux instructions ci-dessus est d'interroger tous les champs :

mysql> select * from fruits;+------+------+------------+---------+| f_id | s_id | f_name     | f_price |+------+------+------------+---------+| 12   |  104 | lemon      |    6.40 || a1   |  101 | apple      |    5.20 || a2   |  103 | apricot    |    2.20 || b1   |  101 | blackberry |   10.20 || b2   |  104 | berry      |    7.60 || b5   |  107 | xxxx       |    3.60 || bs1  |  102 | orange     |   11.20 || bs2  |  105 | melon      |    8.20 || c0   |  101 | cherry     |    3.20 || m1   |  106 | mango      |   15.70 || m2   |  105 | xbabay     |    2.60 || m3   |  105 | xxtt       |   11.60 || o2   |  103 | coconut    |    9.20 || t1   |  102 | banana     |   10.30 || t2   |  102 | grape      |    5.30 || t4   |  107 | xbabay     |    3.60 |+------+------+------------+---------+16 rows in set (0.00 sec)
Copier après la connexion
(2) Interroger le champ spécifié
1 . Interrogez un seul champ :

select 列名 from 表名;

[Exemple] Interrogez tous les noms de fruits dans la colonne f_name de la table fruits. L'instruction SQL est la suivante :

mysql> select f_name from fruits;+------------+| f_name     |+------------+| lemon      || apple      || apricot    || blackberry || berry      || xxxx       || orange     || melon      || cherry     || mango      || xbabay     || xxtt       || coconut    || banana     || grape      || xbabay     |+------------+16 rows in set (0.00 sec)
Copier après la connexion
2. Interrogez plusieurs champs. :

select 字段名1,字段名2,...字段名n from 表名; [Exemple] Obtenez deux colonnes nommées f_name et f_price à partir de la table fruits. L'instruction SQL est la suivante :

mysql> select f_name,f_price from fruits;+------------+---------+| f_name     | f_price |+------------+---------+| lemon      |    6.40 || apple      |    5.20 || apricot    |    2.20 || blackberry |   10.20 || berry      |    7.60 || xxxx       |    3.60 || orange     |   11.20 || melon      |    8.20 || cherry     |    3.20 || mango      |   15.70 || xbabay     |    2.60 || xxtt       |   11.60 || coconut    |    9.20 || banana     |   10.30 || grape      |    5.30 || xbabay     |    3.60 |+------------+---------+16 rows in set (0.00 sec)
Copier après la connexion
(3) Interrogez l'enregistrement spécifié
select 字段名1,字段名2,。。。,字段名n
from 表名
where 查询条件
Copier après la connexion
. [Exemple 1] Recherchez le prix sous la forme 10,2 Yuan nom du fruit, l'instruction SQL est la suivante :

mysql> select f_name,f_price    -> from fruits    -> where f_price = 10.2;+------------+---------+| f_name     | f_price |+------------+---------+| blackberry |   10.20 |+------------+---------+1 row in set (0.00 sec)
Copier après la connexion
[Exemple 2] Trouvez le prix du fruit nommé "pomme", l'instruction SQL est la suivante :

mysql> select f_name,f_price    -> from fruits    -> where f_name = 'apple';+--------+---------+| f_name | f_price |+--------+---------+| apple  |    5.20 |+--------+---------+1 row in set (0.00 sec)
Copier après la connexion
[Exemple 3] Interrogez le prix inférieur à 10 Nom du fruit, l'instruction SQL est la suivante :

mysql> select f_name,f_price    -> from fruits    -> where f_price<10.00;+---------+---------+| f_name  | f_price |+---------+---------+| lemon   |    6.40 || apple   |    5.20 || apricot |    2.20 || berry   |    7.60 || xxxx    |    3.60 || melon   |    8.20 || cherry  |    3.20 || xbabay  |    2.60 || coconut |    9.20 || grape   |    5.30 || xbabay  |    3.60 |+---------+---------+11 rows in set (0.00 sec)
Copier après la connexion

(4) Requête avec le mot-clé in
    Le in L'opérateur est utilisé pour interroger les enregistrements qui remplissent les conditions dans la plage spécifiée, utiliser le symbole en cours d'exécution, mettre toutes les conditions de recherche entre parenthèses et séparer les conditions de recherche par des virgules. Tant qu'une valeur dans la plage de conditions est remplie, elle l'est. un match.
[Exemple 1] Pour les enregistrements avec s_id 101 et 102, l'instruction SQL est la suivante

mysql> select s_id,f_name,f_price    -> from fruits    -> where s_id in(101,102)
    -> order by f_name;+------+------------+---------+| s_id | f_name     | f_price |+------+------------+---------+|  101 | apple      |    5.20 ||  102 | banana     |   10.30 ||  101 | blackberry |   10.20 ||  101 | cherry     |    3.20 ||  102 | grape      |    5.30 ||  102 | orange     |   11.20 |+------+------------+---------+6 rows in set (0.00 sec)
Copier après la connexion
[Exemple 2] Interrogez tous les enregistrements dont s_id n'est ni 101 ni 102, L'instruction SQL est la suivante :

mysql> select s_id,f_name,f_price    -> from fruits    -> where s_id not in (101,102)
    -> order by f_name;+------+---------+---------+| s_id | f_name  | f_price |+------+---------+---------+|  103 | apricot |    2.20 ||  104 | berry   |    7.60 ||  103 | coconut |    9.20 ||  104 | lemon   |    6.40 ||  106 | mango   |   15.70 ||  105 | melon   |    8.20 ||  105 | xbabay  |    2.60 ||  107 | xbabay  |    3.60 ||  105 | xxtt    |   11.60 ||  107 | xxxx    |    3.60 |+------+---------+---------+10 rows in set (0.00 sec)
Copier après la connexion
(5) Requête de plage avec entre et
    entre et est utilisée pour interroger des valeurs dans une certaine plage. Cet opérateur nécessite deux paramètres. , C'est-à-dire la valeur de début et la valeur de fin de la plage.
[Exemple 1] Interrogez le nom et le prix des fruits entre 2,00 yuans et 10,20 yuans L'instruction SQL est la suivante :

mysql> select f_name,f_price from fruits where f_price between 2.00 and 10.20;+------------+---------+| f_name     | f_price |+------------+---------+| lemon      |    6.40 || apple      |    5.20 || apricot    |    2.20 || blackberry |   10.20 || berry      |    7.60 || xxxx       |    3.60 || melon      |    8.20 || cherry     |    3.20 || xbabay     |    2.60 || coconut    |    9.20 || grape      |    5.30 || xbabay     |    3.60 |+------------+---------+12 rows in set (0.00 sec)
Copier après la connexion
[Exemple 2] Interrogez le prix entre 2,00. yuans et 10,20 yuans. Pour les noms de fruits et les prix autres que 10,20 yuans, l'instruction SQL est la suivante :

mysql> select f_name,f_price    -> from fruits    -> where f_price not between 2.00 and 10.20;+--------+---------+| f_name | f_price |+--------+---------+| orange |   11.20 || mango  |   15.70 || xxtt   |   11.60 || banana |   10.30 |+--------+---------+4 rows in set (0.00 sec)
Copier après la connexion
(6) Requête de correspondance de caractères avec un caractère générique similaire à
1,%, caractères correspondants. de n'importe quelle longueur, y compris même zéro caractère.

[Exemple 1] Rechercher tous les fruits commençant par la lettre "b", l'instruction SQL est la suivante :

mysql> select f_id,f_name    -> from fruits    -> where f_name like 'b%';+------+------------+| f_id | f_name     |+------+------------+| b1   | blackberry || b2   | berry      || t1   | banana     |+------+------------+3 rows in set (0.00 sec)
Copier après la connexion
[Exemple 2] Dans la table des fruits, interroger les enregistrements contenant la lettre "g" dans f_name, SQL L'instruction est la suivante :

mysql> select f_id,f_name    -> from fruits    -> where f_name like '%g%';+------+--------+| f_id | f_name |+------+--------+| bs1  | orange || m1   | mango  || t2   | grape  |+------+--------+3 rows in set (0.00 sec)
Copier après la connexion
[Exemple 3] Interrogez les noms des fruits commençant par "b" et se terminant par 'y'. L'instruction SQL est la suivante :

mysql> select f_id,f_name    -> from fruits    -> where f_name like 'b%y';+------+------------+| f_id | f_name     |+------+------------+| b1   | blackberry || b2   | berry      |+------+------------+2 rows in set (0.00 sec)
Copier après la connexion
<.>2._Caractère générique, un seul à la fois. Peut correspondre à n'importe quel caractère.

[Exemple] Dans la table des fruits, la requête se termine par la lettre 'y', et il n'y a que 4 lettres devant 'y'. L'instruction SQL est la suivante :

mysql> select f_id,f_name    -> from fruits    -> where f_name like '____y';+------+--------+| f_id | f_name |+------+--------+| b2   | berry  |+------+--------+1 row in set (0.00 sec)
Copier après la connexion
(7) Requête valeur vide

Lors de la création d'une table de données, vous pouvez spécifier si une colonne peut contenir la valeur nulle null. La valeur nulle est différente de 0 et elle est également différente de la chaîne vide. Une valeur nulle indique généralement que l'emplacement des données n'est pas utilisé ou que les données seront ajoutées ultérieurement. En utilisant la clause is null dans l'instruction select, vous pouvez interroger les enregistrements dans lesquels le contenu d'un certain champ est vide.
  • Créez la table de données clients ci-dessous pour démontrer :
create table customers(
	c_id int not null auto_increment,
	c_name char(50) not null,
	c_address char(50) null,
	c_city char(50) null,
	c_zip char(10) null,
	c_contact char(50) null,
	c_email char(255) null,
	primary key (c_id)
	);
Copier après la connexion
Insérez l'instruction suivante :

mysql> insert into customers(c_id,c_name,c_address,c_city,c_zip,c_contact,c_email)
    -> values
    -> (10001,'redhool','200 Street ','Tianjin','300000','LiMing','LMing@163.com'),
    -> (10002,'Stars','333 Fromage Lane','Dalian','116000','Zhangbo','Jerry@hotmail.com'),
    -> (10003,'Netbhood','1 Sunny Place','Qingdao','266000','LuoCong',null),
    -> (10004,'JOTO','829 Riverside Drive','Haikou','570000','YangShan','sam@hotmail.com');Query OK, 4 rows affected (0.06 sec)Records: 4  Duplicates: 0  Warnings: 0
Copier après la connexion
[Exemple 1] Interrogez le c_id de l'enregistrement dont le c_email est vide dans la table clients, les valeurs des champs c_name et c_email, l'instruction SQL est la suivante :

mysql> select c_id,c_name,c_email from customers where c_email is null;+-------+----------+---------+| c_id  | c_name   | c_email |+-------+----------+---------+| 10003 | Netbhood | NULL    |+-------+----------+---------+1 row in set (0.00 sec)
Copier après la connexion
[Exemple 2] Interrogez les valeurs des champs c_id, c_name et c_email des enregistrements de la table clients où c_email n'est pas vide, l'instruction SQL est la suivante :

mysql> select c_id,c_name,c_email    -> from customers    -> where c_email is not null;+-------+---------+-------------------+| c_id  | c_name  | c_email           |+-------+---------+-------------------+| 10001 | redhool | LMing@163.com     || 10002 | Stars   | Jerry@hotmail.com || 10004 | JOTO    | sam@hotmail.com   |+-------+---------+-------------------+3 rows in set (0.00 sec)
Copier après la connexion
(8) Requête multi-conditions avec et

[Exemple 1] Interroger le prix et le nom des fruits avec s_id=101 et f_price supérieur à 5 dans la table des fruits. L'instruction SQL est la suivante :
mysql> select f_id,f_price,f_name
    -> from fruits
    -> where s_id = '101' and f_price>=5;
+------+---------+------------+
| f_id | f_price | f_name     |
+------+---------+------------+
| a1   |    5.20 | apple      |
| b1   |   10.20 | blackberry |
+------+---------+------------+
2 rows in set (0.00 sec)
Copier après la connexion
[Exemple 2] Recherchez le prix et le nom des fruits avec s_id=101 ou 102, f_price supérieur à 5 et f_name='apple. ' dans la table des fruits. L'instruction SQL est la suivante :

mysql> select f_id ,f_price , f_name    -> from fruits    -> where s_id in ('101','102') and f_price >=5 and f_name = 'apple';+------+---------+--------+| f_id | f_price | f_name |+------+---------+--------+| a1   |    5.20 | apple  |+------+---------+--------+1 row in set (0.05 sec)
Copier après la connexion
(9) avec requête multi-conditions pour ou

[Exemple 1] Interrogez le f_price et le f_name du fournisseur de fruits avec s_id=101 ou s_id=102. L'instruction SQL est la suivante :
mysql> select s_id,f_name,f_price    -> from fruits    -> where s_id=101 or s_id=102;+------+------------+---------+| s_id | f_name     | f_price |+------+------------+---------+|  101 | apple      |    5.20 ||  101 | blackberry |   10.20 ||  102 | orange     |   11.20 ||  101 | cherry     |    3.20 ||  102 | banana     |   10.30 ||  102 | grape      |    5.30 |+------+------------+---------+6 rows in set (0.00 sec)
Copier après la connexion
[Exemple 2] Interrogez s_id= 101 ou le f_price et f_name du fournisseur de fruits avec s_id=102, l'instruction SQL est la suivante :

mysql> select s_id,f_name,f_price    -> from fruits    -> where s_id in(101,102);+------+------------+---------+| s_id | f_name     | f_price |+------+------------+---------+|  101 | apple      |    5.20 ||  101 | blackberry |   10.20 ||  102 | orange     |   11.20 ||  101 | cherry     |    3.20 ||  102 | banana     |   10.30 ||  102 | grape      |    5.30 |+------+------------+---------+6 rows in set (0.00 sec
Copier après la connexion

Notez que

or peut être utilisé avec et, mais faites attention à la priorité des deux, car et La priorité de est supérieure à ou Les opérandes des deux côtés de. et sont d'abord exploités, puis combinés avec les opérandes de ou.

  • (10) Les résultats de la requête ne sont pas répétés
Format de syntaxe :
  • select distinct 字段名 from 表名;[Exemple] Interrogez le champ s_id dans le valeur de la table fruits, renvoie la valeur du champ s_id et ne doit pas être répétée. L'instruction SQL est la suivante :
mysql> select distinct s_id from fruits;+------+| s_id |+------+|  104 ||  101 ||  103 ||  107 ||  102 ||  105 ||  106 |+------+7 rows in set (0.05 sec)
Copier après la connexion
(11) Trier les résultats de la requête

1.
[Exemple] Interrogez la valeur du champ f_name de la table fruits et triez-la. L'instruction SQL est la suivante :

mysql> select f_name from fruits order by f_name;+------------+| f_name     |+------------+| apple      || apricot    || banana     || berry      || blackberry || cherry     || coconut    || grape      || lemon      || mango      || melon      || orange     || xbabay     || xbabay     || xxtt       || xxxx       |+------------+16 rows in set (0.00 sec)
Copier après la connexion
order by2.
  • 多列排序首先排序的第一列必须有相同的列值,才会对第二列进行排序。如果第一列数据中所有值都是唯一的,将不再对第二列进行排序。

【例】查询fruits表中的f_name和f_price字段,先按f_name排序,再按f_price排序,SQL语句如下:

mysql> select f_name,f_price    -> from fruits    -> order by f_name, f_price;+------------+---------+| f_name     | f_price |+------------+---------+| apple      |    5.20 || apricot    |    2.20 || banana     |   10.30 || berry      |    7.60 || blackberry |   10.20 || cherry     |    3.20 || coconut    |    9.20 || grape      |    5.30 || lemon      |    6.40 || mango      |   15.70 || melon      |    8.20 || orange     |   11.20 || xbabay     |    2.60 || xbabay     |    3.60 || xxtt       |   11.60 || xxxx       |    3.60 |+------------+---------+16 rows in set (0.00 sec)
Copier après la connexion

3.指定排序方向desc

  • desc是降序排列,与之对应的是asc升序排列,但asc是默认的,可以不加。

【例1】查询fruits表中的f_name和f_price字段,对结果按f_price降序方式排序,SQL语句如下:

mysql> select f_name,f_price    -> from fruits    -> order by f_price desc;+------------+---------+| f_name     | f_price |+------------+---------+| mango      |   15.70 || xxtt       |   11.60 || orange     |   11.20 || banana     |   10.30 || blackberry |   10.20 || coconut    |    9.20 || melon      |    8.20 || berry      |    7.60 || lemon      |    6.40 || grape      |    5.30 || apple      |    5.20 || xxxx       |    3.60 || xbabay     |    3.60 || cherry     |    3.20 || xbabay     |    2.60 || apricot    |    2.20 |+------------+---------+16 rows in set (0.00 sec)
Copier après la connexion

【例2】查询fruits表,先按f_price降序排序,再按f_name字段升序排序,SQL语句如下:

mysql> select f_price,f_name    -> from fruits    -> order by f_price desc,f_name;+---------+------------+| f_price | f_name     |+---------+------------+|   15.70 | mango      ||   11.60 | xxtt       ||   11.20 | orange     ||   10.30 | banana     ||   10.20 | blackberry ||    9.20 | coconut    ||    8.20 | melon      ||    7.60 | berry      ||    6.40 | lemon      ||    5.30 | grape      ||    5.20 | apple      ||    3.60 | xbabay     ||    3.60 | xxxx       ||    3.20 | cherry     ||    2.60 | xbabay     ||    2.20 | apricot    |+---------+------------+16 rows in set (0.00 sec)
Copier après la connexion
(12)分组查询
  • 分组查询是对数据按照某个或多个字段进行分组,MySQL中使用group by 关键字对数据进行分组,基本语法形式为:[group by 字段][having<条件表达式>]
  • 字段值为进行分组时所依据的列名称,"having<条件表达式>"指定满足表达式限定条件的结果将被显示。

1.创建分组

【例1】根据s_id对fruits表中的数据进行分组,SQL语句如下;

mysql> select s_id,count(*) as total    -> from fruits    -> group by s_id;+------+-------+| s_id | total |+------+-------+|  104 |     2 ||  101 |     3 ||  103 |     2 ||  107 |     2 ||  102 |     3 ||  105 |     3 ||  106 |     1 |+------+-------+7 rows in set (0.05 sec)
Copier après la connexion

可以看到group by 子句按照s_id排序并对数据分组。

  • 如果需要查看每个供应商提供的水果种类名称,可以在group by子句中使用group_concat()函数,将每个分组中各个字段的值显示出来。

【例2】根据s_id对fruits表中的数据进行分组,将每个供应商的水果名称显示出来,SQL语句如下:

mysql> select s_id,group_concat(f_name) as Names    -> from fruits    -> group by s_id;+------+-------------------------+| s_id | Names                   |+------+-------------------------+|  101 | apple,blackberry,cherry ||  102 | orange,banana,grape     ||  103 | apricot,coconut         ||  104 | lemon,berry             ||  105 | melon,xbabay,xxtt       ||  106 | mango                   ||  107 | xxxx,xbabay             |+------+-------------------------+7 rows in set (0.05 sec)
Copier après la connexion

2.使用having过滤分组

  • groub by可以和having一起限定显示记录所需满足的条件,只有满足条件的分组才会被显示。
  • having和where都是用来过滤数据的,having在数据分组之后进行过滤来选择分组,而where在分组之前用来选择记录。where排除的记录不再包括在分组中。

【例】根据s_id对fruits表中的数据进行分组,并显示水果种类大于1的分组信息,SQL语句如下:

mysql> select s_id,group_concat(f_name) as Names    -> from fruits    -> group by s_id having count(f_name) >1;+------+-------------------------+| s_id | Names                   |+------+-------------------------+|  101 | apple,blackberry,cherry ||  102 | orange,banana,grape     ||  103 | apricot,coconut         ||  104 | lemon,berry             ||  105 | melon,xbabay,xxtt       ||  107 | xxxx,xbabay             |+------+-------------------------+6 rows in set (0.00 sec)
Copier après la connexion

3.在group by 子句中使用with rollup

  • 使用with rolluo关键字之后,在所有查询出的分组记录之后增加一条记录,该记录计算查询出的所有记录的总和,即统计记录数量。

【例】根据s_id对fruits表中的数据进行分组,并显示记录数量,SQL语句如下:

mysql> select s_id,count(*) as Total    -> from fruits    -> group by s_id with rollup;+------+-------+| s_id | Total |+------+-------+|  101 |     3 ||  102 |     3 ||  103 |     2 ||  104 |     2 ||  105 |     3 ||  106 |     1 ||  107 |     2 || NULL |    16 |+------+-------+8 rows in set (0.05 sec)
Copier après la connexion

4.多字段分组

  • 使用group by可以对多个字段进行分组,group by 关键字后面跟需要分组的字段,MySQL根据多字段的值来进行层次分组,分组层次从左到右,即先按第1个字段分组,然后在第1个字段值相同的记录中,再根据第2个字段的值进行分组,以此类推。

【例】根据s_id和f_name字段对fruits表中的数据进行分组,SQL语句如下:

mysql> select * from fruits group by s_id,f_name;+------+------+------------+---------+| f_id | s_id | f_name     | f_price |+------+------+------------+---------+| 12   |  104 | lemon      |    6.40 || a1   |  101 | apple      |    5.20 || a2   |  103 | apricot    |    2.20 || b1   |  101 | blackberry |   10.20 || b2   |  104 | berry      |    7.60 || b5   |  107 | xxxx       |    3.60 || bs1  |  102 | orange     |   11.20 || bs2  |  105 | melon      |    8.20 || c0   |  101 | cherry     |    3.20 || m1   |  106 | mango      |   15.70 || m2   |  105 | xbabay     |    2.60 || m3   |  105 | xxtt       |   11.60 || o2   |  103 | coconut    |    9.20 || t1   |  102 | banana     |   10.30 || t2   |  102 | grape      |    5.30 || t4   |  107 | xbabay     |    3.60 |+------+------+------------+---------+16 rows in set (0.00 sec)
Copier après la connexion

5.group by 和order by一起使用

  • 某些情况下需要对分组进行排序,order by用来对查询的记录排序,如果和group by一起使用可以完成对分组的排序。

创建数据表演示:

mysql> create table orderitems    -> (
    -> o_num int not null,
    -> o_item int not null,
    -> f_id char(10) not null,
    -> quantity int not null,
    -> item_price decimal(8,2) not null,
    -> primary key (o_num,o_item)
    -> );Query OK, 0 rows affected (0.13 sec)mysql> insert into orderitems(o_num,o_item,f_id,quantity,item_price)
    -> values(30001,1,'a1',10,5.2),
    -> (30001,2,'b2',3,7.6),
    -> (30001,3,'bs1',5,11.2),
    -> (30001,4,'bs2',15,9.2),
    -> (30002,1,'b3',2,20.0),
    -> (30003,1,'c0',100,10),
    -> (30004,1,'o2',50,2.50),
    -> (30005,1,'c0',5,10),
    -> (30005,2,'b1',10,8.99),
    -> (30005,3,'a2',10,2.2),
    -> (30005,4,'m1',5,14.99);Query OK, 11 rows affected (0.06 sec)Records: 11  Duplicates: 0  Warnings: 0
Copier après la connexion

【例】查询订单价格大于100的订单号和总订单价格,SQL语句如下;

mysql> select o_num,sum(quantity * item_price) as orderTotal    -> from orderitems    -> group by o_num    -> having sum(quantity * item_price) >=100;+-------+------------+| o_num | orderTotal |+-------+------------+| 30001 |     268.80 || 30003 |    1000.00 || 30004 |     125.00 || 30005 |     236.85 |+-------+------------+4 rows in set (0.00 sec)
Copier après la connexion

可以看到orderTotal列的总订单价格并没有按照一定的顺序显示,接下来使用order by关键字按总订单价格排列显示结果,SQL语句如下:

mysql> select o_num,sum(quantity * item_price) as orderTotal    -> from orderitems    -> group by o_num    -> having sum(quantity * item_price)>=100
    -> order by orderTotal;+-------+------------+| o_num | orderTotal |+-------+------------+| 30004 |     125.00 || 30005 |     236.85 || 30001 |     268.80 || 30003 |    1000.00 |+-------+------------+4 rows in set (0.00 sec)
Copier après la connexion

可以看到,group by 子句按订单号对数据进行分组,sum()函数便可以返回总的订单价格,having子句对分组数据进行过滤,使得只返回总价格大于100的订单,最后使用order by子句排序输出。

(13)使用limit限制查询结果的数量

select返回所有匹配的行,有可能是表中所有的行,如仅仅需要返回第一行或者前几行,使用limit关键字,基本语法如下:

limit [位置偏移量,] 行数
Copier après la connexion
  • 第一个"位置偏移量"参数只是MySQL从哪一行开始显示,是一个可选参数,如果不指定"位置偏移量",将会从表中的第一条记录开始(第一条记录的位置偏移量是0,第二条记录的位置偏移量是1,以此类推);第二个参数"行数指示返回的记录条数"。

【例1】显示fruits表查询结果的前4行,SQL语句如下:

mysql> select * from fruits limit 4;+------+------+------------+---------+| f_id | s_id | f_name     | f_price |+------+------+------------+---------+| 12   |  104 | lemon      |    6.40 || a1   |  101 | apple      |    5.20 || a2   |  103 | apricot    |    2.20 || b1   |  101 | blackberry |   10.20 |+------+------+------------+---------+4 rows in set (0.00 sec)
Copier après la connexion

【例2】在fruits表中,使用limit子句,返回从第5个记录开始的、行数长度为3的记录,SQL语句如下:

mysql> select * from fruits limit 4,3;+------+------+--------+---------+| f_id | s_id | f_name | f_price |+------+------+--------+---------+| b2   |  104 | berry  |    7.60 || b5   |  107 | xxxx   |    3.60 || bs1  |  102 | orange |   11.20 |+------+------+--------+---------+3 rows in set (0.00 sec)
Copier après la connexion

也可以使用"limit 4 offset 3"也是获取从第5条记录开始后面的3条记录。

更多相关免费学习推荐:mysql教程(视频)

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Compétences de traitement de structures de données volumineuses de PHP Compétences de traitement de structures de données volumineuses de PHP May 08, 2024 am 10:24 AM

Compétences en matière de traitement de la structure des Big Data : Chunking : décomposez l'ensemble de données et traitez-le en morceaux pour réduire la consommation de mémoire. Générateur : générez des éléments de données un par un sans charger l'intégralité de l'ensemble de données, adapté à des ensembles de données illimités. Streaming : lisez des fichiers ou interrogez les résultats ligne par ligne, adapté aux fichiers volumineux ou aux données distantes. Stockage externe : pour les ensembles de données très volumineux, stockez les données dans une base de données ou NoSQL.

Comment optimiser les performances des requêtes MySQL en PHP ? Comment optimiser les performances des requêtes MySQL en PHP ? Jun 03, 2024 pm 08:11 PM

Les performances des requêtes MySQL peuvent être optimisées en créant des index qui réduisent le temps de recherche d'une complexité linéaire à une complexité logarithmique. Utilisez PreparedStatements pour empêcher l’injection SQL et améliorer les performances des requêtes. Limitez les résultats des requêtes et réduisez la quantité de données traitées par le serveur. Optimisez les requêtes de jointure, notamment en utilisant des types de jointure appropriés, en créant des index et en envisageant l'utilisation de sous-requêtes. Analyser les requêtes pour identifier les goulots d'étranglement ; utiliser la mise en cache pour réduire la charge de la base de données ; optimiser le code PHP afin de minimiser les frais généraux.

Comment utiliser la sauvegarde et la restauration MySQL en PHP ? Comment utiliser la sauvegarde et la restauration MySQL en PHP ? Jun 03, 2024 pm 12:19 PM

La sauvegarde et la restauration d'une base de données MySQL en PHP peuvent être réalisées en suivant ces étapes : Sauvegarder la base de données : Utilisez la commande mysqldump pour vider la base de données dans un fichier SQL. Restaurer la base de données : utilisez la commande mysql pour restaurer la base de données à partir de fichiers SQL.

Comment insérer des données dans une table MySQL en utilisant PHP ? Comment insérer des données dans une table MySQL en utilisant PHP ? Jun 02, 2024 pm 02:26 PM

Comment insérer des données dans une table MySQL ? Connectez-vous à la base de données : utilisez mysqli pour établir une connexion à la base de données. Préparez la requête SQL : Écrivez une instruction INSERT pour spécifier les colonnes et les valeurs à insérer. Exécuter la requête : utilisez la méthode query() pour exécuter la requête d'insertion en cas de succès, un message de confirmation sera généré.

Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4 Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4 Dec 09, 2024 am 11:42 AM

L'un des changements majeurs introduits dans MySQL 8.4 (la dernière version LTS en 2024) est que le plugin « MySQL Native Password » n'est plus activé par défaut. De plus, MySQL 9.0 supprime complètement ce plugin. Ce changement affecte PHP et d'autres applications

Comment utiliser les procédures stockées MySQL en PHP ? Comment utiliser les procédures stockées MySQL en PHP ? Jun 02, 2024 pm 02:13 PM

Pour utiliser les procédures stockées MySQL en PHP : Utilisez PDO ou l'extension MySQLi pour vous connecter à une base de données MySQL. Préparez l'instruction pour appeler la procédure stockée. Exécutez la procédure stockée. Traitez le jeu de résultats (si la procédure stockée renvoie des résultats). Fermez la connexion à la base de données.

Comment créer une table MySQL en utilisant PHP ? Comment créer une table MySQL en utilisant PHP ? Jun 04, 2024 pm 01:57 PM

La création d'une table MySQL à l'aide de PHP nécessite les étapes suivantes : Connectez-vous à la base de données. Créez la base de données si elle n'existe pas. Sélectionnez une base de données. Créer un tableau. Exécutez la requête. Fermez la connexion.

La différence entre la base de données Oracle et MySQL La différence entre la base de données Oracle et MySQL May 10, 2024 am 01:54 AM

La base de données Oracle et MySQL sont toutes deux des bases de données basées sur le modèle relationnel, mais Oracle est supérieur en termes de compatibilité, d'évolutivité, de types de données et de sécurité ; tandis que MySQL se concentre sur la vitesse et la flexibilité et est plus adapté aux ensembles de données de petite et moyenne taille. ① Oracle propose une large gamme de types de données, ② fournit des fonctionnalités de sécurité avancées, ③ convient aux applications de niveau entreprise ; ① MySQL prend en charge les types de données NoSQL, ② a moins de mesures de sécurité et ③ convient aux applications de petite et moyenne taille.

See all articles