본문 바로가기
국비지원/DataBase

[DB] 2. select 문장

by cosmog 2022. 11. 8.
반응형
  • sql 문장은 대,소문자를 구별하지 않는다.
  • 숫자는 오른쪽 정렬되고, 문자는 왼쪽 정렬된다.
  • Null값과 0값은 다르다,

 

1️⃣ sql 문장의 작성

select 의 가장 기본이 되는 틀은 아래와 같다.

--모든 열 선택
select * from 테이블 이름;

--특정 열 선택
select 원하는 열 이름 from 테이블 이름;

 

2️⃣ 열 별칭 alias

--열의 이름을 지정하여 변경해줄 수 있다.

select first_name as 이름 from employees;

 

3️⃣ 리터럴(literal) 문자 스트링과 연결 연산자

--||을 이용하여 각 열의 값을 연결해 줄 수 있다. ' ' 로 원하는 구문을 추가해 줄 수도 있다.

select '이름은' || first_name || ' ' || last_name || '입니다'

 

4️⃣ distinct 키워드

--중복 되는 행을 전부 제거하여 보여준다.

select distinct department_id from employees;

 

5️⃣ ROWID와 ROWNUM

  • rowid는 행의 주소를 반환해주고
  • rownum은 행의 번호를 출력해준다.

데이터 제한(연산)

 

1️⃣ 선택된 행 제한 where

where절은 from다음에 위치하고, 조건을 주어 조건에 만족하는 행들만 출력하도록해주는 역할을 한다.

아래와 같이 where절에 job_id가 IT_PROG인 애들만 출력하도록 하게 한것이다.

2️⃣ 비교 연산자

sql 구문에서도 비교연산자의 사용이 가능하다. 조건을 줄 때 사용한다.

3️⃣ Between 연산자

where 뒤에 위치하며 where에서 지정한 열을 [between 하한값 and 상한값] 으로 조건을 준다. 

4️⃣ in 연산자 ⭐중요⭐

in() 안에 있는 값들만 보여주는 역할을 한다.

manager_id가 101, 102, 103인 애들만 보여준것.
job_id가 IT_PROG, FI_MGR, AD_VP인 애들만 보여준 것이다.

 

5️⃣ like 연산자⭐더 중요⭐

where절 뒤에 붙여서 like '키워드' 키워드가 포함된 열을 모두 보여준다.

%와 _기호를 사용하여 키워드에 조건을 줄  수 있다. %A는 A로 끝나는 것, A% A로 시작하는 것 _는 자리수를 의미한다. __A% 세번쨰 자리에 A가 오는 경우를 의미한다.

hire_date가 03년으로 시작하는 데이터를 보여준다.
두번째 자리가 A인 email을 전부 보여준것.

6️⃣ is NULL 연산자

NULL값이 있는 정보들만 보여준다.

is not NULL로 NULL값이 없는 정보만 가져올 수도 있다.

 

7️⃣ 논리연산자

AND / OR / NOR이 있다.

AND가 OR보다 우선시 된다. OR을 먼저 실행하고 싶다면 ()로 묶어준다.

 

데이터 정렬

 

1️⃣ order by

select sql문의 가장 뒤에 위치한다. ASC을 사용하여 오름차순으로 정렬 DESC을 사용하여 내림차순으로 정렬할 수 있다.

 

연습문제
--연습문제
select * from employees;

--1.   모든 사원의 사원번호, 이름, 입사일, 급여를 출력하세요.
select employee_id as 사원번호,
    first_name as 이름,
    hire_date as 입사일,
    salary as 급여 
from employees;

--2.   모든 사원의 이름과 성을 붙여 출력하세요. 열 별칭은 name으로 하세요.
select first_name || ' ' || last_name as name from employees;

--3.   50번 부서 사원의 모든 정보를 출력하세요.
select * from employees where department_id = 50;

--4.   50번 부서 사원의 이름, 부서번호, 직무아이디를 출력하세요.
select first_name, department_id, job_id from employees where department_id = 50;

--5.   모든 사원의 이름, 급여 그리고 300달러 인상된 급여를 출력하세요.
select first_name as 이름, salary as 급여, salary+300 as 인상급여 from employees;

--6.   급여가 10000보다 큰 사원의 이름과 급여를 출력하세요.
select first_name as 이름, salary from employees where salary > 10000;

--7.   보너스를 받는 사원의 이름과 직무, 보너스율을 출력하세요.
select first_name as 이름, job_id as 직무, commission_pct as 보너스율 from employees where commission_pct is not NULL;

--8.   2003년도 입사한 사원의 이름과 입사일 그리고 급여를 출력하세요.(BETWEEN 연산자 사용)
select first_name as 이름, hire_date as 입사일, salary as 급여 from employees where hire_date between '03/01/01' and '03/12/31';

--9.   2003년도 입사한 사원의 이름과 입사일 그리고 급여를 출력하세요.(LIKE 연산자 사용)
select  first_name as 이름, hire_date as 입사일, salary as 급여 from employees where hire_date like '03%'; 

--10. 모든 사원의 이름과 급여를 급여가 많은 사원부터 적은 사원순서로 출력하세요.
select first_name as 이름, salary as 급여 from employees order by 급여 desc;

--11. 위 질의를 60번 부서의 사원에 대해서만 질의하세요. (컬럼: department_id)
select first_name as 이름, salary as 급여, department_id as 부서번호 from employees where department_id = 60 order by 급여 desc;

--12. 직무아이디가 IT_PROG 이거나, SA_MAN인 사원의 이름과 직무아이디를 출력하세요.
select first_name as 이름, job_id as 직무아이디 from employees where job_id = 'IT_PROG' or job_id = 'SA_MAN';

--13. Steven King 사원의 정보를 “Steven King 사원의 급여는 24000달러 입니다” 형식으로 출력하세요.
select first_name || ' ' || last_name || ' 사원의 급여는 ' || salary || '달러 입니다' from employees where first_name = 'Steven' and last_name = 'King';

--14. 매니저(MAN) 직무에 해당하는 사원의 이름과 직무아이디를 출력하세요. (컬럼:job_id)
select first_name as 이름, job_id as 직무아이디 from employees where job_id like '%MAN';

--15. 매니저(MAN) 직무에 해당하는 사원의 이름과 직무아이디를 직무아이디 순서대로 출력하세요.
select first_name as 이름, job_id as 직무아이디 from employees where job_id like '%MAN' order by job_id asc;

 

 

반응형