mysqlで一般的に使用されるステートメント7:DQLでのクエリ操作

1積和演算

テーブルの構造は次のとおりです。

ここに画像の説明を挿入

要求する

スコアを知り、最悪のランキングを見つけます。結果はグレードの昇順で並べ替えられます。

SQLステートメント:

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

いくつかのかもしれないのMySQLバージョン不支持over()函数8.0単なるサポート以上。

2ビューを作成します

テーブルの構造は次のとおりです。

ここに画像の説明を挿入

要求する

作成され视图actor_name_view2つだけfirst_name含みlast_name、2つの列の名前first_namefirst_name_v、にlast_name変更、に変更されましたlast_name_v

SQLステートメント

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

運転結果

ここに画像の説明を挿入

3正しい接続

テーブルの構造は次のとおりです。

ここに画像の説明を挿入
ここに画像の説明を挿入

要求する

すべての部門の従業員が割り当てられていることlast_nameを確認first_nameします。またdept_no、臨時スタッフを含め、セクター固有の割り当てではありません。

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;

このタイプの質問左连接右连接、正しい結果を得るために使用できます。

運転結果

ここに画像の説明を挿入

4左のクエリ、追加の条件

テーブルの構造は次のとおりです。

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

要求する

照会する分类为nullムービーidはで始まり及名称ます。

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;

分析では、3つのテーブルの共同クエリはより複雑です。上記のステートメントは、2つの部分に分けることができます。

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

この部分の実行結果は
ここに画像の説明を挿入
、条件を使用して目的のレコードを除外します。

もちろん、joinステートメントを使用せずにサブクエリ直接使用することもできます

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

ここに画像の説明を挿入
それは私が記録した別の問題と比較することができます

5つのexistsキーワード

テーブルの構造は次のとおりです。

ここに画像の説明を挿入
ここに画像の説明を挿入

要求する

特定の部門に割り当てられていない従業員のすべての情報を検索します

SQLステートメント

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

ここに画像の説明を挿入
もちろん、not in代わりに使用することもできます

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

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/Awt_FuDongLai/article/details/114678646