SELECT : 데이터 조회의 기본

Jane의 study note.·2022년 12월 2일
0

SQL (Oracle)

목록 보기
2/11

3장 SELECT : 데이터 조회의 기본

<SELECT문을 이용해 할 수 있는 일>

  • 행 선택 (selection)
  • 열 선택 (projection)
  • 테이블과 테이블을 연결(join)

01 SELECT 문의 기본 문법

3.1.1 SQL문 작성 규칙
3.1.2 전체 데이터 조회하기: SELECT * FROM 컬럼;
3.1.3 원하는 열만 조회하고 정렬하기(ORDER BY)
3.1.4 중복된 출력 값 제거하기 : DISTINCT
3.1.5 SQL문을 효율적으로 작성하기 위해 별칭 사용하기: AS
3.1.6 데이터 값 연결하기: || (연결연산자)
3.1.7 산술 처리하기: 데이터값끼리 계산(산술연산자)


3.1.1 SQL문 작성 규칙 p59
1. 대소문자 구분 안함
2. 가독성과 편집의 용이함을 위해 대소문자 구분해서 쓰기, 줄바꿈, 코드수준의 들여쓰기

※ sqldeveloper(오라클코드편집기, oracle 11g이용) 단축키
ctrl + enter 코드 실행, ctrl + space 사용가능 예상코드 미리보기(주피터노트북의 shift tab같은 역할)
ctrl + / 주석처리

3.1.2 전체 데이터 조회하기: *

[예제 3-1] HR.employees 테이블의 모든 정보를 출력하세요.
p61

SELECT *
FROM HR.employees;

3.1.3 원하는 열만 조회하고 정렬하기(ORDER BY)

[예제 3-2] HR.employees 테이블에서 employee_id, first_name, last_name을 출력하세요

SELECT employee_id, first_name, last_name
FROM HR.employees;

3.1.3

p64, ORDER BY : 정렬하기
[예제 3-3] HR.employees 테이블에서 employee_id, first_name, last_name을 출력하고
employee_id를 기준으로 내림차순 정렬하세요

SELECT employee_id, first_name, last_name
FROM employees
ORDER BY employee_id DESC;

3.1.4 중복된 출력 값 제거하기 : DISTINCT

SELECT job_id
FROM HR.employees;

p66, DISTINCT : 중복된 행 제거
[예제 3-4] HR.employees 테이블에서 중복 값이 생기지 않도록 job_id를 출력하세요

SELECT DISTINCT job_id
FROM HR.employees;

3.1.5 SQL문을 효율적으로 작성하기 위해 별칭 사용하기: AS

p68, AS
[예제 3-5] HR.employees 테이블에서 employee_id는 '사원번호', first_name은
'이름', last_name은 '성'으로 출력하세요.

SELECT employee_id AS 사원번호, first_name AS 이름, last_name AS 성
FROM HR.employees;

3.1.6 데이터 값 연결하기: ||

p69 || : 연결연산자
[예제 3-6] HR.employees 테이블에서 employee_id를 출력하고 first_name과 last_name을 붙여서
출력하세요.

SELECT employee_id, first_name||last_name
FROM HR.employees;

p70
[예제 3-7] HR.employees 테이블에서 employee_id를 출력하고 first_name과 last_name을 붙여서
출력하되 가운데 한 칸을 띄워주세요. 다음 열에는 email을 출력하되 @company.com문구를 붙여서 출력하세요

SELECT employee_id,
first_name||' '||last_name,
email||'@'||'company.com'
FROM HR.employees;

3.1.7 산술 처리하기: 데이터값끼리 계산

p71, 산술연산자
[예제 3-8] HR.employees 테이블에서 employee_id,salary, salary에 500을 더한 값, 100을 뺀 값, 10%를 추가해서
2로 나눈 값을 출력하세요.

SELECT employee_id, salary, salary+500, salary-100, (salary*1.1)/2
FROM HR.employees;

3.1.7

p72
[예제 3-9] HR.employees 테이블에서 employee_id를 '사원번호', salary를 '급여', salary+500을 '추가급여', salary-100을 '인하급여'
(salary*1.1)/2를 '조정급여'로 출력하세요.

SELECT employee_id AS 사원번호,
salary AS 급여,
salary+500 AS 추가급여,
salary-100 AS 인하급여,
(salary*1.1)/2 AS 조정급여
FROM HR.employees;


02 WHERE 조건 절을 활용한 데이터 검색

<연산자 우선순위>

  • 괄호 > 부정연산 > 비교연산 > SQL연산
  • 논리연산자: NOT > AND > OR

3.2.1 비교 연산자: 비교 조회 조건 주기 p75
총 6개
1. 등호 연산자 =
2. 부등호 연산자 >=

3.2.2 SQL연산자: 조회 조건 확장하기 p77
총 4개
1. BETWEEN 연산자
2. IN 연산자
3. LIKE 연산자
4. IS NULL 연산자

3.2.3 논리 연산자: 조건 논리를 계속 연결하기 P81삱
총 3개
1. AND 연산자
2. OR 연산자

  1. NOT 연산자(부정 연산자)

3.2.1 비교 연산자: 비교 조회 조건 주기 p75

p75, 1. 등호 연산자 =
[예제 3-10]employee_id가 100인 직원 정보를 출력하세요.

SELECT *
FROM employees
WHERE employee_id = 100;

p76
[예제 3-11]HR.employees 테이블에서 first_name이 David인 직원 정보를 출력하세요.

SELECT *
FROM employees
WHERE first_name = 'David';

p76 2. 부등호 연산자 >=
[예제 3-12]HR.employees 테이블에서 employee_id가 105이상인 직원 정보를 출력하세요.

SELECT *
FROM employees
WHERE employee_id >= 105;

3.2.2 SQL연산자: 조회 조건 확장하기 p77

p77, 1. BETWEEN 연산자
[예제 3-13]HR.employees 테이블에서 salary가 10,000이상이고 20,000 이하인 직원 정보를 출력하세요.

SELECT *
FROM employees
WHERE salary BETWEEN 10000 AND 20000;

p78, 2. IN 연산자
[예제 3-14]HR.employees 테이블에서 salary가 10,000, 17,000, 24,000인 직원 정보를 출력하세요.

SELECT *
FROM employees
WHERE salary IN (10000, 17000, 24000);

p79, 3.LIKE 연산자
[예제 3-15]HR.employees 테이블에서 job_id값이 AD를 포함하는 모든 (%)데이터를 조회하세요.

SELECT *
FROM employees
WHERE job_id LIKE 'AD%';

p80
[예제 3-16]HR.employees 테이블에서 AD를 포함하면서 AD 뒤에 뒤따라오는 문자열이 3자리인 데이터 값을 갖는 직원 정보를 출력하세요
(AD+3자리 데이터값)

SELECT *
FROM employees
WHERE job_id LIKE 'AD___';

select * from employees where job_id 'AD___';

p81, 4. IS NULL 연산자
[예제 3-17] HR.employees 테이블에서 manager_id가 null값인 직원 정보를 출력하세요

SELECT *
FROM employees
WHERE manager_id IS NULL;

3.2.3 논리 연산자: 조건 논리를 계속 연결하기 P81삱

p82 1. AND 연산자
[예제 3-18] HR.employees 테이블에서 급여가 4000을 초과하면서 job_id가 IT_PROG인 값을 조회하세요.

SELECT *
FROM employees
WHERE salary > 4000
AND job_id = 'IT_PROG';

[예제 3-19] HR.employees 테이블에서 급여가 4000을 초과하면서 job_id가 IT_PROG이거나 FI_ACCOUNT인 경우를 조회하세요.

p83, 2. OR 연산자
SELECT *
FROM employees
WHERE salary > 4000
AND job_id = 'IT_PROG'
OR job_id = 'FI_ACCOUNT';

p84,85, 3. NOT 연산자(부정 연산자)
[예제 3-20] HR.employees 테이블에서 employee_id가 105가 아닌 직원을 조회해 보세요.

SELECT *
FROM employees
WHERE employee_id <> 105;

p85
[예제 3-21] HR.employees 테이블에서 manager_id가 null값이 아닌 직원을 조회해 보세요.

SELECT *
FROM employees
WHERE manager_id IS NOT NULL;

0개의 댓글