본문 바로가기

SQL(Oracle)9

[Oracle] SUBQUERY 조인: 여러개의 테이블에서 필요한 데이터 모아서 수집 =>단점: 여러 개의 서브쿼리: 여러개의 SQL문장을 한개로 통합 DML 전체에서 사용이 가능 = 종류 1) 단일행 서브쿼리 : 서브쿼리의 결과값이 1개 2) 다중행 서브쿼리 : 서브쿼리의 결과가 여러 개 3) 인라인 뷰 : FROM (SELECT~) 4) 스칼라 서브쿼리 : 컬럼 대신 사용 SELECT empno,ename,(SELECT ~ ) as dname 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.. 2020. 11. 10.
[Oracle] SEQUENCE 1) START WITH: 시작번호 2) INCREMENT BY: 증가값 3) NOCYCLE | CYCLE: 1~10 => 10까지 사용 => 1로 다시 돌아온다(PRIMARY KEY) ***1 2 4 5 6 =>중간이 비어도 무조건 증가 4) CACHE | NOCACHE: 미리 20정도를 저장=> NOCACHE 5) MAX_VALUE, MIN_VALUE: 사용빈도가 거의 없다 1 2 3 6) 다음값을 가지고 온다 seq.nextval =>4 7) 현재값을 가지고 온다 seq.currval =>3 ** PRIMARY KEY: 숫자 => 자동증가번호(중복이 없는 값을 만든다) CREATE SEQUENCE seq_no(시퀀스명) 옵션=>시작번호, 증가값, CACHE, CYCLE, MAX/MIN 2020. 8. 24.
[Oracle] ORA-01017 오류 해결 0. 심각한 문제가 아니니 일단 침착하자. 계정이 잠깐 잠겼을 뿐이다. 1. sql plus를 켠다(윈도우 창 옆에서 검색해서 우클릭). 2. conn sys as sysdba 를 입력하면 관리자로 접속할 수 있다. 이 때, 비밀번호를 입력하라고 나오는데 본인이 설정한 비밀번호를 입력하면 된다. 3. SELECT * FROM dba_users; 을 입력하면 테이블이 출력된다. 컬럼 ACCOUNT_STATUS에 EXPIRED & LOCKED 이라고 되어있을텐데, 계정이 잠겼다는 의미이다. 풀어주자. 4. ALTER USER hr(잠긴 계정이름) account UNLOCK; 을 입력한다. User altered.라고 나오면 완료. 다시 사용하면 된다. 2020. 8. 12.
[Oracle] JOIN Join: 두 개 이상의 테이블을 합쳐서 원하는 값들을 출력하는 기능 →테이블에 컬럼이 많을 경우 중복되는 데이터가 존재할 가능성이 커짐. 이러한 비효율성을 방지하기 위해 '정규화(:하나로 된 것을 더 작은 단위로 분리하는 기술)' 수행. 정규화 후에 여러개의 테이블로 흩어져 저장된 데이터 들을 조합해서 가져오는 기술이 조인(Join)임. #Join 문법: 네 가지 모두 호환(아래의 쿼리문은 모두 같은 결과) Oracle JOIN : 오라클에서만 사용하는 쿼리문장 SELECT empno, ename, job, mgr, hiredate, sal, comm, e.deptno, dname, loc FROM emp e, dept d WHERE e.deptno=d.deptno; ***e,d는 별칭, 컬럼명 다른 .. 2020. 8. 12.
[Oracle] 정규식 함수/그룹함수 #정규식 함수 ^ 시작문자 ^A(=A%) : A로 시작 $ 끝문자 A$(=%a) : A로 끝남 . 임의의 문자(모든 문자) * 여러문자, 0문자 [A-Z]* : 대문자 알파벳이 여러개 존재하거나 없다 + 한 글자 이상 [] 해당 문자 [AB] : A or b [가-힣] : 한글 전체 [A-Za-z] : 알파벳 전체 [^] 제외 [^A] : A를 제외 #그룹함수(=집합함수, 복수행함수) :컬럼명이나 단일행함수를 같이 사용하면 안됨. 단, GROUP BY를 이용하면 사용 가능 COUNT(*) : NULL값 포함 →Java에서 반드시 이걸로 사용 COUNT(컬럼명) : NULL값 제외 로그인, ID 중복체크 →HTML 활용 실습 참고 SELECT deptno, COUNT(*) FROM emp; 오류(∵컬럼명과.. 2020. 8. 10.
[Oracle] 단일행 함수 #단일행 함수 문자함수 변환함수 UPPER : 대문자로 변환 LOWER : 소문자로 변환 INITCAP : 맨 앞글자만 대문자 변환 SELECT UPPER('ShIn'), LOWER('ShIn'), INITCAP('ShIn') FROM DUAL; → SHIN, shin, Shin ***DUAL : 임시테이블 REPLACE('원래 문자열',' 바꿀문자', '바뀔문자') SELECT ENAME, REPLACE(ENAME, 'A','M') FROM EMP; 원래이름 ADAM→MDMM 제어함수 CONCAT('A','B') : 문자열 결합 SELECT CONCAT('HELLO ','ORACLE'), 'HELLO '||'ORACLE' FROM DUAL; →HELLO ORACEL (동일한 문장) SUBSTR(문자열,.. 2020. 8. 6.