eajni IT 초보사전 💦💦

[DB] SQL 기초

2023-02-24

3장 SQL (Structured Query Language)


데이터베이스에 저장된 데이터를 CRUD하거나 다양한 객체(시퀀스, 인덱스 등)를 생성 및 제어하는 역할

01. 데이터 정의어, Data Definition Language

DB의 논리구조를 정의하기 위한 언어, 객체의 생성 및 수정, 데이터 사전(DD)에 저장

CREATE

create table member(
mem_id varchar2(6) not null constraint mem_id_PK primary key,
mem_grade varchar2(20),
constraint mem_grade_FK foreign key (mem_grade) references grade_pt_rade (mem_grade),
mem_pw varchar2(20) not null,
mem_birth date default sysdate not null,
mem_tel varchar2(20),
mem_pt varchar2(10) default 0 not null
);
  • 데이터 타입
    • char
      • 자리수가 지정된 컬럼에 사용 (주민번호, 은행 비밀번호
      • 성능 빠름, 하드 공간을 낭비할 수 있음
    • varchar2
      • 자리수를 알 수 없는 경우, (주소, email)
      • varchar의 성능 개선 (오라클)
      • char보다 성능이 떨어짐, 하드 공간 낭비를 줄임
  • constraint[^제약조건]
    • primary key : 테이블에서 하나만 존재할 수 있음
      • 데이터 수정 및 삭제 시 조건을 사용하는 컬럼
      • 중복된 데이터 삽입 불가
      • 인덱스가 자동으로 생성됨 (검색 시 유용)
      • null 적용 불가
    • foreign key : 다른 테이블(부모)의 primary key, unique 컬럼을 참조해서 값을 할당
    • unique : 중복된 값을 넣을 수 없다. 테이블에서 여러번 사용 가능
      • 1회에 한해 null 적용 가능
      • 인덱스가 자동으로 생성됨
      • check (조건) : 값의 범위 설정
      • not null : 컬럼에 null 삽입 불가
      • default [100] : 값이 입력되지 않을 때 [100]을 기본으로 입력

ALTER

DB에 저장된 테이블의 칼럼/제약조건 변경

  • add [column/constraint]
  • modify
  • rename column
  • drop [column/constraint/primary key/unique]
  • set unused : drop보다 응답이 빠름, 실제로는 삭제되지 않으나 select, describe 불가
  • [enable/disable] constraint : 제약조건 일시적 활성/비활성화
alter table wine
add constraint nation_code_FK foreign key (nation_code) references nation (nation_code);

alter table dept20
modify email varchar2(200);

alter table dept20
drop column ADDRESS;

alter table dept20
rename column DNO to D_NO;

--SET UNUSED : CPU 부하없이 특정 컬럼 사용 중지
alter table dept20            
set unused (email);

DROP

DB 데이터 삭제 (저장공간 유지)

RENAME

DB 객체[^객체] 이름 변경

TRUNCATE

DB 저장공간 삭제

  • 시퀀스 (sequence)
    • 테이블의 특정 컬럼에 적용, 고유한 번호가 할당됨 (자동 번호 발생기)
    • 컬럼의 값을 자동으로 증가시킴, 출력된 시퀀스는 되돌릴 수 없음
  • 인덱스 (index)
    • 검색 속도를 향상을 위해 사용 기본 키나 유일 키는 인덱스가 자동으로 생성됨
      • 고유인덱스 ↔ 비고유인덱스 (유일성 여부)
      • 단일인덱스 ↔ 결합인덱스 (구성 칼럼 개수)
      • 함수기반인덱스 (함수에 인덱스 지정) ```sql create sequence sample_seq increment by 10 – 증가값 : 10 start with 10; – 초기값 : 10

create sequence sample_seq1 increment by 1 – 증가값 : 1 start with 1 – 초기값 : 1

–시퀀스 정보 확인 select * from user_sequences;

–시퀀스의 다음값 확인 select sample_seq.nextval from dual; –현재 시퀀스가 가지고 있는 값 select sample_seq.currval from dual;
–첫 시퀀스에서 진행하면 오류 발생

–생성한 시퀀스를 테이블의 특정 컬럼에 적용 create table dept30 as select * from department where 0 = 1;
–where 절이 false이면서 테이블의 레코드를 복사하지 않음


## 02.데이터 처리어, Data Query Language

### SELECT 
```sql
SELECT [DISTINCT] {*, column[Alias], . . .}
FROM table_name
[WHERE condition]
[GROUP BY group_by_expression]
[HAVING group_condition]
[ORDER BY column]

-- 전체 칼럼 조회
select * from TABLE;
--일부 칼럼 조회
select COL1, COL2 .. from TABLE;
  • 산술연산자(+, -, *, /) ⇒ alias로 사용
  • nvl(연산값, 0)
    • null과의 연산 결과는 항상 null, nvl함수는 null 값을 0으로 변환
  • WHERE
    • IS NULL / IS NOT NULL
    • 비교연산자 ( =, >, >=, <=, <, <>, !=, ^=)
    • 논리연산자 (AND, OR, NOT) : 2개 조건 조합
    • BETWEEN a AND b ◦ IN (a,b,c)
    • LIKE _ %
  • GROUP BY 특정 칼럼을 기준으로 그룹화
  • HAVING 그룹별 조건 연산
  • ORDER BY
    • ASC
    • DESC

데이터사전 (Data Dictionary) 관리를 목적으로 객체의 정보를 저장하는 시스템 테이블 집합 (사용자가 수정, 삭제 불가) • USER_ : 자신의 계정이 소유한 객체 등에 관한 정보 조회 • ALL_ : 자신의 계정 소유했거나 권한을 부여 받은 객체 등에 관한 정보 조회 • DBA_ : 데이터베이스 관리자만 접근 가능한 객체 정보 조회, sys, system

--현재 로그온한 사용자의 모든 테이블 정보 출력 
select * from user_tables;
--제약 조건 정보 출력 (not null, primary key, unique, foreign key, check) 
select * from user_constraints; 
--인덱스 정보를 출력 : 테이블 컬럼에 부여됨 
select * from user_indexes; 
--시퀀스 정보 출력 
select * from user_sequences; 
-- 뷰정보 출력 
select * from user_view;

3. 데이터 조작어, Data Manipulation Language

DB에 저장된 데이터를 조작하기 위해 사용하는 언어

INSERT

데이터 입력

UPDATE

데이터 수정

DELETE

데이터 삭제 *where 생략 시 모든 데이터 삭제 유의

04. 트랜잭션 제어어, Transection Control Language

COMMIT

트랜잭션 처리 사항 영구 저장

ROLLBACK

트랜잭선 과정 중 변경 사항 취소

SAVEPOINT

임시 저장점 설정

05. 데이터 제어어, Data Control Language

GRANT

DB에 대한 권한 부여

REVOKE

DB에 대한 권한 회수


Comments

Content