본문 바로가기
✨ DBMS/Oracle

[Oracle / SQL] SQL 별칭(AS), 와일드카드, LIKE 연산자, '%' , '_'

by 환풍 2023. 2. 16.
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(2CONSTRAINT PK_DEPT PRIMARY KEY,
     DNAME VARCHAR2(14),
     LOC   VARCHAR2(13) ) ;
 
-- 사원 테이블 생성하기
CREATE TABLE EMP( 
       EMPNO NUMBER(4CONSTRAINT 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(2CONSTRAINT 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'), 300NULL20);
INSERT INTO EMP VALUES(1002'한예슬''대리'1005, to_date('2007-04-02','yyyy-mm-dd'), 250,   8030);
INSERT INTO EMP VALUES(1003'오지호''과장'1005, to_date('2005-02-10','yyyy-mm-dd'), 500,  10030);
INSERT INTO EMP VALUES(1004'이병헌''부장'1008, to_date('2003-09-02','yyyy-mm-dd'), 600NULL20);
INSERT INTO EMP VALUES(1005'신동협''과장'1005, to_date('2005-04-07','yyyy-mm-dd'), 450,  20030);
INSERT INTO EMP VALUES(1006'장동건''부장'1008, to_date('2003-10-09','yyyy-mm-dd'), 480NULL30);
INSERT INTO EMP VALUES(1007'이문세''부장'1008, to_date('2004-01-08','yyyy-mm-dd'), 520NULL10);
INSERT INTO EMP VALUES(1008'감우성''차장'1003, to_date('2004-03-08','yyyy-mm-dd'), 500,    030);
INSERT INTO EMP VALUES(1009'안성기''사장'NULL, to_date('1996-10-04','yyyy-mm-dd'),1000NULL20);
INSERT INTO EMP VALUES(1010'이병헌''과장'1003, to_date('2005-04-07','yyyy-mm-dd'), 500NULL10);
INSERT INTO EMP VALUES(1011'조향기''사원'1007, to_date('2007-03-01','yyyy-mm-dd'), 280NULL30);
INSERT INTO EMP VALUES(1012'강혜정''사원'1006, to_date('2007-08-09','yyyy-mm-dd'), 300NULL20);
INSERT INTO EMP VALUES(1013'박중훈''부장'1003, to_date('2002-10-09','yyyy-mm-dd'), 560NULL20);
INSERT INTO EMP VALUES(1014'조인성''사원'1006, to_date('2007-11-09','yyyy-mm-dd'), 250NULL10);
 
-- 급여 테이블에 샘플 데이터 추가하기
INSERT INTO SALGRADE VALUES (1700,1200);
INSERT INTO SALGRADE VALUES (21201,1400);
INSERT INTO SALGRADE VALUES (31401,2000);
INSERT INTO SALGRADE VALUES (42001,3000);
INSERT INTO SALGRADE VALUES (53001,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
반응형

댓글