* LPAD 함수

사용법 : LPAD(변수,길이,변형자)

좌측에 자릿수(길이)만큼 변형자를 채워준다.


예> 기본키 생성시

SELECT LPAD(TO_NUMBER(SELECT ID FROM TB_MST)

+1),3,'0') AS ID 

FROM DUAL;


- (SELECT ID FROM TB_MST) : 결과값이 없는 경우        :>"0" 출력

: 결과값이 "002"로 있는 경우      :>"002" 출력

- TO_NUMBER(0) +1 : 숫자로 변환 후 +1                  :>"1" 출력

:>"3" 출력

- LPAD(1, 3, '0') : 숫자 1을 3자리로 왼쪽부터 '0'을 채워 "001"로 결과값 출력

:>"001" 출력

:>"003" 출력


* RPAD 함수

오른쪽으로 채워준다.



'* DB > Oracle' 카테고리의 다른 글

LIKE 절  (0) 2019.12.16
테이블 이름이 존재하는지 확인하기  (0) 2016.08.24
nul(), decode(), case then  (0) 2016.08.18
Table 조작  (0) 2016.08.18
오라클(함수)  (0) 2016.08.11

Oracle 10g 다운


압축풀기

다음

또 다음

SYS 및 SYSTEM 계정의 암호를 설정

추후에 잊어버릴 수 있으니 oracle 로 설정 후 다음버튼

포트번호 확인 후 설치 진행

설치하는 중

완료

데이터 베이스 홈페이지에서 확인이 가능하다.

사용자 이름은 SYSTEM 이고 암호는 oracle 로 로그인

이러한 기능들이 있어서 cmd창 외부에서도 조작이 가능하다.

cmd 창을 켜서 설치한 oracle 에 접근한다. 명령어는 sqlplus

사용자명과 암호는 DB홈페이지에 접근하던 바와 동일하게 system / oracle

system 계정으로 접속 후 최고권한 계정인 dba 계정으로 접속한다.

추후에 톰캣 또는 다른 SW와 서비스 포트가 겹칠 것을 고려하여 포트 번호를 9090으로 변경

변경 확인

exit를 통해 접속을 끊고 교육용 scott계정을 생성

scott계정의 권한 부여

scott계정으로 정상접속을 확인 시도

처음 생성한 계정이므로 테이블이 없다.


이로서 웹 개발 환경 구축을 위한 RDBMS(Oracle) 설치 및 설정이 완료되었다.


'* Programming > 웹 개발환경' 카테고리의 다른 글

톰캣 서버 및 Oracle DB 연결 테스트  (0) 2016.09.19
이클립스 내 Oracle DB 등록  (0) 2016.09.19
이클립스 내 톰캣서버 등록  (0) 2016.09.19
Tomcat 설치  (0) 2016.09.12
JAVA EE 설치  (0) 2016.09.12

오라클 설치 후

cmd창에서 실행


>sqlplus system/oracle

--sql 연결 id/pw 로서 여기서 pw는 오라클 설치시 내가 정해준 pw이다.

>SELECT  DBMS_XDB.GETHTTPPORT( ) FROM DUAL;

--포트번호 확인

>EXEC DBMS_XDB.SETHTTPPORT(9090);

--포트번호 변경

>ALTER USER HR IDENTIFIED BY HR ACCOUNT UNLOCK;

--HR계정 잠김 풀기(SYSTEM이상의 권한필요)

--첫번째 HR은 아이디, 두번째 HR은 비밀번호


>sqlplus scott/tiger

--scott계정은 교육용이다

--주석이다


1. 테이블 보기 (;꼭 붙이기)

>SELECT * FROM DEPT ;


2. 원하는 것만 보고자 할때는 SELECT 컬럼명, 컬럼명...FROM DEPT; 이런식으로 쓰면 된다

>SELECT * FROM EMP ;

>SELECT ENAME,HIREDATE,SAL FROM EMP;

--테이블 간에 연결이 되어 있음을 볼 수 있다. (관계형 데이터모델)


3. 컬럼명 변경하기

>SELECT ENAME AS "사원명", HIREDATE AS "입사일", SAL AS "연봉" FROM EMP;

--SELECT ENAME AS 사원명, HIREDATE AS 입사일, SAL AS 연봉 FROM EMP; 이렇게도 되지만 띄어쓰기를 쓰면 명령어로 인식하므로 문제 발생

--" "를 쓰면 대소문자, 특수문자 등을 쓸 수 있다


4. 중복된 데이터 걸러내기

>SELECT DISTINCT JOB FROM EMP;

>SELECT DISTINCT JOB ENAME FROM EMP;

>SELECT DISTINCT DEPTNO FROM EMP;


5. WHERE 조건과 비교연산자

>SELECT EMPNO,ENAME,JOB, HIREDATE,SAL FROM EMP WHERE SAL>=2000;

--SAL이 2000보다 크거나 같은 경우

--  = , > , < , >=,<=

--  NOT의 의미 3가지 !=, <>, ^= 


6. 문자 데이터 조회

>SELECT EMPNO,ENAME,JOB, HIREDATE,SAL FROM EMP WHERE ENAME='SMITH';

>SELECT ENAME,HIREDATE FROM EMP WHERE HIREDATE >='1985/01/01';

// 오라클에서 문자열은 ' ' . 그리고  밸류값이므로 대소문자 구분

--또는 '85/01/01'


7. 다중조건 

>SELECT EMPNO,ENAME,JOB, HIREDATE,SAL FROM EMP WHERE SAL>=2000 AND SAL<2500;

-- AND , OR 


8. 연산자가 아닌 키워드 NOT

>SELECT EMPNO,ENAME,JOB, HIREDATE,SAL FROM EMP WHERE NOT SAL>=2000;

--NOT이 붙었으므로 2000보다 작은 

>SELECT EMPNO,ENAME,JOB, HIREDATE,SAL FROM EMP WHERE NOT JOB='MANAGER';

--JOB이 MANAGER가 아닌


9. BETWEED AND 

>SELECT EMPNO,ENAME,JOB, HIREDATE,SAL FROM EMP WHERE SAL BETWEEN 1000  AND 2000;

--1000에서 2000사이의 값


10. IN

>SELECT EMPNO,ENAME,JOB, HIREDATE,SAL FROM EMP WHERE JOB IN('CLERK','MANAGE');

>SELECT EMPNO,ENAME,JOB, HIREDATE,SAL FROM EMP WHERE SAL IN(1300,1250); 

--정해진 두개의 값만


11. LIKE, 와일드카드

>SELECT EMPNO,ENAME,JOB, HIREDATE,SAL FROM EMP WHERE JOB LIKE '%A%';

--JOB에 대문자 A가 포함된것들이 나옴

>SELECT EMPNO,ENAME,JOB, HIREDATE,SAL FROM EMP WHERE JOB LIKE '_A%';

--두번째 자리에 A가 나오게 함. 첫번째, 세번째가 와일드. 무엇이 와도 상관없음

>SELECT EMPNO,ENAME,JOB, HIREDATE,SAL FROM EMP WHERE JOB LIKE 'A%';

--A 와일드 

>SELECT EMPNO,ENAME,JOB, HIREDATE,SAL FROM EMP WHERE JOB LIKE '_______';

--7자로 된 모든 것


12. NULL

>SELECT * FROM EMP WHERE COMM IS NULL;

--값이 없는 것들을 찾을때

>SELECT * FROM EMP WHERE COMM IS NOT NULL;

--값이 있는 것들을 찾을때. 0도 있는 것이다.


13. ORDER BY: 오름,내림차순 정렬하기

>SELECT * FROM DEPT ORDER BY DEPTNO;

>SELECT * FROM DEPT ORDER BY DEPTNO DESC;

--내림차순

>SELECT * FROM DEPT ORDER BY DEPTNO ASC;

>SELECT * FROM EMP ORDER BY SAL ASC;

--오름차순

>SELECT * FROM EMP ORDER BY SAL ASC,ENAME DESC;

--연봉순서에서 연봉 중복이 나올때 이름순서로 보고 싶으면




1. 테이블 생성

-- CREATE TALBE TABLENAME( 

--  컬럼명 자료형,

--  컬럼명 자료형,

--  ...

-- );

-- 타입: 숫자 number, number(38), number(전체, 소수점이후)

--        문자열 varchar2(), char(), varchar()

--        날짜 date

--        문자열 (특수) long, lob

*varchar2(10) 인 경우는 10의 메모리 공간을 사용할 수 있되 값이 들어가지 않는한 용량차지 없다 (동적으로 할당)

char(10) 인 경우에 10의 메모리를 주어진다 (비어있더라도)

varchar() 인경우는 오라클에서 사용하지 말라고 권한다 (2와 기능 동일)


long 가변적이라 크기지정 없다(최대 2G까지 저장). 그러나 제어 어렵고 느리다

lob(2G),바이너리,,파일을 직접넣는다.(이미지,,등) 느리고 db부하가 크다


> CREATE TALBE STUDENT( 

  NO NUMBER,

  KOR NUMBER,

  ENG NUMBER,

  MATH NUMBER

  NAME VARCHAR2(20)  

  );

--여기까지 스키마가 만들어졌다.


2. 값 입력  

--INSERT INTO TABLENAME(필드들) VALUES (필드와 매칭되는 VALUE값들);


> INSERT INTO STUDENT(NO,KOR,ENG,MATH,NAME) VALUES (1,90,80,70,'홍길동'); 

> INSERT INTO STUDENT VALUES(2,80,70,60,'홍길자');

> INSERT INTO STUDENT(NAME,KOR,NO,MATH,ENG) VALUES('이길자',50,3,60,80);

> INSERT INTO STUDENT(NO,NAME) VALUES(4,'박길동');

> INSERT INTO STUDENT VALUES (5,50,60,80,NULL);

> INSERT INTO STUDENT(NO,KOR,ENG,MATH) VALUES (5,50,60,80);

--입력할때 타입이 달라지면 오류

--쓰고 싶지 않으면 NULL을 넣으면 된다. 

> INSERT INTO STUDENT VALUES (5,50,60,80);

--오류. 


3. 테이블 확인하기

>DESC STUDENT; 

--테이블 정보 확인 

>SET LINESIZE 100 

--보기좋기 하기 위해 넓이를 넓게

>SELECT * FROM STUDENT; 

--내가 만든 테이블 전체 확인

>SELECT * FROM TAB; 

--어떤것들이 있는지 모른다하면 이것을 통해 테이블들을 확인할 수 있다.


/*

> SELECT * FROM STUDENT WHERE KOR=NULL;

> SELECT * FROM STUDENT WHERE KOR IS NULL;

> SELECT * FROM STUDENT WHERE KOR IN(NULL);

> SELECT * FROM STUDENT WHERE NAME=NULL;

//얘도 안된다.

*/


4. 수정

--UPDATE TABLENAME SET 바꿀필드명=바꿀 값들 ~~~WHERE 조건;


> UPDATE STUDENT SET KOR=90, ENG=80, MATH=70 WHERE NO=4;

--조건이 없으면 전체가 다 바뀌어버린다. 반드시, 수정 삭제때는 WHERE 조건을 사용 


5. 삭제

--DELETE FROM TABLENAME WHERE 조건;


> DELETE FROM STUDENT WHERE NO=4;

--조건반드시 필요


/* INSERT INTO STUDENT(NO,KOR,ENG,MATH,NAME) VALUES('6', '22' , '33' , '44', '홍길동');

    숫자에 문자를 주는것은 문제가 되지 않는다 

 하지만, 문자를 숫자로 주는 것은 문제가 된다

*/


/*

SELECT * FROM STUDENT WHERE NO=1;

만일 조건이 중복되어버리면? 

내 컴퓨터에서 데이터에 입력값을 주는데 다른 컴퓨터에서 또 입력을 해줘서 중복이 되버린다면? 

동일 학번을 다른값으로 줘버리는 문제가 생김. 

그럴 경우에는 DB에서 아예 입력오류를 냄. 

*/


'* DB > Oracle' 카테고리의 다른 글

LPAD, RPAD 함수  (0) 2018.08.17
테이블 이름이 존재하는지 확인하기  (0) 2016.08.24
nul(), decode(), case then  (0) 2016.08.18
Table 조작  (0) 2016.08.18
오라클(함수)  (0) 2016.08.11

+ Recent posts