📊 EMP TABLE(사원)의 데이터
📊 DEPT TABLE(부서)의 데이터
- EMP, DEPT 테이블의 데이터를 활용
- DB 시험 대비 예제 풀이
ㅤ
ㅤ
- 사원 정보를 관리하는 테이블을 생성하려 합니다. 이 테이블에서 관리하는 정보로는 사원번호, 사원명, 부서번호, 부서명, 직급, 부서명이 있습니다. 해당 테이블명을 MY_EMP라고 했을 때, 테이블 생성 쿼리문을 작성하세요. 단, 기본키는 사원번호로 하고 모든 정보는 NULL값을 허용하지 않습니다.
CREATE TABLE MY_EMP( EMPNO INT PRIMARY KEY , ENAME VARCHAR(10) NOT NULL , DEPTNO INT NOT NULL , DNAME VARCHAR(10) NOT NULL , JOB VARCHAR(10) NOT NULL );
ㅤ
-- 학생 테이블에 학번이 4번, 이름이 김자바, 성적이 80, 주소가 울산인 데이터 삽입
INSERT INTO student (STU_NO, STU_NAME, SCORE, ADDR)
VALUES (4, '김자바', 80, '울산');
-- 학생 테이블에 학번이 2번, 이름이 이자바인 데이터 삽입
INSERT INTO student (STU_NO, STU_NAME)
VALUES (2, '이자바');
-- 학번이 1번인 학생을 삭제하는 커밋 작성
DELETE FROM student WHERE STU_NO=1;
-- 학번이 3번 이상이면서 주소가 NULL인 학생을 삭제
DELETE FROM student WHERE (STU_NO >= 3) AND ADDR IS NULL;
- 위에서 생성한 MY_EMP에 데이터를 삽입하는 쿼리문과 모든 데이터를 삭제하는 쿼리문을 작성하세요.
-- 데이터 삽입 INSERT INTO my_emp VALUES(1, '홍자바', 1, '개발부', '팀장'); INSERT INTO my_emp VALUES(2, '이자바', 2, '인사부', '대리'); INSERT INTO my_emp VALUES(3, '박자바', 3, '회계부', '과장'); INSERT INTO my_emp VALUES(4, '정자바', 3, '회계부', '사원');
-- 데이터 삭제 -- 모든 데이터 삭제 DELETE * FROM MY_EMP;
-- EX) 조건부 삭제 -- EX) 이름이 '정자바'인 사원의 데이터 삭제 DELETE FROM MY_EMP WHERE ENAME = '정자바';
ㅤ
UPDATE basic_board
SET
WRITER = '김자바'
WHRER BOARD_NUM = 1;
- 위에서 생성한 MY_EMP에서 사원번호가 1번인 사원의 이름을 ‘김자바’로, 직급은 ‘대리’로 수정하세요.
UPDATE my_emp SET ENAME = '김자바' , JOB = '대리' WHERE EMPNO = 1;
ㅤ
아래의 문제부터는 EMP, DEPT 테이블을 참고하여 풀이
ㅤ
에스테리스크( * ) : ALL
-- 모든 사원의 모든 정보를 조회 SELECT * FROM EMP
LIKE 연산자 / 와일드카드(%, _)
- 와일드 카드 : %, _
- '%' : 어떤 글자 (개수 제한 없음)
-- 사원명에서 '이'라는 글자가 포함된 사원 조회 SELECT * FROM emp WHERE ENAME LIKE '%이%';
- '-' : 어떤 글자(개수 제한 '_'개수만큼)
-- 사원명이 세 글자이면서 중간 글자가 '이'인 사원 조회 SELECT * FROM emp WHERE ENAME LIKE '_이_';
-- 사원명에서 세번째 글자가 '이'인 사원 조회 SELECT * FROM emp WHERE ENAME LIKE '__이%';
LIMIT / OFFSET
- LIMIT : 한 번에 몇 개를 조회할 것인지
- OFFSET : 몇 개를 건너뛰고 조회할 것인지
SELECT * FROM board ORDER BY BOARD_NUM LIMIT 10 OFFSET 10; -- LIMIT 한 번에 몇 개 조회할 것인지 -- OFFSET 몇 개를 건너뛰고 조회할 것인지 -- 1P : 0 -- 2P : 5 -- 3P : 10
UPPER()
- 대문자로 변경
LOWER()
- 소문자로 변경
SELECT 'java', UPPER('java'), LOWER('JAVA');
💡 조건을 통한 조회
- <=, >=
- 같지않다 : !=(!, =), <>
- 컬럼이 NULL 경우 : IS NOT NULL
- 컬럼이 NULL이 아닌 경우 : IS NOT NULL
-- 급여가 300 이상인 사원들의 사번, 사원명, 급여 조회 SELECT EMPNO, ENAME, SAL FROM emp WHERE SAL >=300;
-- 직급이 대리인 사원들의 사원명, 직급, 급여 조회 SELECT ENAME, JOB, SAL FROM emp WHERE JOB='대리';
-- 직급이 과장이고 급여가 400 이상인 사원들의 모든 정보 조회 -- 같지않다 : !=(!, =), <> SELECT * FROM emp WHERE JOB='과장' AND SAL >= 400;
-- COMM 컬럼이 NULL인 사원의 모든 정보 조회 -- (COMM이 NULL이 아닌 경우) WHERE COMM IS NOT NULL; SELECT * FROM emp WHERE COMM IS NULL;
-- 급여가 500 미만이거나 700 이상이면서, 직급은 차장이고 -- COMM은 NULL인 사원들의 사번, 사원명, 급여, 직급, 커미션 정보를 조회 SELECT EMPNO, ENAME, SAL, JOB, COMM FROM emp WHERE (SAL < 500 OR SAL >= 700) AND JOB='차장' AND COMM IS NULL;
- 급여가 500이하이거나 1000이상인 사원 중에서 커미션이 NULL이 아닌 사원의 사원번호, 사원명, 급여, 커미션을 조회하는 쿼리문을 작성하세요.
SELECT EMPNO , ENAME , SAL , COMM FROM EMP WHERE SAL <= 500 OR SAL >= 1000 ;
ㅤ
- 사원들 중 이름이 ‘이’로 시작하는 사원들의 사번, 이름, 입사일을 조회하되, 사번 기준 오름차순 정렬하여 조회하는 쿼리문을 작성하세요.
SELECT EMPNO , ENAME , HIREDATE FROM emp WHERE ENAME LIKE '이%' ORDER BY EMPNO ASC;