2019-03-08 TIL

2019-03-08

TIL

SQL

SELECT 칼럼 FROM 테이블;

SELECT DISTINCT 칼럼 FROM 테이블;
// 중복 제외하고 셀렉트

SELECT COUNT(칼럼) FROM 테이블;
SELECT COUNT(*) FROM 테이블; // 테이블의 records 수

SELECT * WHERE 조건;
// 조건: City="Berlin" 등.. 칼럼="값" 형식
SELECT * FROM Persons WHERE LastName BETWEEN 'Hansen' AND 'Pettersen';
// BETWEEN 키워드는 값의 범위를 지정한다.
// 위 경우,
// "LastName"의 값이 알파벳 순서상 "Hansen"과 "Pettersen" 사이(inclusive)인 record들을 SELECT한다.

SELECT 칼럼 FROM 테이블 ORDER BY 칼럼[, 칼럼, ..];

INSERT INTO 테이블명(칼럼1, 칼럼2, ..) VALUES (대응값1, 대응값2, ..);
----
INSERT INTO Customers(CustomerID, CustomerName, ContactName, Address, City, PostalCode, Country) VALUES (100, "ASDF", "A", 123, "SEOUL", 12332, "Korea");

UPDATE 테이블명 SET 칼럼="값" WHERE 조건;

WHERE절로 조건을 명시하지 않으면 모든 records를 업데이트한다. 주의


DELETE FROM 테이블명 WHERE 조건;

SELECT * FROM 테이블 WHERE 칼럼 LIKE '_e%';

LIKE 를 써줘야 와일드카드를 쓸수있다. 와일드카드 문자 : % , _, [abc..], [!abc..]… DB시스템에 따라 다를 수 있으니 찾아서 쓰자.


// Alias
SELECT 칼럼 AS 별칭[, 칼럼 AS 별칭 , ..] FROM 테이블;

JOIN

  • INNER JOIN enter image description here 명시한 조건에 부합되는 record만 모아준다

    SELECT 테이블.칼럼, 테이블.칼럼, .. // 표시하고자 하는 각 테이블의 칼럼들
    FROM 왼쪽테이블
    INNER JOIN 오른쪽테이블 ON 조건;
  • LEFT (OUTER) JOIN enter image description here 왼쪽 테이블을 모두 가져오고, 명시한 조건에 부합되는 record의 경우 오른쪽 테이블의 값을 붙여준다. 부합되지 않는 경우 null을 값으로 넣는다.

SELECT Customers.CustomerID, Customers.CustomerName, Customers.ContactName, Orders.OrderID, Orders.OrderDate
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
  • RIGHT (OUTER) JOIN enter image description here LEFT와 마찬가지. 오른쪽을 모두 가져온다.

    SELECT 테이블.칼럼, 테이블.칼럼, .. // 표시하고자 하는 각 테이블의 칼럼들
    FROM 왼쪽테이블
    RIGHT JOIN 오른쪽테이블 ON 조건;

w3school Exercise 중..

Choose the correct JOIN clause to select all the records from the Customers table plus all the matches in the Orders table.

SELECT *
FROM Orders
RIGHT JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
  • FULL (OUTER) JOIN enter image description here

    SELECT 테이블.칼럼, 테이블.칼럼, .. // 표시하고자 하는 각 테이블의 칼럼들
    FROM 왼쪽테이블
    FULL OUTER JOIN 오른쪽테이블 ON 조건;

    w3school : Full Outer Join (w3school 의 연습장은 아직 RIGHT, FULL JOIN을 지원하지 않음. 대신 글 내용에 결과를 넣어줬으니 참고하자.)


기본적으로 왼쪽,오른쪽 두 테이블에 대한 연산?이며, 세개 테이블을 JOIN하고 싶다면 1, 2, 3 중 둘을 JOIN하고, 그 결과와 나머지 테이블을 JOIN하여 가능하다.


JOIN에 대한 레퍼런스(다해님자료)


Minchang Kim
Minchang Kim
웹/앱 개발자 김민창입니다! 좋은 하루 되세요!