SQL 에 대한 개념을 이해하려고 책도 참 여러권 샀다. 다 정독한건 아니고 필요한 곳만 찾아 본것이 많다.
하지만 난 아직 초보다. 프로그래머가 아니라 취미로 배우니 수준이 올라가지 않는다.
SQL 교육을 수강하고 책을 보면서 나름 터득한 걸 적어본다.
나중에 강의하게 되면 설명 쉽게 해줄 생각으로 좀 정리한 자료다.
SQL Aliases
- 칼럼명을 별칭(Aliases)으로 할 수도 있고, 테이블명을 별칭으로 할 수도 있다.
https://www.w3schools.com/sql/sql_join.asp 사이트를 참조하면 개념을 쉽게 이해할 수 있다.
영문이라 처음에는 이해가 잘 안될 수도 있다. 하지만 쿼리문을 계속 사용하다보면 이해가 될 것이다.
무엇이든 배우는데 가장 중요한 것은 개념에 대한 이해다. 개념을 이해하면 응용은 자연스럽게 된다.
select o.OrderID, c.CustomerName 등으로 select 절에 나열(Query 속도상 필요한 칼럼만 뽑는게 좋음)
Orders 테이블의 것만 조회하고 싶다면, select o.* from .... 이라고 하면 된다.
아래 그림의 교집합 안에서 조건에 맞는 걸 또 추출하고 싶다면, Where 조건절을 추가한다.
SELECT o.* FROM Orders o INNER JOIN Customers c ON o.CustomerID=c.CustomerID where o.CustomerID='userid'; // userid 는 PHP 에서 변수로 받은 거라고 보면 됨.
SELF JOIN 은 두개의 물리적인 테이블을 만들어서 원하는 결과를 뽑아내야 하지만, 그럴 필요없이 메모리 공간에 하나의 논리적인 테이블을 만들어서, 물리적인 테이블과 조인하여 결과를 추출하는 것이라고 이해하면 된다.
Update FavoriteBook f INNER JOIN COMMON c ON f.grpidx=c.grpidx SET f.grpNM=c.grpNM where f.grpidx=2;
- FavoriteBook f INNER JOIN COMMON c ON f.grpidx=c.grpidx : 한개의 테이블이라고 생각한다.
- Update 테이블명 SET WHERE 조건
- 오라클 쿼리방식으로 한다면
Update FavoriteBook f, COMMON c SET f.grpNM=c.grpNM where f.grpidx=c.grpidx and f.grpidx=2;
출처: http://link2me.tistory.com/1201 [소소한 일상 및 업무TIP 다루기]
순수하게 A만 뽑아주는 쿼리
SELECT a.id, a.name, a.age, b.mobile, b.internet
FROM a LEFT JOIN b on a.id = b.id
WHERE b.id is null
order by a.id ASC
MySQL 은 FULL OUTER JOIN 은 없다.
LEFT JOIN 과 RIGHT JOIN 을 UNION 으로 묶어서 처리하면 된다.
간단하게 정리한 것이지만 도움되면 댓글이나 공감 눌러주세요.
'SQL' 카테고리의 다른 글
MySQL 두 테이블 불일치 데이터 찾는 SQL (0) | 2018.08.18 |
---|---|
Toad for MySQL - Database Diagram (0) | 2017.06.02 |
[MySQL] 정규식을 활용한 검색 (REGEXP) (0) | 2016.12.11 |
MySQL 컬럼 순서 바꾸기 (0) | 2016.12.10 |
[Oracle] PL/SQL (0) | 2016.11.24 |