MySQLのクエリ句
6174 ワード
クエリ文
文の名前
使用目的
select
結果セットに含まれる列を特定
from
データを抽出するテーブルと、これらのテーブルがどのように接続されているかを示します.
where
不要なデータのフィルタ
group by
使用したい列の値を持つ行をグループ化するために使用します.
having
不要なグループをフィルタ
order by
最後の結果セットの行を1つ以上の列でソートします.
select文はいくつかの構成またはサブ文から構成される.しかし、MySQLでは、select句が必要なのは1つだけです.
select句
このクエリでは、from句にはテーブル(department)が1つしかリストされず、select句は結果セットにすべてのdepartmentテーブルの列を含める必要があるだけです(*番号で表されます).クエリの意味は次のようになります. departmentテーブルのすべての行と列 が表示されます.
もちろん、departmentテーブルの最後の列のサブセットのみを取得することもできます.たとえば、次のようにします.
したがってselect句の役割は以下のように要約できる. select句は、可能なすべての列で、クエリー結果セットに含める列を選択するために使用されます.
select句に次のように追加できます.文字(数字や文字列など). 式、例えばtransaction.amount*-1; は、ROUND(transaction.amount,2)などの組み込み関数を呼び出す. ユーザー定義の関数呼び出し.
例:
組み込み関数を実行する必要がある場合や、単純な式の評価を行う必要がある場合は、from句を完全に省略できます.たとえば、次のようにします.
MySQLバージョン、ユーザー、および現在のデータベース名が返されます.
列の別名
select句の各要素の後に列の別名を追加して、カスタムラベルの目的を達成できます.
句の中で列名をより明確に表すために、これらの別名の前にキーワードasを付けることができます.たとえば、次のようにします.
重複行の削除
selectキーワードの後にdistinctキーワードを追加して、重複する行を除去できます.
from句 from句は、クエリーで使用されるテーブルと、これらのテーブルを接続する方法を定義します.
テーブルは、関連するローの集合です.3つのタイプがあります.永続テーブル( テンポラリ・テーブル(サブクエリが返すテーブル). 仮想テーブル(
サブクエリによって生成されたテーブル
サブクエリは、別のクエリに含まれるクエリです.サブクエリはselect文の各部分に表示され、カッコに含まれます.from句では、サブクエリは、他のクエリ句(from句が他のテーブルとインタラクティブである)に基づいて一時テーブルを生成する役割を果たします.例:
周辺クエリでは、サブクエリは別名(この例ではe)で参照されます.
表示
ビューは、データ辞書に格納されたクエリーで、テーブルのように動作しますが、実際にはデータ(実際には仮想テーブル)はありません.ビューに対するクエリーが発行されると、クエリーはビュー定義にバインドされ、最終的に実行されるクエリーが生成されます.例:クエリーemployeeテーブルのビューを定義します.内部レイプ関数の呼び出しが含まれています.
ビューが作成されると、データは生成または格納されず、サーバは将来の使用のためにクエリーを簡単に保持するだけです.ビューが既に存在する以上、クエリー要求を発行できます.たとえば、次のようにします.
テーブル接続
from句に複数のテーブルが表示されている場合は、各テーブル間の接続条件を同時に含める必要があります.例:
テーブル別名の定義
from句の外でテーブルを参照する方法は2つあります.は、employeeのような完全なテーブル名を使用する.emp_id; 各テーブルに別名を指定し、クエリに必要な場所で別名を使用します.
例:
別名の前にasキーを使用することもできます.たとえば、次のようにします.
where句
where句は、結果セットで不要なローをフィルタリングするために使用されます.たとえば、employeeテーブルをクエリーする必要がありますが、head tellerという名前の従業員データのみを取得する場合は、クエリーのwhere句で指定できます.
この句にはフィルタ条件が1つしか含まれていませんが、必要に応じてオペレータand、or、またはnot分割を使用して、より多くの条件を同時に含めることができます.
where句でandやorなどのオペレータを同時に使用する必要がある場合は、カッコを使用して条件グループ化できます.
groupbyとhaving句
groupby句は、カラム値に基づいてデータをグループ化するために使用されます.groupby句を使用すると同時に、where句と同様にパケットデータをフィルタリングできるhaving句を使用する必要がある場合があります.
次のクエリは、まず各部門に含まれる従業員数を計算し、少なくとも2人の従業員を含む部門名を返します.
order by句
order by句は、結果およびの元のカラムデータまたはカラムデータに基づいて計算された式の結果をソートするために使用されます.例:
業界の科学技術は複数の列を結合して並べ替えます:
結果およびでは、まず従業員IDに基づいてソートされ、口座タイプに基づいてソートされます.
order by句に各列が現れる順序は,各列をソートする順序を決定する.
1.昇順または降順のソート
ソート時に、キーワードascとdescで昇順か降順かを指定できます.デフォルトでは昇順ソートなので、降順ソートにdescキーを付けるだけです.例:
2.式によるソート
order by句の後に式を追加してソートできます.
3.数値プレースホルダによるソート
select句の列に基づいてソートする必要がある場合は、列名の代わりに列がselect句にある位置番号を使用することを選択できます.例えば、ガザは、返される2番目の列と5番目の列に基づいてソートする必要がある場合、以下の方法を採用することができる.
転載先:https://www.cnblogs.com/zifeiy/p/8804529.html
文の名前
使用目的
select
結果セットに含まれる列を特定
from
データを抽出するテーブルと、これらのテーブルがどのように接続されているかを示します.
where
不要なデータのフィルタ
group by
使用したい列の値を持つ行をグループ化するために使用します.
having
不要なグループをフィルタ
order by
最後の結果セットの行を1つ以上の列でソートします.
select文はいくつかの構成またはサブ文から構成される.しかし、MySQLでは、select句が必要なのは1つだけです.
select句
SELECT * FROM department;
このクエリでは、from句にはテーブル(department)が1つしかリストされず、select句は結果セットにすべてのdepartmentテーブルの列を含める必要があるだけです(*番号で表されます).クエリの意味は次のようになります.
もちろん、departmentテーブルの最後の列のサブセットのみを取得することもできます.たとえば、次のようにします.
SELECT name FROM department;
したがってselect句の役割は以下のように要約できる.
select句に次のように追加できます.
例:
SELECT emp_id,
'ACTIVE',
emp_id * 3.14159,
UPPER(lname)
FROM employee;
組み込み関数を実行する必要がある場合や、単純な式の評価を行う必要がある場合は、from句を完全に省略できます.たとえば、次のようにします.
SELECT VERSION(), USER(), DATABASE();
MySQLバージョン、ユーザー、および現在のデータベース名が返されます.
列の別名
select句の各要素の後に列の別名を追加して、カスタムラベルの目的を達成できます.
SELECT emp_id,
'ACTIVE' status,
emp_id * 3.14159 empid_x_pi,
UPPER(lname) last_name_upper
FROM employee;
句の中で列名をより明確に表すために、これらの別名の前にキーワードasを付けることができます.たとえば、次のようにします.
SELECT emp_id,
'ACTIVE' AS status,
emp_id * 3.14159 AS empid_x_pi,
UPPER(lname) AS last_name_upper
FROM employee;
重複行の削除
selectキーワードの後にdistinctキーワードを追加して、重複する行を除去できます.
SELECT DISTINCT cust_id FROM account;
from句
テーブルは、関連するローの集合です.3つのタイプがあります.
create table
文で作成されたテーブル)create view
句を使用して作成されたビュー).サブクエリによって生成されたテーブル
サブクエリは、別のクエリに含まれるクエリです.サブクエリはselect文の各部分に表示され、カッコに含まれます.from句では、サブクエリは、他のクエリ句(from句が他のテーブルとインタラクティブである)に基づいて一時テーブルを生成する役割を果たします.例:
SELECT
e.emp_id, e.fname, e.lname
FROM (
SELECT
emp_id, fname, lname, start_date, title
FROM employee
) e;
周辺クエリでは、サブクエリは別名(この例ではe)で参照されます.
表示
ビューは、データ辞書に格納されたクエリーで、テーブルのように動作しますが、実際にはデータ(実際には仮想テーブル)はありません.ビューに対するクエリーが発行されると、クエリーはビュー定義にバインドされ、最終的に実行されるクエリーが生成されます.例:クエリーemployeeテーブルのビューを定義します.内部レイプ関数の呼び出しが含まれています.
CREATE VIEW employee_vw AS
SELECT emp_id, fname, lname,
YEAR(start_date) start_year
FROM employee;
ビューが作成されると、データは生成または格納されず、サーバは将来の使用のためにクエリーを簡単に保持するだけです.ビューが既に存在する以上、クエリー要求を発行できます.たとえば、次のようにします.
SELECt emp_id, start_year FROM employee_vw;
テーブル接続
from句に複数のテーブルが表示されている場合は、各テーブル間の接続条件を同時に含める必要があります.例:
SELECT employee.emp_id, employee.fname,
employee.lname, department.name dept_name
FROM employee
INNER JOIN
department
ON employee.dept_id = department.dept_id
テーブル別名の定義
from句の外でテーブルを参照する方法は2つあります.
例:
SELECT e.emp_id, e.fname,
e.lname, d.name dept_name
FROM employee e
INNER JOIN
department d
ON e.dept_id = d.dept_id
別名の前にasキーを使用することもできます.たとえば、次のようにします.
SELECT e.emp_id, e.fname,
e.lname, d.name dept_name
FROM employee AS e
INNER JOIN
department AS d
ON e.dept_id = d.dept_id
where句
where句は、結果セットで不要なローをフィルタリングするために使用されます.たとえば、employeeテーブルをクエリーする必要がありますが、head tellerという名前の従業員データのみを取得する場合は、クエリーのwhere句で指定できます.
SELECT emp_id, fname, lname, start_date, title
FROM employee
WHERE title = 'Head Teller';
この句にはフィルタ条件が1つしか含まれていませんが、必要に応じてオペレータand、or、またはnot分割を使用して、より多くの条件を同時に含めることができます.
SELECT emp_id, fname, lname, start_date, title
FROM employee
WHERE title = 'Head Teller'
AND start_date > '2018-01-01'
where句でandやorなどのオペレータを同時に使用する必要がある場合は、カッコを使用して条件グループ化できます.
SELECT emp_id, fname, lname, start_date, title
FROM employee
WHERE (title = 'Head Teller' AND start_date > '2018-01-01')
OR (fname='zifeiy' AND start_date > '2017-01-01')
groupbyとhaving句
groupby句は、カラム値に基づいてデータをグループ化するために使用されます.groupby句を使用すると同時に、where句と同様にパケットデータをフィルタリングできるhaving句を使用する必要がある場合があります.
次のクエリは、まず各部門に含まれる従業員数を計算し、少なくとも2人の従業員を含む部門名を返します.
SELECT d.name, count(e.emp_id) num_employees
FROM department d INNER JOIN employee e
ON d.dept_id = e.dept_id
GROUP BY d.name
HAVING count(e.emp_id) > 2;
order by句
order by句は、結果およびの元のカラムデータまたはカラムデータに基づいて計算された式の結果をソートするために使用されます.例:
SELECT open_emp_id, product_cd
FROM account
ORDER BY open_emp_id;
業界の科学技術は複数の列を結合して並べ替えます:
SELECT open_emp_id, product_cd
FROM account
ORDER BY open_emp_id, product_cd;
結果およびでは、まず従業員IDに基づいてソートされ、口座タイプに基づいてソートされます.
order by句に各列が現れる順序は,各列をソートする順序を決定する.
1.昇順または降順のソート
ソート時に、キーワードascとdescで昇順か降順かを指定できます.デフォルトでは昇順ソートなので、降順ソートにdescキーを付けるだけです.例:
SELECT account_id, product_cd, open_date, avail_balance
FROM account
ORDER BY avail_balance DESC;
2.式によるソート
order by句の後に式を追加してソートできます.
SELECT cust_id, cust_type_cd, city, state, fed_id
FROM customer
ORDER BY RIGHT(fed_id, 3);
3.数値プレースホルダによるソート
select句の列に基づいてソートする必要がある場合は、列名の代わりに列がselect句にある位置番号を使用することを選択できます.例えば、ガザは、返される2番目の列と5番目の列に基づいてソートする必要がある場合、以下の方法を採用することができる.
SELECT emp_id, title, start_date, fname, lname
FROM employee
ORDER BY 2, 5;
転載先:https://www.cnblogs.com/zifeiy/p/8804529.html