본문 바로가기

SQL 문 STUDY

(20)
SQL - 서브쿼리(필터/JOIN) 보호되어 있는 글입니다.
SQL - 중첩 루프 조인/ SORT MERGE / HASH JOIN 중첩 루프 조인 ● 먼저 수행되는 집합(선행 테이블)의 처리 범위가 전체 일량을 좌우함 ● 먼저 수행되는 집합이 상수로 바뀌어 후행 테이블에 조인절 조건으로 공급됨 ● 후행 테이블은 계속 루프를 돌면서 선행 테이블의 상수 공급이 종료될 때까지 조인을 시도함 ● 조인 되는 후행 테이블의 조인 컬럼에 인덱스가 존재해야 함 ● 인덱스가 없으면 후행 테이블을 반복적으로 FULL TABLE SCAN 하므로 비효율적 ● 2개 이상의 테이블에서 하나의 집합을 기준으로 순차적으로 상대방 ROW를 결합해 원하는 결과를 조합 ● 조인해야 할 데이터가 많지 않은 경우에 유용하게 사용 ● 드라이빙 테이블로 한 테이블을 선정하고 이 테이블로부터 WHERE 절에 정의된 검색 조건을 만족하는 데이터들을 필터링 한 후 , 이 값을 ..
SQL문- 실행계획/ INDEX(UNIQUE, FULL, RANGE, MIN/MAX, 컬럼 가공, FAST) 실행계획 - SQL이 실행되어 데이터를 처리하고자 할 때 옵티마이저에서 수립되는 SQL 실행 방법론 SQL의 비효율적인 부분 확인이 가능하며 쿼리의 성능 향상을 위한 튜닝포인트 도출 가능. 실행계획 읽기 - 테이블 액세스 프로세스와 그 테이블의 인덱스를 액세스하는 프로세스 하나의 단위 - 여러 문장 중에서 들여쓰기가 많이 되어 있는 문장이 먼저 실행 - 들여쓰기가 적은(한 레벨위의) 상위 프로세스에 종속 - 들여쓰기가 같은 동일 레벨이라면 위에 있는(먼저 나오는) 문장이 먼저 실행 - 하위 노드를 가진 노드의 경우에는 하위 노드가 먼저 실행 사용 방법 : SELECT 문 앞에 EXPLAIN PLAN FOR이라고 적으면 됨. 단점을 뽑자면 EXPLAIN PLAN은 한번에 하나의 쿼리문 실행계획만 확인 가능..
SQL문 - 데이터 딕셔너리 데이터 딕셔너리 - 데이터 딕셔너리는 데이터베이스에 대한 메타 데이터이며 모든 객체의 이름과 속성을 포함 DBA : DBA 권한의 모든 QUERY가 가능 ALL_ : 모든 QUERY 작성 가능함 USER_ : 유저가 소유한 모든 항목 가능 SELECT table_name, tablespace_name FROM user_tables 를 통해 스키마에 생성된 해당 테이블을 볼 수 있음 위의 두 구문은 시퀀스 정보와 로그인할 수 있는 유저, 인덱스의 정보를 볼 수 있습니다.
SQL문 - DCL(GRANT/REVOKE/COMMIT/ROLLBACK) DCL - 테이블에 데이터를 조작할 때 필요한 권한을 조작하는 행위 - 명령어 : GRNAT, REVOKE, COMMIT, ROLLBACK 이 있음 사용자 생성하는 방법 CREATE USER [ID명] IDENTIFIED BY [비밀번호]; GRANT GRANT 명령어는 사용자에게 권한을 부여하기 위한 명령어 사용 방법 : GRANT CREATE [어떤 권한을 줄지 권한명] TO [ID명] 모든 권한 주기 : GRANT CONNECT, RESOURCE, DBA to [ID명]; 준 권한에 대한 조회 : SELECT * FROM dba_sys_privs WHERE grantee = '[ID명]' 부여된 권한 취소 : REVOKE [준권한들] FROM [ID명]; COMMIT : 여러 명령어를 사용할 경우 ..
SQL문 - ROWID / ROWNUM ROWID와 ROWNUM - 주로 게시판을 만들 때 사용 - 오라클에서 테이블을 생성하면 기본적으로 제공되는 컬럼 ROWID : ROW 고유의 아이디(ROW를 수정해도 변하지 않음) ROWNUM : 행의 INDEX (ROW 삭제 시 변경될 수 있음) ROWID : 해당 데이터의 저장위치를 가리키는 요소 ● 오브젝트 번호 (6자리) : 해당 데이터가 속하는 오브젝트 번호 ● 상대 파일 번호 (3자리) : 테이블스페이스의 상대 파일번호를 의미, 각 데이터별로 유일한 값을 가짐 ● 블록 번호 (6자리) : 파일 안에 어느 블록인지를 의미 ● 데이터 번호 (3자리) : 데이터 번호는 블록별로 데이터가 저장되어 있는 순서 ROWNUM을 사용해 앞에 번호를 붙여줌. ROWNUM 를 통해 위와 같이 사용 가능(별칭을..
SQL- 익명프로시저/프로시저/함수 보호되어 있는 글입니다.
SQL 데이터베이스 객체-뷰(생성,수정,제거), WITH CHECK OPTION,WITH READ ONLY, 시퀀스(생성,수정,제거),인덱스(생성,제거), SYSNONYM(시노님) 데이터 베이스 객체 데이터베이스 객체란 오라클같은 DBMS가 데이터를 관리하기 위해 존재하는 논리적인 저장 구조 테이블 : 기본 저장 단위이며 행으로 구성되어 있음, 데이터를 담고 있는 객체 뷰 : 하나 이상의 테이블에 있는 데이터의 부분 집합을 논리적으로 나타냄 (하나 이상의 테이블을 연결해 마치 테이블처럼 사용) → 즉, 가상테이블 시퀀스 : 숫자 값을 생성(일련번호 채번 시 사용) 인덱스 : 테이블에 있는 데이터를 빠르게 서칭하기 위한 객체(데이터 검색 query의 성능을 향상시킴) 동의어(SYNONYM) : 객체에 다른 이름(별칭)을 부여함 함수 : 특정 연산을 하고 값을 반환하는 객체 프로시저 : 함수와 비슷하나 값을 반환하지는 않음 패키지 : 용도에 맞게 함수나 프로시저를 하나로 묶어놓은 객체..
SQL - INSERT/UPDATE/DELETE INSERT 문 ● 각 열에 대한 값을 포함하는 새 행을 삽입 - INSERT INTO 테이블명 (컬럼명1, 컬럼명2...) VALUES(값1, 값2...); 또는 - INSERT INTO 테이블명 (컬럼명1, 컬럼명2...) subquery; ● null 값을 가진 행 삽입 (열생략) ● NULL 키워드 지정 INSERT문을 subquery로 작성 UPDATE 문 ● 테이블의 기존 값을 수정 ● WHERE구가 지정되어 있지 않으면 모든 테이블이 갱신됨. ● 사용방법 UPDATE 테이블 이름 SET 필드이름1 = 데이터값1, 필드이름2 = 데이터값2 WHERE 필드이름 = 데이터값 다른 테이블 기반으로 행갱신 ● WHERE 절에 조건을 지정하면 그에 일치하는 행을 갱신할 수 있음 ● WHERE 절을 생략..
SQL 집합 연산자 - UNION/ UNION ALL/ INTERSECT 집합 연산자 ● SELECT 리스트의 표현식은 개수가 일치해야 함 ● 데이터 유형은 첫번째 QUERY 데이터 유형과 일치해야 함 UNION 연산자 ● 중복행 제거 UNION ALL 연산자 ● 중복행 포함, UNION보다 당연히 많은 결과값을 출력함. INTERSECT 연산자 ● 두 query의 공통적인 행(교집합) [ 기본형식] SELECT 컬럼명1, 컬럼명2... 5 FROM 테이블명 1 WHERE 조건절 2 GROUP BY 컬럼명 3 HAVING 조건절 4 ORDER BY 컬럼명[ASC|DESC] => 오름차순|내림차순 6 위의 순서대로 실행됨.