숭어 개발 블로그

[SQL] sql문 본문

SQL 시험 메모장/2.SQL 기본 및 활용

[SQL] sql문

숭어싸만코 2022. 11. 1. 12:40

# RENAME   TO

RENAME OLD_TABLE TO NEW_TABLE

# DROP  TABLE

ALTER TABLE (테이블명)

DROP COLUMN (삭제할 컬럼명);

ALTER TABLE EMP 
DROP COMM;

 

# TRUNCATE  TABLE 

DROP TABLE 과는 달리, 테이블 자체가 삭제되는 것이 아니라 테이블 구조를 유지한 채 내용(모든 행)을 삭제

재사용이 가능한 형태로 내용물만 제거한다. 

TRUNCATE TABLE  PLAYER ; 

DROP TABLE 은 테이블 자체가 삭제되기 때문에 테이블 구조를 확인할 수 없지만, TRUNCATE는 테이블은 있되 데이터만 삭제하는 기능이다. 

DML로 분류하기도 하지만, 처리방식이나 Auto commit 특성을 가져 DDL로 분류한다. 

TRUNCATE 는 부하가 적다. 하지만  Auto commit 되기 때문에 삭제 후 복구가 되지 않으므로 주의가 필요하다.


 

# DELETE  FROM

DELETE FROM 테이블명

 

  DROP TRUNCATE DELETE
명령어 종류 DDL DDL( 일부 DML성격가짐) DML
Rollback여부 Rollback 불가능 Rollback 불가능 Commit 이전 Rollback가능
Commit Auto Commit Auto Commit 사용자 Commit
삭제방식 테이블 정의자체를 완전히 삭제 테이블을 최초 생성된 초기상태로 만듬 데이터만 삭제
처리속도 빠름 빠름 느림

>> DROP TABLE TRUNCATE TABLE 은 로그를 남기지 않는다.

 


# INSERT  INTO 

- COLUMN명에 따른 VALUE 값 넣기

INSERT INTO 테이블명 (컬럼명,컬럼명)
VALUES (해당 컬럼에 넣을 VALUE,해당 컬럼에 넣을 VALUE)

- COLUMN 명 순서에 따른 VALUE값 넣기

INSERT INTO (테이블명)
VALUES (VALUE,VALUE,VALUE)

# UPDATE  SET

UPDATE 테이블명
SET 수정할 컬럼명 = 수정할 새로운 값

 

# [ 중복제거 ] DISTINCT / GROUP BY

- DISTINCT 를 사용한 중복제거

SELECT DISTINCT
       a.deptno
     , b.dname
  FROM emp a
     , dept b
 WHERE a.deptno = b.deptno
   AND a.sal > 1500

- GROUP BY를 사용한 중복제거

SELECT a.deptno
     , b.dname
  FROM emp a
     , dept b
 WHERE a.deptno = b.deptno
   AND a.sal > 1500
 GROUP BY a.deptno, b.dname

 

# Delete ( / Modify ) Action : 

- Cascade : Master 삭제 시 Child 같이 삭제

- Set Null : Master삭제 시 Child 해당 필드 Null

- Set Default : Master 삭제 시 Child 해당 필드 Default 값으로 설정

- Restrict : Child 테이블에  PK값이 없는 경우만 Master 삭제 허용

- No Action : 참조 무결성을 위반하는 삭제 / 수정 액션을 취하지 않음

# Insert Action : 

- Automatic : Master 테이블에 PK가 없는 경우 Master PK를 생성 후 Child 입력

- Set Null : Master 테이블에 PK가 없는 경우 Child 외부키를 Null값으로 처리

- Set Default : Master 테이블에 PK가 없는 경우 Child 외부키를 지정된 기본값으로 입력

- Dependent : Master 테이블에 PK가 존재할 때만 Child 입력 허용

- No Action : 참조무결성을 위반하는 입력 액션을 취하지 않음


 

# WHERE

- WHERE절은 FROM 절 다음에 위치

- WHERE절에서 NULL값을 사용하는경우 IS NULL / IS NOT NULL을 사용해야한다.

- 조건식구성

  • 컬럼명 : 보통 조건식의 좌측에 위치
  • 비교연산자
  • 비교 컬럼명 : JOIN 사용시

# 비교연산자

- 연산자 우선순위

  1. 괄호로 묶은연산
  2. 부정연산자(NOT)
  3. 비교연산자 ( =,>,>=,<,<= ) , SQL 비교연산자 ( BETWEEN a AND B, IN, LIKE, IS NULL )
  4. 논리연산자 중 AND - OR 순으로 처리

- 부정비교연산자 종류

  • != 
  • ^= 
  • <> 
  • NOT 컬럼명 = (~와 같지 않다.) 
  • NOT 컬럼명 > (~ 보다 크지않다.)

# NULL 의 연산

- NULL 값과의 연산(+,-,*,/ 등) 은 NULL을 리턴

- NULL 값과의 비교연산은 거짓(FALSE)를 리턴

- 특정값보다 크다, 적다라고 표현할 수 없음

- ORACLE에서 ' ' 는 NULL로 입력되고 IS NULL로 검색

-SQL SEVER 에서는 ( WHERE 컬럼명 = ' ' ) 로조회

Comments