YJ의 새벽

sqld (3) - SQL 기본 본문

SelfStudy/sqld

sqld (3) - SQL 기본

YJDawn 2024. 2. 21. 23:49

 

 

 

  • 관계형 데이터베이스

관계형 데이터베이스는 정규화를 통해 합리적인 모델링으로 이상현상을 제거하고 데이터 중복을 피할수 있다.

동시성 관리, 병행제어를 통해 많은 사용자가 동시에 데이터를 공유 및 조작할 수 있다.

보안기능을 제공하며, 데이터 무결성을 보장한다.

 

 

  • SQL문 종류

1) DDL  :  데이터 정의어

                 CREATE  /  ALTER  /  DROP  /  RENAME

2) DML  :  데이터 조작어

                 SELECT  /  INSERT  /  UPDATE  /  DELETE

3) DCL  :  데이터 제어어

                 GRANT  /  REVOKE

4) TCL  :  트랜잭션 제어어

                 COMMIT  /  ROLLBACK

 

 

  • 테이블명 설정 시 유의사항

- 단수형 권고

- 다른 테이블명과 중복 X

- 데이터 유형 반드시 지정

- A-Z  , a-z  ,  0-9  ,  _  ,  $  ,  #  문자만 허용 함

- 테이블 명과 컬럼 명은 문자로 시작

 

 

  • 주요 데이터 타입

1) CHAR  :  고정길이 문자열

2) VARCHAR  :  가변길이 문자열

3) NUMBER  :  정수 및 실수

4) DATE  :  날짜와 시각

 

 


 

 

  • 제약 조건

1) 기본키 (PK)

하나의 테이블에 단 하나의 기본키만 정의 가능. 

UNIQUE & NOT NULL

 

2) 고유키

UNIQUE

NULL 입력가능

 

3) NOT NULL

 

4) CHECK

입력할수 있는 값 종류 및 범위 제한

 

5) 외래키 (FK) 

NULL 가능 ,  
여러개 생성 가능.

 

 

 

  • 테이블 구조 변경

-- 추가  :  ALTER TABLE 테이블명 ADD ( 컬럼명 VARCHAR2(100));

 

-- 삭제  :  ALTER TABLE 테이블명 DROP COLUMN 컬럼명;

 

-- 수정  :  ALTER TABLE 테이블명 MODIFY ( 컬럼명 VARCHAR2(100) DEFALUT '20240306' NOT NULL );

 

-- 제약조건 삭제  :  DROP CONSTRAINT 조건명;

-- 제약조건 추가  :  ADD CONSTRAINT 조건명 조건 ( 컬럼명 );

 

-- 테이블명 변경  :  RENAME 테이블명 TO 바뀔테이블명 ;

-- 컬럼명 변경  :  RENAME COLUMN 컬럼명 TO 바뀔컬럼명 ;

 

 

*** 제약조건 생성 / 추가 

1)   CREATE TABLE 테이블명 CONSTRAINT 테이블명_PK PRIMARY KEY (컬럼명 ) ;

 

2)   ALTER TABLE 테이블명 ADD CONSTRAINT 테이블명_PK PRIMARY KEY ( 컬럼명 );

 

 

 

  • DELETE    //  TRUNCATE  //  DROP

DELETE FROM 테이블명   :   로그 쌓음,  롤백 가능  ,   사용자 COMMIT

TRUNCATE TABLE 테이블명  :  로그 쌓지않음,  ( 테이블 스키마 구조 유지 )   AUTO COMMIT

DROP TABLE 테이블명  :  테이블 구조마저 완전 삭제  ( 테이블 정의 삭제  )  AUTO COMMIT

 

 

 

 


 

 

 

  • 트랜잭션

트랜잭션은 데이터베이스의 논리적 연산단위

하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함됨

트랜잭션은 분할할 수 없는 최소의 단위이며 전부 적용하거나 전부 취소한다.

 

 

  • 트랜잭션의 4가지 특성

1) 원자성  :  모두 성공적으로 끝나거나 모두 실패해야 함.

2) 일관성  :  실행되기 이전 데이터가 온전하다면, 실행된 이후에 데이터베이스 내용에 잘못이 있으면 안됨

3) 고립성  :  실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안됨

4) 지속성  :  성공적으로 트랜잭션이 수행되면 영구적으로 저장됨.

 

 

  • COMMIT  /  ROLLBACK  /  SAVEPOINT

1) COMMIT  

COMMIT 이전에는 데이터 변경 이전 상태로 복구 가능함.

또한 현재 사용자는 결과를 확인할 수 있지만, 다른 사용자는 현재 사용자가 수행한 명령을 확인할 수 없음.

다른사용자가 변경 불가능.

COMMIT 이후에는 이전 데이터를 영원히 잃어버리게 됨.

모든 사용자가 결과를 확인할 수 있으며, 잠금이 풀리고 다른 사용자들이 조작할 수 있음.

 

2) ROLLBACK

 

3) SAVEPOINT

 

 

 


 

 

  • 단일 행 함수

1) 문자형 함수 

    LOWER, UPPER, SUBSTR, LENGTH, RTRIM, LTRIM 등

2) 숫자형 함수

    ABS, MOD, ROUND, TRUNC, SIGN, CEIL, FLOOR 등

3) 날짜형 함수

    SYSDATE, EXTRACT 등

4) 변환형 함수

    TO_NUMBER,  TO_CHAR,  TO_DATE  등

5) NULL 함수

    NVL  :  NULL 이면 다른 값으로 바꾸는 함수.

               NVL( MGR, 0 )  ==  MGR 컬럼이 NULL 이면 0 으로 바꾼다.

    NVL2  :  NVL 함수와 DECODE를 하나로 만든것.

              NVL2( MGR, 1 , 0 )  ==  MGR 컬럼이 NULL 이 아니면 1 , NULL 이면 0 을 반환

    NULLIF  :  두 개의 값이 같으면 NULL  , 같지 않으면 첫번째 값을 반환한다.

              NULLIF ( exp1, exp2 )   ==  exp1 과 exp2 가 같으면 NULL,  같지 않으면 exp1 을 반환.

    COALESCE  :  COALESCE ( MGR , 1 )  ==  MGR 이 NULL 이 아니면 1을 반환

 

 

 

 

  • GROUP BY 절

- 집계함수의 통게 정보는 NULL 값을 가진 행을 제외하고 수행함.

예외적으로 COUNT(*) 는 NULL 값을 포함한 행의 수를 출력.

- GROUP BY 절에는 ALIAS 명을 사용할 수 없음 ( FROM 절에도 ALIAS 사용 불가 )

 

- HAVING 절은 GROUP BY 절에 조건을 주는 역할로 일반적으로 GROUP BY 절 뒤에 위치하지만 

  앞에도 위치할 수 있음.

 

 

  • ORDER BY 절

- 특정 컬럼을 기준으로 정렬할 때 사용

- SELECT 절에 사용된 ALIAS 명이나, 컬럼 순서를 나타내는 정수도 사용할 수 있음

- 기본적으로 오름차순 ( ASC )

- ORACLE 내에서는 NULL 값을 가장 큰 값으로 간주함

- SELECT 절 내에 위치하고 있지 않는 컬럼도 ORDER BY를 수행할 수 있음.

 

 

 

'SelfStudy > sqld' 카테고리의 다른 글

sqld (4) - SQL 활용  (0) 2024.03.06
sqld (2) - 데이터 모델과 성능  (0) 2024.02.21
sqld (1) - 데이터 모델링의 이해  (0) 2024.02.21
Comments