3장 SELECT : 데이터 조회의 기본
<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;
<연산자 우선순위>
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 연산자
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;