오늘 배운걸 기준으로 작성(23-07-18)
-- 한줄 주석
/*
* 여러줄 주석
*/
SELECT : 테이블에 원하는 COLUM값을 가져올때 사용
select에서 '*'는 전체를 의미
FROM : 테이블 이름
WHERE : 조건
ORDER BY : 정렬구문 오름차순일 경우 ORDER BY (컬럼) ASC
내림차순일 경우 ASC 대신 DESC를 넣어주면 된다.
아무것도 적혀있지 않을 경우 자동 오름차순으로 명령이 실행된다.
DISTINCT : 중복 제거
<,>,<=,>= : 여러 부등식, A에서 B까지 를 나타낼때 부등식을 여러번 사용 할 필요 없이
'A BETWEEN B'를 이용하여 A와 B사이를 나타낼 수 있다.
!=,<>=,NOT : 같지 않다 부등식, 명령문
OR, IN() : ...또는 이라는 구문으로 같은 열에 값을 여러개 받아오려 할때 IN(값1, 값2) 로 대체 가능하다.
LIKE : 특정 문자, 숫자로 시작하는 값을 찾으려 할때 사용하는 명령문
%문구 -> ...문구로 끝나는 값 찾기
문구% -> 문구...로 끝나는 값 찾기
_문구% -> N( )번째 에 문구...로 끝나는 값 찾기
IS NULL : 값이 없다해서 그 공간은 없는것이 아닌, 아직 배정받지 못한 값으로 표현 되기에 A = NULL이 아닌 A IS NULL 이런식으로 정의한다.
반대로 NULL 값이 아니라면 IS NOT NULL구문을 사용하면 된다.
SUM(), AVG() : 다들 알다 시피 합계, 평균을 나타낼때 사용한다.
COUNT() : ()안의 열을 카운트하여 결과를 보여준다 단, 중복된 값도 카운트 하기 때문에 DISTINCT를 사용하면 중복된 값을 제외하고 카운트 시킬 수 있다.
MAX(), MIN() : 최대값, 최소값을 찾을 때 사용한다.
DUAL TABLE을 이용한 간단한 연산
이때 FROM은 DUAL로 TABLE을 선언하여 가지고 온다.
ABS(파라미터1) : 파라미터 1의 절대값을 가져온다.
TRUNC(파라미터1, 파라미터2) : 파라미터 1의 절대 값을 파라미터 2 만큼 가져온다.
1235.12314, 2 일경우 소수점 2번째 까지가져온다.
결과값 1235.12
파라미터2가 -1일경우 결과값은 1230
EX)
SELECT EMPLOYEE_ID ,FIRST_NAME ,LAST_NAME ,HIRE_DATE -- 원하는걸 선택하여 불러온다.
FROM EMPLOYEES e
WHERE FIRST_NAME = 'Steven'
AND LAST_NAME = 'King'
;
EMPLOYEES에서 Steven King이라는 사람의 ID, FIRST, LAST, 고용날짜를 불러오는 구문
1번. employees 테이블에서 department_id가 100이고
job_id가 FI_MGR인 사람의 모든 데이터 조회
SELECT * FROM EMPLOYEES e
WHERE DEPARTMENT_ID = 100
AND JOB_ID = 'FI_MGR'
;
2번.employees 테이블에서 first_name이 Guy인 사람의 employee_id, first_name,
last_name, job_id 조회
SELECT EMPLOYEE_ID ,FIRST_NAME ,LAST_NAME ,JOB_ID
FROM EMPLOYEES e
WHERE FIRST_NAME = 'Guy'
;
3번. employees 테이블에서 department_id가 50이고 managet_id가 121인 사람의
employee_id, first_name, last_name, job_id 조회\SELECT EMPLOYEE_ID ,FIRST_NAME ,LAST_NAME ,JOB_ID FROM EMPLOYEES e WHERE DEPARTMENT_ID = 50 AND MANAGER_ID =121 ;
SELECT EMPLOYEE_ID AS "ID"
, SALARY "SAL"
FROM EMPLOYEES e
;
SELECT DISTINCT JOB_ID
FROM EMPLOYEES e
;
SELECT *
FROM EMPLOYEES e
WHERE DEPARTMENT_ID IS NULL
;
SELECT *
FROM EMPLOYEES e
WHERE SALARY >= 5000
;
급여가 5000인 이상을 찾는 구문
부서가 50번이거나, 매니저 번호가 100번인 사람
SELECT FIRST_NAME ,LAST_NAME ,MANAGER_ID ,DEPARTMENT_ID
FROM EMPLOYEES e
WHERE DEPARTMENT_ID=50 OR MANAGER_ID =100;
50번 부서가 아닌사람
SELECT * FROM EMPLOYEES e
WHERE NOT DEPARTMENT_ID = 50;
SELECT * FROM EMPLOYEES e
WHERE DEPARTMENT_ID <> 50;
SELECT * FROM EMPLOYEES e
WHERE DEPARTMENT_ID != 50;
위의 모두 결과는 같다
아래 모두 결과는 같다
SELECT *
FROM EMPLOYEES e
WHERE SALARY >= 4000 AND SALARY <= 8000
;
SELECT *
FROM EMPLOYEES e
WHERE SALARY BETWEEN 4000 AND 8000
;
아래 두개의 경우 결과는 같다.
SELECT *
FROM EMPLOYEES e
WHERE SALARY = 6500
OR SALARY = 7700
OR SALARY = 13000
;
SELECT *
FROM EMPLOYEES e
WHERE SALARY IN (6500,7700,13000)
;
문1.
employees 테이블에서 employee_id, first_name, last_anem, job_id를 출력하는데,
job_id가 ST_MAN이고, manager_id가 100이고, salary가 5000이상인 사람.
풀이
SELECT EMPLOYEE_ID ,FIRST_NAME ,LAST_NAME ,JOB_ID
FROM EMPLOYEES e
WHERE JOB_ID = 'ST_MAN'
AND MANAGER_ID = 100
AND SALARY >= 5000
;
문2.
EMPLOYEES 테이블에서 EMPLOYEE_ID, first_name, last_name, JOB_ID
MANAGER_ID, SALARY 를 조회
DEPARTMENT_ID가 10 또는 30 또는 100 또는 90에 속하고,
급여(SALARY)가 5000에서 10000사이 이고
매니저(MANAGER_ID)가 100이 아닌 사람을 조회
풀이
SELECT EMPLOYEE_ID ,FIRST_NAME ,LAST_NAME ,JOB_ID,MANAGER_ID,SALARY
FROM EMPLOYEES e
WHERE DEPARTMENT_ID IN(10,30,90,100)
AND SALARY BETWEEN 5000 AND 10000
AND MANAGER_ID != 100
;
SELECT FIRST_NAME , LAST_NAME
FROM EMPLOYEES e
WHERE FIRST_NAME LIKE 'D%';
SELECT FIRST_NAME , LAST_NAME
FROM EMPLOYEES e
WHERE FIRST_NAME LIKE '%d';
SELECT FIRST_NAME , LAST_NAME
FROM EMPLOYEES e
WHERE FIRST_NAME LIKE '__a%';
SELECT FIRST_NAME , LAST_NAME , COMMISSION_PCT
, DEPARTMENT_ID , JOB_ID
FROM EMPLOYEES e
WHERE COMMISSION_PCT IS NULL;
SELECT FIRST_NAME , LAST_NAME , COMMISSION_PCT ,DEPARTMENT_ID ,JOB_ID
FROM EMP_DETAILS_VIEW edv
WHERE COMMISSION_PCT IS NOT NULL;
SELECT *
FROM EMPLOYEES e
ORDER BY SALARY ASC;
SELECT *
FROM EMPLOYEES e
ORDER BY SALARY DESC;
SELECT sum(SALARY)
FROM EMPLOYEES e ;
SELECT COUNT(*)
FROM EMPLOYEES e ;
SELECT * FROM EMPLOYEES e ;
- 뒤에 코멘트를 붙여서 이름을 수정시킨다 (AS) 생략한다고 생각
SELECT COUNT(COMMISSION_PCT) commition
FROM EMPLOYEES e ;
- EMPLOYEES 테이블에서 FIRST_NAME 중복을 제외한 숫자값을 출력
SELECT COUNT(DISTINCT FIRST_NAME) FIRST_NAME
FROM EMPLOYEES e;
SELECT AVG(SALARY)
FROM EMPLOYEES e ;
ex) 80번 부서의 급여의 평균
SELECT AVG(SALARY)
FROM EMPLOYEES e
WHERE DEPARTMENT_ID = 80
;
SELECT MAX(SALARY)
FROM EMPLOYEES e ;
SELECT MAX(HIRE_DATE)
FROM EMPLOYEES e ;
SELECT MIN(SALARY)
FROM EMPLOYEES e ;
SELECT MIN(HIRE_DATE)
FROM EMPLOYEES e ;
SELECT ABS(-234)
FROM dual;
SELECT ROUND(0.123), ROUND(0.543)
FROM dual;
SELECT TRUNC(1234.56789)
FROM dual;
SELECT TRUNC(1234.56789, 2)
FROM dual;
(파라미터1, 파라미터2) 이때 파라미터 1은 값, 2는 몇번째 자리까지 나타낼지를 의미한다.
많은 도움이 되었습니다, 감사합니다.