728x90
반응형
먼저 예제 데이터를 불러왔다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | -- 부서 테이블 제거하기 DROP TABLE EMP; -- 사원 테이블 제거하기 DROP TABLE DEPT; -- 급여 테이블 제거하기 DROP TABLE SALGRADE; -- 부서 테이블 제거하기 DROP TABLE EMPLOYEE; -- 사원 테이블 제거하기 DROP TABLE DEPARTMENT; -- 급여 테이블 제거하기 DROP TABLE SALGRADE; -- 부서 테이블 생성하기 CREATE TABLE DEPT( DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY, DNAME VARCHAR2(14), LOC VARCHAR2(13) ) ; -- 사원 테이블 생성하기 CREATE TABLE EMP( EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY, ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT); -- 급여 테이블 생성하기 CREATE TABLE SALGRADE( GRADE NUMBER, LOSAL NUMBER, HISAL NUMBER ); -- 사원 테이블에 샘플 데이터 추가하기 INSERT INTO DEPT VALUES(10, '경리부', '서울'); INSERT INTO DEPT VALUES(20, '인사부', '인천'); INSERT INTO DEPT VALUES(30, '영업부', '용인'); INSERT INTO DEPT VALUES(40, '전산부', '수원'); -- 부서 테이블에 샘플 데이터 추가하기 INSERT INTO EMP VALUES(1001, '김사랑', '사원', 1013, to_date('2007-03-01','yyyy-mm-dd'), 300, NULL, 20); INSERT INTO EMP VALUES(1002, '한예슬', '대리', 1005, to_date('2007-04-02','yyyy-mm-dd'), 250, 80, 30); INSERT INTO EMP VALUES(1003, '오지호', '과장', 1005, to_date('2005-02-10','yyyy-mm-dd'), 500, 100, 30); INSERT INTO EMP VALUES(1004, '이병헌', '부장', 1008, to_date('2003-09-02','yyyy-mm-dd'), 600, NULL, 20); INSERT INTO EMP VALUES(1005, '신동협', '과장', 1005, to_date('2005-04-07','yyyy-mm-dd'), 450, 200, 30); INSERT INTO EMP VALUES(1006, '장동건', '부장', 1008, to_date('2003-10-09','yyyy-mm-dd'), 480, NULL, 30); INSERT INTO EMP VALUES(1007, '이문세', '부장', 1008, to_date('2004-01-08','yyyy-mm-dd'), 520, NULL, 10); INSERT INTO EMP VALUES(1008, '감우성', '차장', 1003, to_date('2004-03-08','yyyy-mm-dd'), 500, 0, 30); INSERT INTO EMP VALUES(1009, '안성기', '사장', NULL, to_date('1996-10-04','yyyy-mm-dd'),1000, NULL, 20); INSERT INTO EMP VALUES(1010, '이병헌', '과장', 1003, to_date('2005-04-07','yyyy-mm-dd'), 500, NULL, 10); INSERT INTO EMP VALUES(1011, '조향기', '사원', 1007, to_date('2007-03-01','yyyy-mm-dd'), 280, NULL, 30); INSERT INTO EMP VALUES(1012, '강혜정', '사원', 1006, to_date('2007-08-09','yyyy-mm-dd'), 300, NULL, 20); INSERT INTO EMP VALUES(1013, '박중훈', '부장', 1003, to_date('2002-10-09','yyyy-mm-dd'), 560, NULL, 20); INSERT INTO EMP VALUES(1014, '조인성', '사원', 1006, to_date('2007-11-09','yyyy-mm-dd'), 250, NULL, 10); -- 급여 테이블에 샘플 데이터 추가하기 INSERT INTO SALGRADE VALUES (1, 700,1200); INSERT INTO SALGRADE VALUES (2, 1201,1400); INSERT INTO SALGRADE VALUES (3, 1401,2000); INSERT INTO SALGRADE VALUES (4, 2001,3000); INSERT INTO SALGRADE VALUES (5, 3001,9999); COMMIT; | cs |
위 데이터를 바탕으로 아래에서 SQL 쿼리를 공부해보았다.
1 2 3 4 | -- 조회 시 별칭 부여하기 -- ( 뒤에 AS를 붙이거나, 생략하면 된다. 조회할때 일시적으로 바뀌는거지, 컬럼이 실제로 바뀌는건 아니다.) SELECT EMPNO AS 사번, ENAME 이름, SAL AS MONEY FROM EMP; | cs |
포함된 데이터를 조회하는 방법
- LIKE 연산자와 와일드 카드.
- 와일드카드
- 1. '%' : 랜덤한 글자(글자수는 마음대로), '김%', '%이'
- 2. '_' : 랜덤한 한 글자. '김_', '_박_'
- '_김%'
1 2 3 4 | -- EX> 이름에 '이'가 포함된 사원 조회 SELECT * FROM EMP WHERE ENAME LIKE '%이%'; | cs |
대소문자로 변경해주는 함수
- UPPER() : () 안에 들어간 컬럼의 값을 대문자로 조회
- LOWER() : () 안에 들어간 컬럼의 값을 소문자로 조회
- INITCAP() : () 안에 들어간 컬럼의 값을 앞글자만 대문자로 조회
1 2 | SELECT UPPER(MEM_NAME) , LOWER(MEM_NAME) , INITCAP(MEM_NAME) FROM MEMBER; | cs |
1 2 3 4 5 | -- 지저분해서 별칭 AS를 함께주어서 하는게 통상적인 방법이다. SELECT UPPER(MEM_NAME) 대문자 , LOWER(MEM_NAME) 소문자 , INITCAP(MEM_NAME) 앞글자만 FROM MEMBER; | cs |
1 2 3 4 5 | -- MEMBER 테이블의 회원명으로 'java'라는 글자가 -- 포함된 모든 회원의 정보를 조회(대소문자 구분 없이 조회) SELECT * FROM MEMBER WHERE UPPER(MEM_NAME) LIKE UPPER('%java%'); | cs |
검색하고자 하는것도 대문자, 비교하고자하는것도 대문자로 해야 조회가된다.
728x90
반응형
'✨ DBMS > Oracle' 카테고리의 다른 글
[Oracle / SQL] 더미테이블(DUAL)과 유용한 문자 함수 예제 (0) | 2023.02.21 |
---|---|
[Oracle / SQL] 쿼리문 합치기 UNION, UNION ALL (0) | 2023.02.21 |
[Oracle / SQL] sqldeveloper 경고 - 일부 모듈을 설치하지 못했습니다. (0) | 2023.02.17 |
[Oracle / SQL] SQL SELECT, FROM, WHERE 기초 공부 (0) | 2023.02.16 |
[Oracle] DBMS와 SQLD에 대해서 알아보자. (0) | 2023.02.16 |
댓글