n 312 SQL基本
4669 ワード
🏆 学習目標トランザクション. ACIDについて説明できる必要があります. SQLマルチテーブルクエリが使用可能である必要があります. GROUP BYを提供する必要があります. SQL
一般文字列 数字 単純演算 FROM
テーブルに関連付けられている場合は、必要なコマンドとして宣言する必要があります.結果をエクスポートするデータベース・テーブルを指定します.の特定の属性 を使用するテーブル
SELECT属性1,属性2
FROMテーブル名;
--例
SELECT customers.FirstName, customers.LastName
FROM customers;
表のすべての属性を選択
SELECT *
FROMテーブル名;
--例
SELECT *
FROM customers;は、ワイルドカード(ワイルドカード)であり、全選択に使用される. WHERE
(オプション)フィルタとして使用されるクエリー文.
特定の値と同じデータを検索
SELECT属性1,属性2
FROMテーブル名
WHERE属性1=「特定値」
--例
SELECT customers.FirstName, customers.LastName
FROM customers
WHERE customers.FirstName = 'Helena';
特定の値以外のデータの検索
SELECT属性1,属性2
FROMテーブル名
WHERE属性2<>「特定値」
--例
SELECT customers.FirstName, customers.LastName
FROM customers
WHERE customers.FirstName <> 'Helena';
特定の値より大きいデータまたはそれより小さいデータをフィルタリングする場合、<、>、より大きい値、より小さい値には<=、>=が使用されます.
SELECT属性1,属性2
FROMテーブル名
WHERE属性1>「特定値」;
SELECT属性1,属性2
FROMテーブル名
WHERE特性1<="特定値";
文字列内の特定の値に似た値をフィルタする場合は、LIKEと"%"または"*"を使用します.
SELECT属性1,属性2
FROMテーブル名
WHERE特性2 LIKE"%特定文字列";
--例
SELECT customers.FirstName, customers.LastName
FROM customers
WHERE customers.LastName LIKE '%han%';
INを使用して、リストの値に一致するデータをフィルタします.
SELECT属性1,属性2
FROMテーブル名
WHERE属性2 IN(「特定値1」,「特定値2」)
--例
SELECT customers.FirstName, customers.LastName
FROM customers
WHERE customers.LastName IN ('Hansen', 'Johansson');
値のないNULLを検索する場合は、ISを使用します.
SELECT *
FROMテーブル名
WHERE属性1 IS NULL;
--例
SELECT *
FROM employees
WHERE employees.ReportsTo is NULL;
NULLはどんな場合に使いますか?
値がない場合はNOTを使用します.
SELECT *
FROMテーブル名
WHERE特性1 IS NOT NULL;
ORDER BY
返されるデータ結果をソートする方法に関するオプション.
デフォルトのソートは昇順です.
SELECT *
FROMテーブル名
ORDER BY属性1;
--例
SELECT *
FROM employees
ORDER BY employees.EmployeeId;
降順でソートすることもできます.
SELECT *
FROMテーブル名
ORDER BY属性1 DESC;
--例
SELECT *
FROM employees
ORDER BY employees.EmployeeId DESC;
LIMIT
返されるデータ結果の数を決定します.クエリ文で使用する場合は、最後に追加する必要があります.
データ結果の数を200個に制限できます.
SELECT *
FROMテーブル名
LIMIT 200;
--例
SELECT *
FROM customers
LIMIT 10;
DISTINCT
ユニークな価格が欲しい場合は、SELECTの後ろに貼って使うことができます.
属性1のみに基づいてユニークな値を選択します.
SELECT DISTICT属性1
FROMテーブル名;
--例
SELECT DISTINCT employees.Title
FROM employees;
プロパティ1、プロパティ2、およびプロパティ3のユニークな「組合せ」値を選択します.
SELECT
DISTINCT
プロパティ.
,プロパティ2
,特性3
FROMテーブル名;
INNER JOIN
共通の部分にのみ接続します.
INNERJOINまたはJOINで運転可能
SELECT *
FROM表1
JOIN表2 ON表1.属性A=表2.特性B;
--例
SELECT
c.FirstName || ' ' || c.LastName AS 'Customer Name',
e.Firstname || ' ' || e.LastName AS 'Employee Name'
FROM customers AS c
JOIN employees AS e ON c.SupportRepId = e.EmployeeId;
OUTER JOIN
Outer JOINには選択肢がたくさんあります
基本的な「左包容性」「右包容性」「full outer join」を見てみましょう
LEFT INCLUSIVEはLEFT OUTER JOINで行えます
SELECT *
FROM表1
LEFTOUTER JOIN表2 ON表1.属性A=表2.属性B
RIGHT INCLUSIVEはRIGHT OUTER JOINのように行うこともできます
SELECT *
FROM表1
RIGHT OUTER JOIN表2 ON表1.属性A=表2.属性B
sqliteではRIGHT OUTER JOIN/FLL OUTER JOINはサポートされていないため、LEFT JOINを使用するために並べ替える方法を使用しています.
複数試行
次に、各コマンドをマージして実行する練習をします.
次の例では、Brazilからの顧客を都市別にグループ化し、各都市の数でソートし、顧客IDで昇順ソートした結果、3つしかありません.
しかし、必ずしも1つのコマンドだけが正しいとは限らないかもしれません.次のSQLクエリ文の違いは何ですか?
SELECT c.CustomerId, c.FirstName, count(c.City) as 'City Count'
FROM customers AS c
JOIN employees AS e ON c.SupportRepId = e.EmployeeId
WHERE c.Country = 'Brazil'
GROUP BY c.City
ORDER BY 3 DESC, c.CustomerId ASC
LIMIT 3;
[reference]
ER図/ERD符号と符号
SQL
データ照会(SELECT)と複数のセクション
データ照会(SELECT)はデータオペレータ(DML)であり、データ分析で最もよく使われるコマンドである.
「データ照会」(SELECT)は、分析に必要なデータを照会するために複数のセクションで使用されます.
SQLコマンド
SELECT
「≪選択|Select|emdw≫」などのデータ・セットに含めるプロパティを指定します.
SELECT 'hello world';
SELECT 2;
SELECT 15 + 3;
テーブルに関連付けられている場合は、必要なコマンドとして宣言する必要があります.結果をエクスポートするデータベース・テーブルを指定します.
SELECT 특성_1
FROM 테이블_이름;
-- 예시
SELECT FirstName
FROM customers;
テーブルでの特定のプロパティの使用SELECT属性1,属性2
FROMテーブル名;
--例
SELECT customers.FirstName, customers.LastName
FROM customers;
表のすべての属性を選択
SELECT *
FROMテーブル名;
--例
SELECT *
FROM customers;
(オプション)フィルタとして使用されるクエリー文.
特定の値と同じデータを検索
SELECT属性1,属性2
FROMテーブル名
WHERE属性1=「特定値」
--例
SELECT customers.FirstName, customers.LastName
FROM customers
WHERE customers.FirstName = 'Helena';
特定の値以外のデータの検索
SELECT属性1,属性2
FROMテーブル名
WHERE属性2<>「特定値」
--例
SELECT customers.FirstName, customers.LastName
FROM customers
WHERE customers.FirstName <> 'Helena';
特定の値より大きいデータまたはそれより小さいデータをフィルタリングする場合、<、>、より大きい値、より小さい値には<=、>=が使用されます.
SELECT属性1,属性2
FROMテーブル名
WHERE属性1>「特定値」;
SELECT属性1,属性2
FROMテーブル名
WHERE特性1<="特定値";
文字列内の特定の値に似た値をフィルタする場合は、LIKEと"%"または"*"を使用します.
SELECT属性1,属性2
FROMテーブル名
WHERE特性2 LIKE"%特定文字列";
--例
SELECT customers.FirstName, customers.LastName
FROM customers
WHERE customers.LastName LIKE '%han%';
INを使用して、リストの値に一致するデータをフィルタします.
SELECT属性1,属性2
FROMテーブル名
WHERE属性2 IN(「特定値1」,「特定値2」)
--例
SELECT customers.FirstName, customers.LastName
FROM customers
WHERE customers.LastName IN ('Hansen', 'Johansson');
値のないNULLを検索する場合は、ISを使用します.
SELECT *
FROMテーブル名
WHERE属性1 IS NULL;
--例
SELECT *
FROM employees
WHERE employees.ReportsTo is NULL;
NULLはどんな場合に使いますか?
値がない場合はNOTを使用します.
SELECT *
FROMテーブル名
WHERE特性1 IS NOT NULL;
ORDER BY
返されるデータ結果をソートする方法に関するオプション.
デフォルトのソートは昇順です.
SELECT *
FROMテーブル名
ORDER BY属性1;
--例
SELECT *
FROM employees
ORDER BY employees.EmployeeId;
降順でソートすることもできます.
SELECT *
FROMテーブル名
ORDER BY属性1 DESC;
--例
SELECT *
FROM employees
ORDER BY employees.EmployeeId DESC;
LIMIT
返されるデータ結果の数を決定します.クエリ文で使用する場合は、最後に追加する必要があります.
データ結果の数を200個に制限できます.
SELECT *
FROMテーブル名
LIMIT 200;
--例
SELECT *
FROM customers
LIMIT 10;
DISTINCT
ユニークな価格が欲しい場合は、SELECTの後ろに貼って使うことができます.
属性1のみに基づいてユニークな値を選択します.
SELECT DISTICT属性1
FROMテーブル名;
--例
SELECT DISTINCT employees.Title
FROM employees;
プロパティ1、プロパティ2、およびプロパティ3のユニークな「組合せ」値を選択します.
SELECT
DISTINCT
プロパティ.
,プロパティ2
,特性3
FROMテーブル名;
INNER JOIN
共通の部分にのみ接続します.
INNERJOINまたはJOINで運転可能
SELECT *
FROM表1
JOIN表2 ON表1.属性A=表2.特性B;
--例
SELECT
c.FirstName || ' ' || c.LastName AS 'Customer Name',
e.Firstname || ' ' || e.LastName AS 'Employee Name'
FROM customers AS c
JOIN employees AS e ON c.SupportRepId = e.EmployeeId;
OUTER JOIN
Outer JOINには選択肢がたくさんあります
基本的な「左包容性」「右包容性」「full outer join」を見てみましょう
LEFT INCLUSIVEはLEFT OUTER JOINで行えます
SELECT *
FROM表1
LEFTOUTER JOIN表2 ON表1.属性A=表2.属性B
RIGHT INCLUSIVEはRIGHT OUTER JOINのように行うこともできます
SELECT *
FROM表1
RIGHT OUTER JOIN表2 ON表1.属性A=表2.属性B
sqliteではRIGHT OUTER JOIN/FLL OUTER JOINはサポートされていないため、LEFT JOINを使用するために並べ替える方法を使用しています.
複数試行
次に、各コマンドをマージして実行する練習をします.
次の例では、Brazilからの顧客を都市別にグループ化し、各都市の数でソートし、顧客IDで昇順ソートした結果、3つしかありません.
しかし、必ずしも1つのコマンドだけが正しいとは限らないかもしれません.次のSQLクエリ文の違いは何ですか?
SELECT c.CustomerId, c.FirstName, count(c.City) as 'City Count'
FROM customers AS c
JOIN employees AS e ON c.SupportRepId = e.EmployeeId
WHERE c.Country = 'Brazil'
GROUP BY c.City
ORDER BY 3 DESC, c.CustomerId ASC
LIMIT 3;
[reference]
ER図/ERD符号と符号
Reference
この問題について(n 312 SQL基本), 我々は、より多くの情報をここで見つけました https://velog.io/@ssu_hyun/n312databaseテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol