Study/SQL

Study/SQL

[SQL]데이터 입력, 수정, 삭제 - INSERT, UPDATE, DELETE, TRUNCATE, DROP

1. 데이터 입력하기 - INSERT 테이블에 새로운 데이터를 입력할 때 INSERT문을 사용한다. INSERT INTO 테이블명 (col1, col2, col3, ...) VALUES (value1, value2, value3, ...) INSERT INTO 테이블명 (value1, value2, value3, ...) INSERT문을 사용할때 INSERT INTO 다음 테이블명을 입력하고, 괄호안에 데이터를 컬럼명 순서대로 기술한다. 만약 괄호를 쓰지 않으면 전체 컬럼에 모두 데이터를 입력해야 한다. 이때 숫자는 그대로 기술해도 되지만 문자와 날짜는 작은 따옴표로 감싸줘야한다. EX ) 사원 번호 2812, 사원 이름 JACK, 월급 3500, 입사일 2019년 6월 5일, 직업 ANALYST인 사원..

Study/SQL

[SQL] 서브 쿼리 사용하기 3 - HAVING절, FROM절, SELECT 절

5. HAVING절의 서브 쿼리 HAVING절은 그룹 함수로 검색된 데이터 간 비교할 때 사용한다. EX ) 직업과 직업별 토탈 월급을 출력하는데, 직업이 SALESMAN인 사원들의 토탈 월급보다 더 큰 값들만 출력하시오 직업이 SALESMAN인 사원이라는 조건이 있기 때문에 WHERE절을 사용해 작성할 수도 있다. SELECT JOB, SUM(SAL) FROM EMP WHERE SUM(SAL) > (SELECT SUM(SAL) FROM EMP WHERE JOB = 'SALESMAN') GROUP BY JOB; 하지만 그룹 함수로 검색조건을 작성했기 때문에 에러가 발생한다. 이 처럼 그룹 함수로 검색조건을 작성할 때는 HAVING절을 사용해야한다. SELECT JOB SUM(SAL) FROM EMP GR..

Study/SQL

[SQL] 서브 쿼리 사용하기 2 - NOT IN, EXISTS/NOT EXISTS

3. NOT IN 특정 쿼리에서 검색한 데이터 중 다른 쿼리에 없는 데이터를 검색하려면 NOT IN 연산자를 사용한다. EX ) 관리자가 아닌 사원들의 이름과 월급, 직업을 출력하라. 관리자가 아닌 사원은 직속 부하 직원이 한 명도 없는 사원을 의미한다. 즉 사원번호(EMPNO)가 관리자 번호(MGR)와 같지 않은 사원을 찾으면 된다. 이 경우 또한 단일행 서브 쿼리의 연산자를 사용하면 에러가 발생한다. SELECT ENAME, SAL, JOB FROM EMP WHERE EMPNO != (SELECT MGR FROM EMP); ORA-01427: single-row subquery returns more than one row 따라서 이 경우에는 다중 행 서브 쿼리 중 NOT IN을 사용하여 문제를 해결..

Study/SQL

[SQL] 서브 쿼리 사용하기 1 - 단일 행, 다중 행

1. 단일행 서브쿼리 특정 쿼리에서 검색한 값을 다른 쿼리에서 받아 검색하려면 서브 쿼리를 사용해야 한다. EX ) JONES 보다 더 많은 월급을 받는 사원들의 이름과 월급을 출력하라 JONES 보다 더 많은 월급을 받는 사원의 정보를 조회하기 위해서는 JONES의 월급을 알아야 한다. -- JONES의 월급 SELECT SAL FROM EMP WHERE ENAME = 'JONES'; JONES의 월급을 검색한 결과, 2975임을 알 수 있다. 이를 바탕으로 위의 문제를 해결할 수 있다. -- JONES 보다 더 많은 월급을 받는 사원 SELECT ENAME, SAL FROM EMP WHERE SAL > 2975; 여기서 위의 쿼리에서 2975라는 값은 첫번째 검색했던 JONES의 월급을 검색하는 쿼리..

Study/SQL

[SQL]여러 테이블의 데이터를 조인해서 출력하기(ON절, USING절, NATURAL JOIN, LEFFT/RIGHT OUTER JOIN)

join은 크게 oracle join과 ANSI/ISO SQL:1999 standard이 있다 이전에 포스팅한 EQUI JOIN, NON EQUI JOIN, OUTER JOIN, SELF JOIN과 같은 문법을 ORACLE JOIN이라 하고, 오늘 배울 ON절, USING절, NATRUAL JOIN, LEFT/RIGHT OUTER JOIN은 모두 ORALCE 9i 버전부터 지원하는 문법. 두 문법은 작성 SQL의 차이만 있을 뿐 성능의 차이는 없음 1. ON절 ON절은 ORACLE 작성법에서 사용했던 WHERE절을 대신해 JOIN에 대한 조건을 쓸 때 사용한다. 예를 들어 사원의 이름과 부서 위치를 출력하는 경우, 두 방법의 작성법을 비교하면 아래와 같다. -- oracle EQUI JOIN SELECT..

Study/SQL

[SQL] JOIN - EQUI JOIN, NON EQUI JOIN, OUTER JOIN, SELF JOIN

1. EQUI JOIN 서로 다른 테이블에 있는 컬럼들의 데이터를 하나의 결과로 조인해서 출력하기 위해 EQUI JOIN을 사용한다. 예를 들어사원테이블과 부서 테이블을 조인하여 이름과 부서 위치를 출력할 경우 아래와 같이 쿼리를 작성한다. SELECT ename, loc FROM EMP, DEPT WHERE EMP.deptno = DEPT.deptno; EMP와 DEPT 테이블을 서로 조인하기 위해선느 조인 조건이 있어야 한다. 조인 조건을 두개의 테이블을 연결하기 위한 연결고리이다. 여기서 조인 조건이 EMP 테이블의 부서 번호가 DEPT 테이블의 부서 번호와 같다라는 조건( : EMP.deptno = DEPT.deptno) 처럼 조인 조건이 이퀄(=)이면 EQUI JOIN이라한다. ※ 검색조건과 조..

Study/SQL

[SQL] SQL 코딩테스트 연습 - 프로그래머스 SQL 고득점 Kit

요즘 SQL에 관심을 갖는 사람들이 많아졌는데 SQL을 실습하기에는 데이터도 없고 예제 문제도 없어서 고민하는 분들을 위해 좋은 사이트를 알려드리려고 합니다! * 광고는 아니고 단순히 개인적으로 괜찮은 사이트 인 것 같아 소개드리는 겁니다 광고는 아니고 아주 오래전에 공부하려고 즐겨찾기 해둔 곳인데 오늘 갑자기 생각나 소개해드리려고 합니다. 저도 SQL을 책 보면서 공부를 하고 있는데 사실 책에는 답이 다 나와있어서 안 보려 해도 보이니까,,, 이게 공부가 되고 있나 싶을 때가 있는데 오늘 소개해드릴 이 사이트에서는 나의 전체적인 SQL 쿼리 실력이 어느 정도 되는지 확인이 가능할 것 같아서 다른 분들께도 좋은 정보일 것 같아 가져와봤습니다! 바로 프로그래머스의 코딩 테스트 연습입니다. 코딩테스트 연습 ..

Study/SQL

[SQL]열을 행으로, 행을 열로 변환하기 및 데이터 분석 함수(PIVOT, UNPIVOT, SUM OVER, PATIO_TO_REPORT, ROLLUP, CUBE, GROUPING SETS, ROW_NUMBER)

047 COLUMN을 ROW로 출력하기 1. SUM+DECODE 테이블의 행(row)을 열(col)로 출력하려면 합을 계산하는 SUM 함수와 조건 함수 DECODE를 사용합니다. 행을 열로 출력하는 과정은 조건 함수 DECODE를 통해 조건을 만족하는 데이터 중 특정 컬럼의 합을 구하는 것으로 아래와 같이 나타낼 수 있습니다. SUM( DECODE(조건COL, 조건, 출력COL) ) 예를 들어 A학교 학생인 학생의 한달 소비금액의 총합을 구하는 경우 SUM(DECODE(학교, A학교, 소비금액))과 같이 나타낼 수 있습니다. 가로로 출력하는 과정을 아래 문제를 통해 풀어보겠습니다. Q. 부서 번호, 부서 번호별 월급의 총합을 출력하는데, 가로로 출력하시오 1. 부서 별 월급 정보를 출력 문제를 통해 알 ..

Study/SQL

[SQL]함수로 순위,등급,비율 출력하기(RANK, DENSE_RANK, NTILE,CUME_DIST)

041 데이터분석 함수로 순위 출력하기 (RANK) 데이터의 순위를 출력하기 위해서 RANK 함수를 사용합니다. RANK() 뒤에 OVER 다음에 나오는 괄호에 안에 출력하고 싶은 데이터를 정렬하는 SQL 문장을 넣으면 그 컬럼 값에 대한 데이터의 순위가 출력됩니다. 또한 오름차순, 또는 내림차순에 대한 옵션을 사용자가 설정할 수 있습니다. 예를 들어 'column' 컬럼에 대해여 순위에 대한 RANK 함수를 사용하기 위해서 다음과 같이 사용합니다. RANK() OVER (ORDER BY 'column' DESC/ESC) EX ) 직업이 SALESMAN인 사원들의 이름, 직업, 커미션, 커미션의 순위를 출력하라 위 문제에서 직업을 SALESMAN으로 제한 하기 때문에 조건문(WHERE)에 이에 대한 조건..

Study/SQL

[SQL]데이터 요약값 찾기(MAX, MIN, AVG, SUM, COUNT)

- PC 또는 태블릿 환경에서 보는 것을 추천드립니다. - 이전 과정의 연습문제를 확인하고 싶으면 다음을 참고하시기 바랍니다. [SQL]초보자를 위한 SQL 200제 문제풀이 모음 이 글은 현재까지 작성된 문제풀이를 기준으로 작성되었습니다. (2021. 06. 24 업데이트 기준) P A R T 1 입문 SQL 첫발 내딛기 001 ~ 004 [SQL] PART1 - 01 초보자를 위한 SQL 200제 문제풀이(001~004) - 이 글.. seoyuun22.tistory.com 036 최댓값 출력하기(MAX) 데이터에서 최대값을 출력하는 경우 MAX 함수를 사용합니다. EX) 사원번호 중 최대 값 SELECT MAX(EMPNO) FROM EMP; Q. 사원테이블에서 최대 월급을 출력하라 더보기 사원 테이..