mysql, instruction sept couramment utilisée: opérations de requête dans DQL

1 Opération d'accumulation

La structure du tableau est la suivante

Insérez la description de l'image ici

demande

Connaissez le score, trouvez le pire classement. Les résultats sont triés par ordre croissant de notes.

Instruction SQL:

select grade, sum(number) over(order by grade) as t_rank
from class_grade
order by grade;

Certains pourraient la version mysql 不支持over()函数, 8.0plus qu'un simple support.

2 Créer une vue

La structure du tableau est la suivante

Insérez la description de l'image ici

demande

Créé 视图actor_name_view, contenant seulement first_nameet last_namedeux, et deux colonnes rebaptisés first_namecomme first_name_v, last_namechangé à last_name_v.

Instruction SQL

create view actor_name_view as
select first_name as first_name_v, last_name as last_name_v from actor;

résultat de l'opération

Insérez la description de l'image ici

3 Connexion droite

La structure du tableau est la suivante

Insérez la description de l'image ici
Insérez la description de l'image ici

demande

Trouver tous les employés du département ont été affectés last_nameet first_nameainsi dept_no, y compris le personnel temporaire n'est pas une allocation sectorielle.

Instruction SQL

select e.last_name, e.first_name, d.dept_no from dept_emp as d
right join employees as e
on d.emp_no = e.emp_no;

# select e.last_name, e.first_name, d.dept_no from employees as e
# left join dept_emp as d
# on e.emp_no = d.emp_no;

Ce type de question 左连接peut 右连接être utilisé pour obtenir le résultat correct.

résultat de l'opération

Insérez la description de l'image ici

4 Requête de gauche, conditions supplémentaires

La structure du tableau est la suivante

Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici

demande

分类为nullLe film idà interroger commence par 及名称.

Instruction SQL

select f.film_id, f.title from film as f
left join film_category as fc
on f.film_id = fc.film_id
where category_id is NULL;

Analyse, la requête conjointe des trois tables est plus compliquée. La déclaration ci-dessus peut être divisée en deux parties.

select f.film_id, f.title from film as f
left join film_category as fc
on f.film_id = fc.film_id;

Le résultat en cours de cette partie est
Insérez la description de l'image ici
, puis utilisez la condition pour filtrer les enregistrements souhaités.

Bien sûr, vous pouvez également joinutiliser directement la sous-requête sans utiliser l' instruction

select film_id, title from film
where film_id not in (select film_id from film_category);

Insérez la description de l'image ici
Cela peut être comparé à un autre problème que j'ai enregistré .

5 existsmots-clés

La structure du tableau est la suivante

Insérez la description de l'image ici
Insérez la description de l'image ici

demande

Retrouvez toutes les informations des collaborateurs qui ne sont pas affectés à un service spécifique

Instruction SQL

select * from employees
where not exists (select emp_no from dept_emp where employees.emp_no = dept_emp.emp_no);

Insérez la description de l'image ici
Bien sûr, vous pouvez également utiliser à la not inplace

select * from employees where emp_no 
not in (select emp_no from dept_emp);

Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/Awt_FuDongLai/article/details/114678646
conseillé
Classement