Database/SQL

[SQL] 명령어

2023. 3. 17. 15:37

1. 유저 조회

더보기

1. 현재 유저 조회

SQL> SHOW USER;

 

2. DBA 권한으로 현재 유저들의 리스트를 확인

SQL> select username from dba_users;

 

3. 생성 된 계정 확인

> select * from dba_users;
> select * from all_users;

 

1.1 Role 조회

select role from dba_roles;

 

1.2 유저 생성 및 테이블스페이스 지정

create user 유저명 identified by 패스워드 default tablespace 테이블스페이스명;
GRANT 권한명 TO 유저명;

ex) grant DBA, RESOURCE, CONNECT to test2;

 

2. 테이블스페이스

더보기

1. 유저의 테이블스페이스 변경

ALTER USER 유저 DEFAULT TABLESPACE 변경할 테이블스페이스;

 

2. 생성 된 테이블 리스트 조회

> select table_name from tabs;

 

 

'Database > SQL' 카테고리의 다른 글

[SQL] SQL문 실행 원리  (0) 2023.03.13
[SQL] DDL / DML / DCL  (0) 2023.03.10

[SQL] SQL문 실행 원리

2023. 3. 13. 11:04

1. Parsing 파싱

  • SQL문에는 처리 방법이 적혀 있지 않기 때문에 처리 방법을 생성할 필요가 있음
  • 처리 방법을 공유 풀에 캐시 해두고 재활용 하기 위함
  • SQL문 처리 횟수와 처리 시간을 줄여 성능을 향상 시키기 위함
  • 오라클은 해시 알고리즘을 사용해 SQL문 마다 ID를 생성
  • SQL 문을 문자열로 해시 함수에 입력하고 출력된 해시 값을 SQL문의 ID로 사용
  • 문자열로 입력 받기 때문에 대문자와 소문자를 구별하여 해시 값이 달라짐

1. Syntax Check (문법 검사)

 : 키워드(SELECT, FROM, WHERE..) 검사

2. Semantic Check (의미 검사)

 : 테이블, 컬럼등의 사용자마다 다른 부분 검사 

 -> 다른 부분이 없다면 오류

3. Shared Pool Check (lib. 캐시 확인)

  : SQL 또는 PL/SQL 문장 결과가 Lib. cache* 내에 있는지 조회

 -> 있으면 Soft Parse Execution, 없으면 Hard Parse Optimization

 3.1 Optimization (≒ 네비)

   : Data Dictionary 등을 참조해서 실행계획 생성

 3.2 Row Source Generation

   : 3.1 단계에서 가장 좋은 계획 선택

4. Execution (수행)

 

+ Optimizer

= Parser(파서) / SQL문을 분석하고 최적의 '실행계획' 을 생성하는 기능

조인에서 어느 테이블을 먼저 읽어야 하는지, 어떤 인덱스를 실행시켜야 좋은지 등을 판별 (척도 RBO(Rule Base Optimizer) / CBO(Cost Based Optimizer*)

*RBO - Server Process가 실행 계획을 세워달라고 요청이 오면 미리 정해놓은 규칙 사용

  CBO - Data Dictionary 내용 참고하여 판별 / 10g 하위 버전은 Data Dictionary 자동으로 업데이트 X

 

* Library Cache
- 해시구조로 관리
- SQL 쿼리마다 해시값을 매핑해서 저장

 

 

2. 처리 단계

- Parse(구문 분석) : 실행계획을 세우고 가장 좋은 실행계획을 선택하기 위한 과정

- Bind(값 치환) : 같은 쿼리문을 줄이는 과정

 Hard Parse를 줄여주어서 성능 향상에 도움

 cf) PGA에서 Bind 변수 저장 하는 곳 = Persistent Area

- Execute(실행) : Data File에서 원하는 데이터를 Buffer Cache로 복사해오는 과정 (∵ Server Process가 데이터 조회 가능)

- Fetch(인출) : Block 단위로 복사된 데이터에서 원하는 데이터만 뽑아 가는 과정

 

+ DML - UPDATE (SELECT 제외한 DML)

Parse -> Bind → Redo Log Buffer에 기록 Undo Segment에 기록 DB Buffer Cache의 실제 데이터 변경

1. Execute 과정에서 서버프로세스는 데이터의 변경 내역을 Redo Log Buff.에 기록

2. Undo Segment에 이전 데이터 기록

3. Data Buffer Cache의 내용 변경

 

 

 

 

참고 https://notemusic.tistory.com/17

'Database > SQL' 카테고리의 다른 글

[SQL] 명령어  (0) 2023.03.17
[SQL] DDL / DML / DCL  (0) 2023.03.10

[SQL] DDL / DML / DCL

2023. 3. 10. 11:07

DDL (Data Definition Language)

: 데이터 정의어 - 데이터 구조 or 스키마 변경

- 테이블과 같은 데이터 구조(스키마)를 정의하는데 사용되는 명령어들로 (생성, 변경, 삭제, 이름변경) 데이터 구조와 관련된 명령어들을 말함.

CREATE 객체 생성  
ALTER 구조 변경
테이블 수정
(컬럼추가/수정, 제약조건  추가/삭제/활성화/비활성화)
> ALTER TABLE 테이블명 ADD (..);
> ALTER TABLE 테이블명 MODIFY (..);
DROP 객체 삭제
테이블 구조 및 모든 행 삭제
> DROP TABLE 테이블명 [CASCADE CONSTRAINTS]; --제약조건 삭제
TRUNCATE 테이블의 구조는 남기고 안의 데이터만 삭제
테이블 초기화
 
RENAME 객체 이름 변경  
COMMENT 테이블 또는 컬럼에 주석 추가  
  • 실행 시 자동 commit
  • DDL은 데이터 구조 변경 / DML은 데이터 조작(DELETE...)
  • 컬럼이 NULL이거나 테이블에 데이터가 없을 때, 컬럼의 크기 축소 및 데이터 타입 변경 가능
  • 컬럼에 NULL이 없을 때만 NOT NULL 제약 조건 추가 가능

 

⭐ DML (Data Manipulation Language)

: 데이터 조작어 - 데이터 값 변경

- 입력, 수정, 삭제

SELECT 데이터 조회 ALL : 기본 옵션. 중복되는 데이터도 모두 출력
DISTINCT : 중복된 데이터가 있는 경우 1건만 출력
INSERT 데이터 삽입  
UPDATE 데이터 수정  
DELETE 데이터 삭제  
MERGE UPSERT(UPDATE + INSERT) 작업
데이터가 테이블에 존재하지 않으면 INSERT /
존재하면 UPDATE를 수행
 
LOCK TABLE 테이블 잠금  

 

 

DCL (Data Control Language)

: 데이터 제어어 - 접속 권한 변경

GRANT 특정 작업에 대한 수행 권한 부여
REVOKE 특정 작업에 대한 권한 회수

 

TCL (Transaction Control Language)

: DCL에서 논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜잭션) 별로 제어하는 명령어

COMMIT  
ROLLBACK ROLLBACK TO [savepoint] )
SAVEPOINT (≒ base line, > SAVEPOINT [  ];)

 

'Database > SQL' 카테고리의 다른 글

[SQL] 명령어  (0) 2023.03.17
[SQL] SQL문 실행 원리  (0) 2023.03.13

+ Recent posts