[Oracle] 오라클 SubQuery(서브쿼리)

서브쿼리 Sub Query가 생겨난 이유 여러 쿼리문장을 합쳐서 한 번에 사용할 수 있게 하기 위해서이다. 속도가 빠르다는 장점이 있다. 여러 쿼리 문장을 따로 실행하면 연결/해제를 반복(서버에 왔다갔다)해야 하기 때문에 성능이 저하될 수밖에 없다. Sub Query의 종류 단일행 출력 결과가 하나인 것 WHERE sal = (SELECT AVG(sal) ~~ ) 다중행 출력 결과가 여러개인 것 deptno IN (SELECT deptno FROM dept) 다중컬럼 스칼라 서브쿼리 실무에서 가장 많이 사용됨 컬럼 대신 사용될 수 있다. SELECT no, (SELECT ~) … JOIN을 걸지 않아도 되어서 편리하다. 단일행 서브쿼리 서브쿼리의 결과값이 여러 행이 아니라 단 하나의 행인 경우를 말한다. 단일행 서브쿼리의 연산자 : 비교연산자(= , !=(<>) , <= , >= , < , >) 형식 -- 메인쿼리 SELECT * FROM emp -- 서브쿼리 WHERE deptno=(SELECT ~) 예) emp테이블 : 사원의 평균 급여 = 평균보다 적게 받는 사원 정보를 출력 SELECT * FROM emp WHERE sal<(SELECT AVG(sal) FROM emp); 예) SCOTT이 근무하는 부서에 같이 근무하는 사원의 모든 정보를 출력 SELECT * FROM emp WHERE deptno=(SELECT deptno FROM emp WHERE ename='SCOTT'); 예) GROUP BY를 사용한 서브쿼리 : 사원의 평균 급여보다 높은 부서의 부서번호, 인원수를 출력하기 SELECT deptno,COUNT(*) FROM emp GROUP BY deptno HAVING AVG(sal)<(SELECT AVG(sal) FROM emp); 다중행 서브쿼리 서브쿼리 데이터 결과가 여러개인 방법이다. 다중행 서브쿼리는 서브쿼리의 결과가 여러 건 출력되기 때문에 단일행 연산자를 사용할 수 없다.

정보처리기사 필기 합격

이미지
정보처리기사 필기 합격 가채점결과 합격이다. 가채점결과도 합격이었고 가채점대로 점수가 나왔다. 프로그래밍언어활용에서 내 생각에 과목명과 무관한 문제들이 출제되어 많이 틀렸다. 데이터베이스는 국비학원에서 열심히 공부했던 덕에 제일 높은 점수를 받았다. 코로나 때문에 시험이 계속 밀려서 힘들었는데 합격해서 다행이다.

[MacOS] 이클립스(eclipse) 한글 마지막 글자 잘림 현살 해결 방법

이미지
이클립스(eclipse) 한글 마지막 글자 잘림 현살 해결 방법 MacOS환경에서 이클립스(eclipse)를 사용할 때 한글 마지막 글자가 잘리는 현상이 있는데 아래와 같이 맞춤법 옵션을 비활성화 시켜주면 증상을 해결 할 수 있다. 1. 시스템 환경설정 -> 언어 및 지역 선택 2. 하단 키보드 환경 설정 메뉴 클릭 3. 상단에 텍스트 탭을 클릭한 후 맞춤법 자동 수정 체크박스를 해제 시켜준다. ++ 가끔씩 잘림 현상이 발생한다.

[Oracle] 오라클 SEQUENCE(시퀀스)

시퀀스 자동 증가번호에 쓰임 MAX+1 대신 사용 가능한 것 무조건 증가만 함 중간에 삭제해도 대체되지 않고 마지막값에 이어서 증가됨 PRIMARY KEY에 자주 쓰임 => 중복이 없는 값을 만들기 때문에 자동 증가번호 사용 테이블과 시퀀스는 별도임 이름 : table명_column명_seq 삭제 : DROP SEQUENCE 시퀀스명; DROP SEQUENCE seq_no; 형식 CREATE SEQUENCE seq_no(시퀀스명) 옵션 /* 시작번호 , 증가값 , CACHE , CYCLE , MAX , MIN */ 예시 CREATE SEQUENCE seq_no START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; START WITH 시작번호 INCREMENT BY 증가값, 증가폭 NOCYCLE | CYCLE CYCLE 1~10까지 사용 => 1로 돌아옴 PRIMARY KEY에 자주 쓰임 무조건 증가만 함 1 2 3 4 5 => 4번 삭제 => 1 2 3 5 6 … NOCYCLE CACHE | NOCACHE 미리 20정도를 저장 => NOCACHE MAX_VALUE , MIN_VALUE 사용 빈도가 거의 없다. seq.nextval 다음 값을 가지고 온다 SELECT seq_no.nextval FROM DUAL; seq.currval 현재 값을 가지고 온다 SQL> SELECT seq_no.currval FROM DUAL; 시퀀스 예제 테이블 추가하기(제약조건) CREATE TABLE jsp_board ( no NUMBER , name VARCHAR2 ( 34 ) CONSTRAINT jb_name_nn NOT NULL , subject VARCHAR2 ( 1000 ) CONSTRAINT jb_subject_nn NOT NULL , content CLOB CONSTRAINT jb_content_nn NOT NULL , pwd VARCHAR2 ( 10 ) CONS

[CSS] 마진 중첩(상쇄) 현상 (margin overlap 또는 margin collapse)

이미지
박스 모델을 사용할 때 주의해야할 점이 있다. 요소들을 세로로 배치할 경우 각각의 요소들의 margin과 margin이 만나는 지점에서 값이 큰쪽으로 겹쳐진다(중첩된다)는 점을 주의해야한다. 일반적으로 생각했을 때 각 요소에 margin 값이 20px로 지정되어있다고하면 요소간의 간격이 40px이 될거라고 생각하기 쉽지만 실제 간격은 20px이 된다.  이러한 현상을 마진 중첩(margin overlap) 또는 마진 상쇄(margin collapse)라고 한다. 반면에 가로로 요소들을 배치할 경우 이러한 margin 중첩현상은 발생하지 않는다.

[Oracle] 오라클 VIEW

VIEW 보여만 주는 상태 테이블을 새롭게 생성하는 것이 아니라 기존의 테이블에서 필요한 데이터를 모아서 관리하는 것 필수 요건 : 테이블 메모리에 저장되는 과정이 아니고 가상으로 저장된다. VIEW의 장점 가상으로 저장되기 때문에 보안이 좋다. (해킹불가) SQL문장을 단순화시킬 수 있다는 장점이 있다. VIEW의 특징 ALTER를 사용할 수 없다. 삭제를 할 때는 반드시  DROP VIEW view명칭  을 사용해야한다. 저장이나 수정이 가능한데 View에서 수정이나 삭제가 되는 것이 아니라 참조테이블에서 변경된다. READ ONLY이기 때문에 DML 사용이 불가하다. SELECT만 사용해서 테이블만 볼 수 있게 만든다. 같은 이름의 View는 사용할 수 없다. VIEW의 형식 CREATE [ OR REPLACE ] VIEW view 명칭 AS SELECT ~ AS 밑의 문장이 가상데이터에 저장되는 것이 View임 VIEW 종류 1. 단순뷰 한 개의 테이블을 참조하는 것 2. 복합뷰 여러개의 테이블을 참조하는 것 JOIN 이나 SubQuery가 들어가면 복합뷰임 3. 인라인뷰 (TOP-N) FROM SELECT~ 로 시작하는 뷰들 VIEW 실습예제 단순뷰 만들기 CREATE VIEW dept_view AS SELECT * FROM dept ; 단순뷰에 INSERT하기 INSERT INTO dept_view VALUES ( 50 , '영업부' , '서울' ); View에 데이터 추가하면 참조하고 있는 테이블에 데이터가 추가되는 것이기 때문에 주의해야함 READ ONLY 단순뷰 READ ONLY옵션을 추가하면 데이터 수정/추가 불가하다. CREATE VIEW dept_view AS SELECT * FROM dept WITH READ ONLY ; INSERT INTO dept_view VALUES(50,'영업부','서울'); * ERROR at lin