본문 바로가기

문법

[SQL] WHERE 절을 활용하자, IN! 이번 글에서 알아볼 IN과 EXITS는 BETWEEN과는 조금 다릅니다. BETWEEN 이 어느 시작값에서 어느 끝값까지 범위값을 조건으로 하는데에 비해서 IN 과 EXITS는 범위라는 개념보다는 여러 해당 값을 조건으로 한다고 할 수 있습니다. 예를 들면 IN은 OR의 개념과 비슷하다고 보면 되겠는데, 절대 똑같다는 말이 아닙니다. SELECT department_id, first_name, salary FROM employees WHERE department_id=10 OR department_id=20 OR department_id=30; 위의 쿼리는 부서아이디가 10, 20, 30인 사원들의 정보를 보여주고 있는데, 이 또한 너무 깁니다.. 마치 우리가 전글처럼 AND로 사용해서 범위를 조건으로 .. 더보기
[SQL] WHERE 절을 활용하자, BETWEEN! 앞에서 AND와 OR을 이용한 WHERE절의 활용법을 익혔습니다. 한가지 생각해보죠. 우리가 회사의 사원들중에 월급이 '4000' 에서 '9000' 사이를 받는 직원들을 조회하고 싶다. 그렇다면 쿼리를 어떻게 작성해야 할까요? 앞에서 배운 AND를 이용해서 나타낼 수 있습니다. SELECT dep.department_name, emp.first_name, emp.salary FROM hr.employees emp INNER JOIN hr.departments dep USING (department_id) WHERE emp.salary>4000 AND emp.salary4000 ↔ WHERE emp.salary BETWEEN 4000 AND 9000; AND emp.salary 더보기
[SQL] WHERE 절을 활용하자, AND · OR!! 지금까지 WHERE절을 접할때 단순한 연산자 즉, 기본 수식 연산자(+, -, /, * )와 비교연산자(=, ,=) 를 이용하여 쿼리에 조건을 부여할 수 있었는데, 이것들 말고도 다른 표현식들이 있습니다. 이를테면, 이번에 소개할 "AND"와 "OR"이 그것인데, 의미는 우리가 알고있는 영어식 표현과 동일합니다. AND는 당연히 '그리고~' 라는 표현이 되겠고 OR은 '또는, 그렇지 않으면' 라는 표현으로 해석할 수 있겠습니다. 이것들을 이용해서 WHERE절에 한개 이상의 조건을 부여할 수 있는데, 다음 실습문을 통해서 차례대로 AND · OR 에 대해서 알아봅시다. SELECT department_id, manager_id, first_name FROM hr.employees WHERE dep.. 더보기
[SQL] NATURAL JOIN, 자연스럽나요? 타이틀이 좀. 웃깁니다. 자~ 넘어갑시다. 이번에는 NATURAL JOIN에 대해서 알아봅시다. 이것도 별것 없습니다. 단지 조인하는 두테이블에 대해서 자동으로 조인조건을 같은 데이터형식과 컬럼명을 사용하고 있는~ 으로 한정시킵니다. 알아서 묶어주는 거죠. 그래서 조인조건을 명시해줄 필요가 없는데요. NATURAL JOIN 도 어느정도 의미만 알것 같아서. 바로 예시만 보고 끝을 내도록 할게요. employees 테이블과 departments 테이블을 내부조인을 해서 데이터를 조회한겁니다. 결과는 NATURAL JOIN과 동일한 조회결과를 내기위해서 다음과 같이 쓰였습니다. SELECT emp.department_id, dep.department_name, emp.first_name FROM hr.emp.. 더보기
[SQL] SELF JOIN, 내 자신과의 조인 이번에 다루게 될 것은 SELF JOIN 입니다. 말 그대로 해당 테이블 자신과 조인을 하는 것을 일컫는데요. 사실 잘 쓰이진 않지만 쓰는 경우도 있습니다. 일단 소개를 하자면 내부조인을 하든 외부조인을 하든 자기 자신의 테이블의 이름을 적어주면 되겠는데요. 이를테면 다음과 같이요. FROM hr.employees INNER JOIN hr.employees 이렇게 적어주면 되겠습니다. 그렇다면, 어떻게 쓰일까요? 예로. employees 테이블을 살펴보면 employee_id 와 manager_id 컬럼이 있는 것을 볼 수 있는데요. 여기서 manager_id는 어느 한사원의 상관의 employee_id가 되겠죠? 그러니 한사원의 상관의 이름이나 기타 다른 정보를 알고 싶을때 사용될 수 있습니다. 다음과.. 더보기
[SQL] CROSS JOIN 또다른 이름 카타시안 프로덕트(Cartesian Product) 이글에서는 CROSS JOIN, 크로스 조인에 대해서 알아볼까 합니다. 타이틀에서 명시했듯이 카타시안 프로덕트라고 하는 이름도 있는데요. 원래 존재하던 SQL 키워드인 카타시안 프로덕트가 SQL이 표준화가 진행되면서 ANSI 표준으로 바뀌었는데 그 이름이 CROSS JOIN 이 된것입니다. 이런 이야기는 앞에서 이야기 했구요. 개념적인 것을 먼저 살펴 보도록 할게요. '모든 경우를 고려한다!' 이것이 바로 크로스 조인의 핵심입니다. 사실 크로스 조인은 개념적인 조인이라고도 하는데요. 이유는 실제 프로젝트에서 이 크로스 조인이 쓰이는 경우는 없기 때문이죠. 그래서 조인이 아니다라고도 한답니다. 위의 말처럼 모든 경우를 고려하기 때문에 우리가 적던 ON절이나 USING절을 배제한체 조인조건을 적지 않습니다... 더보기
[SQL] OUTER JOIN, 외부조인(LEFT, RIGHT, FULL) INNER JOIN, 내부조인에 이은 외부조인 입니다. 내부조인을 접한후에 외부조인을 접하면 개념이 이해가 안갈데가 더 많은데요. 요렇게 생각해보는건 어떨까요? 내부조인 결과+@ 제가 이렇게 한건 결국 외부조인은 내부조인처럼 조인조건을 만족하는 결과에다가(내부조인의 결과와 같습니다.) 내가 조인을 건 어느 테이블의 데이터를 더 보겠다는 겁니다. 그러니 외부조인을 이용해서 데이터를 조회했을 경우에 어느 한쪽 테이블의 값이 null이고 다른 테이블의 데이터는 값이 나오게 되는거죠. 일단 이렇게 알고나서 구문형식을 보도록 할게요. SELECT 테미블명.컬럼명1, 테미블명.컬럼명2, 테미블명.컬럼명3, .. FROM 테이블 명1 (LEFT, RIGHT, FULL) OUTER JOIN 테이블명2 ON 조인조건; .. 더보기
[SQL] INNER JOIN, 내부조인에 대해서 알아보자! (Equi INNER JOIN) 사용하게될 테이블들의 컬럼명입니다. desc조회를 했어요. 1. employees 테이블입니다. 2. departments 테이블입니다. 우선 타이틀에 두개의 조인타입에 대해서 적어 놧는데요. 동일한 타입의 JOIN 입니다. 다만 INNER JOIN 할때 명시해 놓은 조인조건의 결과, 로우가 조인에 참여한 테이블의 조회조건에 상응하는 로우수가 같기때문에 동등하단 의미로 Equi라는 것이 붙은 것입니다. 똑같으니 염려 마세요. 내부조인이라고 불리우는 INNER JOIN 외에도 OUNTER JOIN, CROSS JOIN, NATURAL JOIN이 존재합니다. 우선 여기선 INNER JOIN에 대해서 알아볼건데요. 문법은 다음과 같습니다. SELECT 테이블명.컬럼명1, 테이블명.컬럼명2, ... FROM 테.. 더보기
[SQL] JOIN 조인에 대해서 알아보자! 우리가 여태껏 SQL 문을 써오면서 썻던 hr 스키마 계정에서 항상 employees 테이블에 있는 department_id를 활용을 했었는데요. 그때 아이디로만 활용을 했을뿐 부서명을 알지 못했는데요. 우선 employees 테이블을 조회하여 확인해 보겠습니다. 보세요. 부서명과 관련된 컬럼이 없죠? 그리고 다른 것도 한번 보세요. 하고 있는일, 과업(JOB_ID) 부분도 조회해보면 ID만 알수 있을뿐 이름을 알 수 없습니다. 그럼 이러한 정보는 어디에 있을까요? employees 테이블과 같이 다른 테이블에 그 정보들이 존재합니다. 여기서 테이블에 대해서 설명하고자 한다면 성격이나 데이터 타입이 비슷한 것을 세트로 묶어 놓은 것이라 이야기 할수 있는데요. 우리가 요구한 각 정보들은 department.. 더보기
[SQL] 그룹으로 묶어서 관리해봅시다, GROUP BY! 이제 이쯤 보셨다면 SQL이랑은 많이 친해졌을듯 한데요~ 조금만더 열심히 해요~ 저두 열심히 한답니다!! 앞에서 SUM(), AVG()에 대해서 조금 했었죠? 이와 같은 함수와 같이 쓰이는게 'GROUP BY'입니다. 조금 눈치 채셨을지는 모르겠어요. 이 구문은 데이터들을 묶어서 쿼리를 처리할때 쓰인답니다. 묶는다라.. 감이 안잡히시나요? 간단합니다. 이상한 예이지만. 초등학교 전국 체전이 있습니다. 여기서 우리는 A 부터 Z까지 26개 초등학교가 있는데요. 우리는 여기서 각 초등학교의 참가한 학생수를 알고 싶은겁니다. 각!! 학교별로 말이죠. 그러면 여기서 A라는 학교에 속해있는 100명의 학생들은(가정) A라는 학교라는 공통점이 있고, B라는 학교에 속해있는 120명의 학생들은 B라는 같은 학교를 다.. 더보기