SQLコンセプトとSQLクエリーのまとめ[TIL 2021.08.26]
SQL
Structured Query Languageの略で、構造化Query言語に翻訳
検索
直訳すると「疑問文」の意味になります
保存された情報のフィルタリングの詳細について
SQLクエリー文
CREATE DATABASE
新しい
直訳すると「疑問文」の意味になります
保存された情報のフィルタリングの詳細について
SQLクエリー文
CREATE DATABASE
新しい
CREATE DATABASE[データベース名]
例
CREATE DATABASE testDB
DROP
基本構文
DROP DATABASE[データベース名]
DROP TABLE[テーブル名]
例
DROP DATABASE testDB;
//데이터 베이스 자체를 삭제
DROP TABLE Persons;
//해당 테이블만 삭제.
ALTER
基本構文
ALTER TABLE「テーブル名」ADD「追加するカラム名」データ型(データサイズ)カラム属性
ALTER TABLE[テーブル名]DROP COLUMN[削除するカラム名]
例
ALTER TABLE Persons
ADD Birthday DATE;
//Persons라는 테이블에 Birthday라는 컬럼을 만듬 이때 속성은 DATE임.
ALTER TABLE Persons
DROP COLUMN Birthday;
//Persons라는 테이블의 Birthday라는 컬럼을 날려버림.
TRUNCATE
基本構文
TRUNCATE TABLE[テーブル名]
CRAEAT TABLE
CREATE TABLE 表の名前
例
CREATE TABLE Persons(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);
//PersonID라는 필드를 만듬. 해당 필드의 타입은 int(숫자임)
//LastName과 나머지 필드들은 문자열이며 최대 255자리수까지 입력가능.
Select
例
SELECT DISTINCT Country FROM Customers;
//Customers 테이블에서 Country라는 필드만 중복없이 출력해라
SELECT City FROM Customers;
//Customers 테이블에서 City라는 필드만 출력해라
SELECT* FROM Customers;
//Customers 테이블에서 모든 필드를 다 출력해라
From
FROMの後ろには
Distinct
例
SELECT DISTINCT Country FROM Customers;
//Customers 테이블에서 Country라는 필드만 중복없이 출력해라
Where
SELECT * FROM Customers
WHERE City= 'Berlin';
//Customers라는 테이블에서 City라는 필드명에 'Berlin'이라는 값이 들어가 있는것의 row를 전부다 출력하라.
SELECT * FROM Customers
WHERE NOT City= 'Berlin';
//Customers라는 테이블에서 City라는 필드명에 'Berlin'이라는 값이 들어가 있는것만 빼고 모든 값을 전부다 출력하라.
SELECT* FROM Customers
WHERE City = 'Berlin'
AND PostalCode = 12209;
//Customers라는 테이블에서 City라는 필드명에 'Berlin'이라는 값과 PostalCode라는 필드명에 12209라는 값이 있는 것만 출력하라.
SELECT* FROM Customers
WHERE City = 'Berlin'
OR PostalCode = 12209;
//Customers라는 테이블에서 City라는 필드명에 'Berlin'이라는 값과 PostalCode라는 필드명에 12209라는 값이 하라나도 있다면 해당되는 것은 다 출력하라.
Order By
SELECT * FROM Customers
ORDER BY City ;
//Customer라는 테이블에서 City라는 필드명의 값이 있는것들을 오름차순으로 출력
SELECT * FROM Customers
ORDER BY City DESC;
//Customer라는 테이블에서 City라는 필드명의 값이 있는것들을 내림차순으로 출력
SELECT * FROM Customers
ORDER BY Country, City;
//우선 Country를 기준으로 오름차순으로 정렬을 한번 한 후, 그 값을 바탕으로 City를 기준으로 오름차순으로 정렬함. 두번째 정렬 에서 Country값의 순서는 변하지 않음. 오직 City의 순서만 변경
Insert
INSERT INTOテーブル名(column、column、...)
VALUE(値1、値2、...)
例
INSERT INTO Customers
(
CustomerName,
Address,
City,
PostalCode,
Country
)
VALUES(
'Hekkan Burger',
'Gateveien 15',
'Sandnes',
'4306',
'Norway'
)
;
//CustomerName이라는 column에 'Hekkan Buger'를 추가
//나머지도 동일,
Null
例
SELECT * FROM Customers
WHERE PostalCode IS NULL;
//PostalCode라는 필드에 NUll이 있다면 해당 row를 모두 출력
SELECT * FROM Customers
WHERE PostalCode IS NOT NULL;
//PostalCode라는 필드의 값이 NULL이 아니라면 해당 row를 모두 출력
Update
きほんけいじょう
UPDATE[テーブル]SET[column]=「変更する値」WHERE[条件]
条件がない場合は、テーブル内のすべてのカラムが変更する値にUPDATEされます.
例
UPDATE Customers
SET City = 'Oslo';
//Customers라는 테이블의 City라는 column의 모든값을 Oslo로 바꾼다.
UPDATE Customers
SET City = 'Oslo'
WHERE Country = 'Norway';
//Country가 'Norway'일 경우 City를 'oslo'로 변경한다.
UPDATE Customers
SET City = 'Oslo',
Country = 'Norway'
WHERE CustomerID = 32;
//CustomerID가 32이면 County는 Norway로 City는 Oslo로 변경한다.
Delete
deleteを使用して
DELETE FROM[表]WHERE[条件]
例
DELETE FROM Customers
WHERE Country = 'Norway';
//Country가 Norway인 행을 삭제.
DELETE FROM Customers;
//Customers의 테이블에서 모든 행을 삭제.
集約関数MIN()
きほんけいじょう
SELECT MIN(列)FROM[表名]
例
SELECT MIN(Price)
FROM Products;
//Price column중 가장 낮은 값을 반환
集約関数MAX()
きほんけいじょう
SELECT MAX(列)FROM[表名]
例
SELECT MAX(Price)
FROM Products;
//Price column중 가장 큰 값을 반환
集約関数COUNT()
特定の列の数字
SELECT COUNT()FROM[表名]WHERE条件式
例
SELECT * FROM Products
WHERE Price = 18.00;
//Products 테이블에서 Price가 18.00인것을 반환
SELECT COUNT(*) FROM Products
WHERE Price = 18.00;
//Products 테이블에서 Price가 18.00인 행의 숫자를 알려줌 이때 column명은 COUNT(*)
集約関数AVG()
SELECT AVG(列)FROM[表名]
例
SELECT AVG(Price)
FROM Products;
//Products테이블의 Price 컬럼의 모든 값의 평균을 냄 이때 컬럼명은 AVG(price)
集約関数SUM()
特定の列の和を計算する関数
きほんけいじょう
SELECT SUM()FROM[表名]
例
SELECT SUM(Price)
FROM Products;
//products테이블의 price컬럼의 모든 값을 더한 결과를 알려줌 이때 컬럼명은 SUM(Price)
Like
主に
きほんけいじょう
SELECT*FROM[表名]WHERE LIKE[条件]
例
SELECT * FROM Customers
WHERE City LIKE 'a%';
//City라는 컬럼에서 a로 시작하는 열을 반환
SELECT * FROM Customers
WHERE City LIKE '%a';
//City라는 컬럼에서 a로 끝나는 열을 반환
SELECT * FROM Customers
WHERE City LIKE '%a%';
//City라는 컬럼에서 a를 포함하는 열을 반환
SELECT * FROM Customers
WHERE City LIKE 'a%b';
//City라는 컬럼에서 a로 시작하로 b로 끝나는 열을 반환
SELECT * FROM Customers
WHERE City NOT LIKE 'a%';
//City라는 컬럼에서 a이외의 알파뱃으로 시작하는 열을 반환
SELECT * FROM Customers
WHERE City LIKE '_a%';
//City의 두번째 글자가 a인 열을 반환
SELECT * FROM Customers
WHERE City LIKE '[acs]%';
//City의 첫번째 글자가 a or c or s 인 열을 반환
SELECT * FROM Customers
WHERE City LIKE '[a-f]%';
//City의 첫번째 글자가 a~f인 경우 해당 열을 반환
SELECT * FROM Customers
WHERE City LIKE '[!acf]%';
//City의 첫번째 글자가 a,c,f가 아닌경우 해당 열을 반환
IN
SELECT*FROM[テーブル名]WHERE[カラム名]IN(値,値)
例
SELECT * FROM Customers
WHERE Country IN ('Norway','France');
//Country의 값이 Norway이거나, France인 값이 있는 열을 반환 둘중에 하나라도 있으면 반환
SELECT * FROM Customers
WHERE Country NOT IN('Norway', 'France');
//Country의 값이 Norway, France가 아닌 열을 반환
Between
基本構文
SELECT*FROM[表]WHERE[列]BETWEND A AND B
例
SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20;
//Price라는 컬럼중 10~20사이에 있는 값을 반환해라 이때 1과 20도 포함
SELECT * FROM Products
WHERE Price NOT BETWEEN 10 AND 20;
//Price라는 컬럼에서 10~20사이에 있지 않은 열을 반환
SELECT * FROM Products
WHERE ProductName BETWEEN 'Geitost' AND 'Pavlova';
//productName에서 이름이 Geitost와 Pavlova사이에 있는 열을 반환 (오름차순)
Alias (as)
SELECT CustomerName,
Address,
PostalCode AS Pno
FROM Customers;
//기존 컬럼이 PostalCode이지만 간결하고 알기쉽게 하기위해 Alias를 사용하여 Pno로 변경 아래 사진 참조하면 이해가 더 간결
SELECT * FROM Customers AS Consumers;
//FROM도 Customers라고 쓰기 싫으니 Consumers로 변경해서 사용이 가능.
Join
2つ以上のテーブルを接続してデータを取得します:
1.INNERJOIN:内部結合(交差)
2.LEFT/RIGHT JOIN->サブセット
以下のブログ記事を参照して、より良い理解を得てください.
https://pearlluck.tistory.com/46
下のYouTube 35強と36強を見ると理解にも役立ちます.
https://www.youtube.com/watch?v=NAuHvZDU15M&t=31s
例
SELECT *
FROM Orders LEFT JOIN Customers
ON Orders.CustomerID = Customers.CustomerID;
//Orders를 기준으로 Customers와 Left조인을 하였으며 이때 기준은 각각의 CustomerID라는 컬럼임. 최종적으로는 Orders와 JOIN이 공통적으로 가지고 있는것과 Orders가 독자적으로 가지고 있는것만 합친 후 반환 합쳐질때 customers에만 독자적으로 있는 부분은 null처리됨.
SELECT *
FROM Orders INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
//INNER조인으므로 Orders와 Customers의 CustomerID가 공통으로 들어가 있는것만 합친 후 반환
SELECT *FROM Orders
RIGHT JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
//LEFT 조인과 반대
Group By
SELECT列FROM表GROUP BYグループ化する列
例
SELECT Count(CustomerID),Country
FROM Customers GROUP BY Country;
//customers라는 테이블의 customerID라는 컬럼의 수를 Count로 나타내고 GROUP BY를 사용하여 동일한 Country가 몇개씩 있는지를 나타냄. 여기서 추가로 SELECT Country를 하는 이유는 사용하지 않으면 어느나라가 몇번씩 Count가 되었는지 눈으로 확인하기 어렵기 때문.
SELECT COUNT(CustomerID),Country
FROM Customers
GROUP BY Country
ORDER BY
COUNT(CustomerID) DESC;
//위와 동일하지만 Order BY를 사용해서 Count가 가장 많은 것부터 내림차순으로 정렬하게끔 수행
下のYouTube 30強を見て、もっと理解しました.
https://www.youtube.com/watch?v=zf4XyeifrqI
関連項目:https://www.w3schools.com/sql/exercise.asp?filename=exercise_database7
https://www.youtube.com/watch?v=zf4XyeifrqI
https://pearlluck.tistory.com/46
Reference
この問題について(SQLコンセプトとSQLクエリーのまとめ[TIL 2021.08.26]), 我々は、より多くの情報をここで見つけました https://velog.io/@juunghunz/데이터베이스-SQLTIL-2021.08.26テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol