on my way
Do it! 오라클로 배우는 DB 입문 : 04 SELECT문의 기본 형식 + 실습 문제 본문
Do it! 오라클로 배우는 DB 입문 : 04 SELECT문의 기본 형식 + 실습 문제
wingbeat 2024. 4. 1. 16:03둘째마당. 실무에서 가장 많이 사용하는 SQL, 조회 (중요)
04 SELECT문의 기본 형식
04-1 실습용 테이블 살펴보기
사원 정보가 들어있는 EMP 테이블
EMP는 employee의 약어며, 사원 데이터를 보관 및 관리하는 테이블이다.
회사 부서 정보가 들어있는 DEPT 테이블
사원들의 급여 정보가 들어있는 SALGRADE 테이블
04-2 데이터를 조회하는 3가지 방법 - SELCTION, PROJECTION, JOIN
행 단위로 조회하는 셀렉션
행 단위로, 가로줄의 몇몇 데이터만 선택해서 데이터 조회할 때는 셀렉션
열 단위로 조회하는 프로젝션
열 단위로, 세로 줄의 몇 데이터를 조회하는 방식.
셀렉션 + 프로젝션
상세한 데이터 조회가 가능하다.
두 개 이상의 테이블을 사용하여 조회하는 조인
데이터는 여러 테이블로 쪼개져있다. (중복을 줄이기 위해서) 두 개의 테이블을 하나의 테이블처럼 결과를 조회하는 방식이다.
04-3 SQL의 기본 뼈대, SELECT 절과 FROM 절
SELECT는 저장된 데이터를 조회하는 데 사용한다. (화면에 출력하기 위해서)
SELECT * FROM 이 기본 구성이다.
FROM절은 조회할 데이터가 저장된 테이블의 이름
SELECT절은 명시한 테이블에서 조회할 열이나 여러 열에 저장된 데이터의 조합 또는 연산식
*로 테이블 전체 열 출력하기
테이블 부분 열 출력하기
// 가독성을 위해 들여쓰기, 줄바꿈, 대소문자로 구분하면 더 좋다.
SELECT
empno, ename, deptno
FROM emp;
실행 순서는 FROM 절이 먼저 실행된다. 그래서 작성할 때도 FROM을 먼저 작성해보자.
04-4 중복 데이터를 삭제하는 DISTINCT
GROUP BY를 쓰면 DISTINCT를 안써도 돼서 잘 쓰지 않긴 함.
DISTINCT로 열 중복 제거 (열이 한 개인 경우)
SELECT distinct deptno FROM emp;
DISTINCT로 열 중복 제거 (열이 여러 개인 경우)
SELECT distinct job, deptno FROM emp;
MANAGER들의 부서 번호가 다르기에 중복 데이터가 아님.
열(컬럼명)을 , 로 구별해서 쓸 수 있다.
ALL로 중복되는 열 제거 없이 그대로 출력
SELECT ALL job, deptno FROM emp;
ALL을 생략해도 됨.
04-5 한 눈에 보기 좋게 별칭 설정하기
열과 연산식
SELECT ename, sal, sal*12+comm, comm FROM emp;
별칭 지정 방식
""를 해도 안해도 무관하지만, 컬럼명에 공백을 포함 하고 싶다면 " " 에 넣어야 한다.
실무에서 별칭 지정
SELECT ename, sal, sal*12+comm AS 연봉, comm FROM emp;
웬만하면 한글보다는 영어로.
또한 큰 따옴표("")를 별칭을 만들 때 넣지 않는 이유는 Java에서 처리될 수 있기 때문이다.
SELECT ename, sal, sal*12+comm as "emp annsal" , comm, '삼성' 회사명,1 FROM emp; // 실행 됨
SELECT ename, sal, sal*12+comm as "emp annsal" , comm, '삼성' 회사명,1, company FROM emp; // 에러
홑따옴표(')는 문자열이다.
AS 없이 공백을 써도 사용은 된다. (그치만 사용은 많이 안함)
SQL에서 '과 "
- 단일 인용부호('): 주로 문자열을 표현할 때 사용. 예를 들어, 'Hello, World!'와 같이 문자열을 나타낼 때 사용된다. SQL에서는 문자열을 표현할 때 '로 감싸서 표현한다.
- 이중 인용부호("): 주로 식별자(테이블명, 열명 등)를 표현할 때 사용. 만약 테이블명이나 열명에 공백이나 특수문자가 포함되어 있을 때 사용된다. 예를 들어, "Customer Name"과 같이 열명을 나타낼 때 사용된다. 이중 인용부호 안에는 테이블명이나 열명이 들어간다. 이중 인용부호를 사용하면 대소문자 구분이 되고, 단일 인용부호를 사용하면 대소문자 구분이 되지 않는다.
예시:
- SELECT * FROM "Customers" WHERE "Country" = 'USA'; : "Customers" 테이블에서 "Country" 열이 'USA'인 행을 선택
- SELECT * FROM Customers WHERE Country = 'USA'; : Customers 테이블에서 Country 열이 'USA'인 행을 선택
즉, '와 "의 주된 차이점은 문자열과 식별자(테이블명, 열명 등)를 표현하는 데 사용된다는 것이다.
SQL에서 주석
-- 한 줄
/*
여러 줄
*/
04-6 원하는 순서로 출력데이터를 정렬하는 ORDER BY
데이터를 정렬된 상태로 출력하기 위해서 ORDER BY절을 사용한다.
ORDER BY 정렬기준
컬럼명 ASC/DESC
SELECT deptno, ename, mgr
FROM emp
ORDER BY deptno, ename;
중첩된 것은 두번째 order by로 정렬된다.
오름차순 사용하기
SELECT ename
FROM emp
ORDER BY ename asc;
ascending - asc 생략 가능하다.
내림차순 사용하기
SELECT ename
FROM emp
ORDER BY ename desc;
descending - desc
SELECT deptno, ename, mgr
FROM emp
ORDER BY deptno asc, ename asc, mgr;
중첩된 것은 두번째 order by 값(ename)으로 정렬된다.
ORDER BY는 맨 끝에 위치하고, 가장 늦게 시행 됨. 성능에 많은 영향을 준다.
SELECT * FROM EMP ORDER BY deptno asc, sal desc;
확인 문제
SELECT DISTINCT job FROM emp ;
SELECT
empno EMPLOYEE_NO, ename EMPLOYEE_NAME, mgr MANAGER,
sal SALARY, comm COMMISION, deptno DEPARTMENT_NO
FROM emp
ORDER BY deptno desc, ename asc;
'Computer Science > Database' 카테고리의 다른 글
Do it! 오라클로 배우는 DB 입문 : 06 데이터 처리와 가공을 위한 오라클 함수 + 실습 문제 (0) | 2024.04.02 |
---|---|
Do it! 오라클로 배우는 DB 입문 : 05 더 정확하고 다양하게 결과를 출력하는 WHERE절과 연산자 + 실습 문제 (0) | 2024.04.01 |
Do it! 오라클로 배우는 DB 입문 : 03 오라클 데이터베이스와 도구 프로그램 설치 (0) | 2024.04.01 |
Do it! 오라클로 배우는 DB 입문 : 02 관계형 데이터베이스와 오라클 데이터베이스 (0) | 2024.04.01 |
Do it! 오라클로 배우는 DB 입문 : 01 데이터베이스 (0) | 2024.04.01 |