alter session set nls_Date_format='RR/MM/DD';
CREATE TABLE DEPT
(DEPTNO number(10),
DNAME VARCHAR2(14),
LOC VARCHAR2(13) );
INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO DEPT VALUES (20, 'RESEARCH', 'DALLAS');
INSERT INTO DEPT VALUES (30, 'SALES', 'CHICAGO');
INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON');
CREATE TABLE EMP (
EMPNO NUMBER(4) NOT NULL,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4) ,
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2) );
INSERT INTO EMP VALUES (7839,'KING','PRESIDENT',NULL,'81-11-17',5000,NULL,10);
INSERT INTO EMP VALUES (7698,'BLAKE','MANAGER',7839,'81-05-01',2850,NULL,30);
INSERT INTO EMP VALUES (7782,'CLARK','MANAGER',7839,'81-05-09',2450,NULL,10);
INSERT INTO EMP VALUES (7566,'JONES','MANAGER',7839,'81-04-01',2975,NULL,20);
INSERT INTO EMP VALUES (7654,'MARTIN','SALESMAN',7698,'81-09-10',1250,1400,30);
INSERT INTO EMP VALUES (7499,'ALLEN','SALESMAN',7698,'81-02-11',1600,300,30);
INSERT INTO EMP VALUES (7844,'TURNER','SALESMAN',7698,'81-08-21',1500,0,30);
INSERT INTO EMP VALUES (7900,'JAMES','CLERK',7698,'81-12-11',950,NULL,30);
INSERT INTO EMP VALUES (7521,'WARD','SALESMAN',7698,'81-02-23',1250,500,30);
INSERT INTO EMP VALUES (7902,'FORD','ANALYST',7566,'81-12-11',3000,NULL,20);
INSERT INTO EMP VALUES (7369,'SMITH','CLERK',7902,'80-12-09',800,NULL,20);
INSERT INTO EMP VALUES (7788,'SCOTT','ANALYST',7566,'82-12-22',3000,NULL,20);
INSERT INTO EMP VALUES (7876,'ADAMS','CLERK',7788,'83-01-15',1100,NULL,20);
INSERT INTO EMP VALUES (7934,'MILLER','CLERK',7782,'82-01-11',1300,NULL,10);
commit;
/*여기까지 dept와 emp 테이블 작성과정*/
select * from emp;
select deptno as 부서번호, ename as 사원명 from emp;
/* 별칭으로 검색 */
select ename, comm from emp where job = 'SALESMAN';
/*직업이 SALESMAN인 사원의 이름과 커미션 검색*/
select ename, sal, sal*12, sal*12+comm from emp;
select empno, ename, deptno from emp where deptno=10;
/*where 절로 deptno=10인 칼럼 검색 숫자일때는 작은 따옴표 x*/
select empno, ename, deptno from emp where job='president';
/*아무것도 출력되지 않는데, 이것은 대소문자를 구별하기 때문*/
select empno, ename, hiredate from emp where hiredate >= '1982/01/01';
/*날짜 리터럴 사용법*/
select empno, ename, job from emp where job in ('SALESMAN', 'PRESIDENT');
/*한가지 컬럼에서 여러 정보를 검색할 때는 괄호 사용
만약 조건에 부합하지 않는 정보만 검색하려면 not in 사용*/
select empno, ename, hiredate, sal from emp where ename like 'J%';
/*J로 시작하는 사원의 정보 검색방법 마찬가지로 %J이면 J로 끝나는 정보 검색
_J% 을 사용 시 두번째 글자가 J인 정보 검색
%J% 을 사용 시 J를 포함하는 정보 검색 */
select empno, ename, hiredate from emp where lower(ename) ='ford';
/* emp테이블에서 영문자인 값을 소문자로 변환하여 검색
반대로 upper 사용 시 대문자로 변환*/
select deptno, initcap(dname), initcap(loc) from dept where deptno = 10;
/*첫번째 문자를 대문자로 나머지 문자는 소문자로 변환하여 검색*/
select deptno, dname, concat(deptno, dname) as d_noname from dept where deptno = 10;
/*특정 컬럼을 특정 값과 연결하는 concat*/
select substr(ename, 1, 2) from emp;
/* 첫번째 글자에서 시작해서 두번째 글자까지만 검색 */
select deptno, dname, instr(dname, ’G') from dept where deptno = 10;
/* 명명된 문자 G의 위치를 구하는 instr */
select deptno, dname, loc from dept where instr(loc,'DAL')>0;
/* 특정 문자열을 가진 열을 검색 */
select deptno, dname, loc from dept where instr(loc,'DAL')<1;
/* 특정 문자열을 가진 열을 제외하고 검색 */
select deptno, dname, lpad(dname, 15, '*') from dept where deptno = 10;
/* 15자까지 제한을 두고, 왼쪽 문자 자리를 *로 채운다.
반대로 rpad 사용시 오른쪽 문자 자리를 채운다. */
select deptno, dname, trim(leading ' ' from dname) from dept where deptno = 10;
/* 왼쪽 공백 문자를 지운다. */
select deptno, dname, translate(dname, 'NG', 'SO' ) from dept where deptno = 10;
/* 특정 문자열 대체 translate, replace도 사용 가능 */
/* 여기까지 select 문 */
왜 아래쪽이 다 주석으로 표시되는건진 모르겠다.
아무튼 table 생성부터 select 문의 다양한 기능들을 모아보았다.
'개발 > Database' 카테고리의 다른 글
[MariaDB, MySQL] REGEXP_REPLACE 정규식 사용법 (0) | 2022.10.30 |
---|---|
[MySQL] 파일 경로에서 substring_index 로 파일명, 확장자명 분리해 조회하기 (0) | 2022.09.26 |
[SQL] Oracle SQL Developer에서 MySQL 연동 (0) | 2021.12.10 |
Oracle port 변경 (0) | 2021.12.03 |
[SQL] DML, DDL, DCL, TCL 재정리 (0) | 2021.12.01 |
댓글