본문 바로가기

DB(Database)

[자격증 공부 SQL] SQL 기본 및 활용

*절차적 데이터 조작어와 비절차적 데이터 조작어
비절차적 데이터 조작어는 사용자가 무슨(What) 데이터를 원하는 지만을 명세함. 절차적 데이터 조작어는 어떻게(How) 데이터를 접근해야 하는지 명세 한다. 절차적 데이터 조작어로는 PL/SQL(오라클), T-SQL(SQL Server) 등이 있다.

*PK 제약조건
/*1번 케이스 SQL Server 기준*/
CREATE TABLE PRODUCT
(
    PROD_ID VARCHAR2(10) NOT NULL,
    PROD_NM VARCHAR2(20) NOT NULL,
    REG_DT DATE NOT NULL,
    REGR_NO NUMBER(10) NULL
);

ALTER TABLE PRODUCT ADD CONSTRAINT PRODUCT_PK PRIMARY KEY (PROD_ID);

/*2번 케이스  Oracle 기준 */

CREATE TABLE PRODUCT
(
    PROD_ID VARCHAR2(10) NOT NULL,
    PROD_NM VARCHAR2(20) NOT NULL,
    REG_DT DATE NOT NULL,
    REGR_NO NUMBER(10) NULL,  /* NULL은 생략해도 되나 NOT NULL은 안됩니다. */
    CONSTRAINT PRODUCT_PK PRIMARY KEY (PROD_ID)
);

제약조건 추가는 CREATE블록 밖에서는 ALTER (TABLE명) ADD CONSTRAINT (테이블명_PK) PRIMARY KEY (칼럼명);
혹은 CREATE블록 안에서는 CONSTRAINT (테이블명_PK) PRIMARY KEY (칼럼명) 으로 짜면 된다.

*TRUNCATE, DROP, DELETE

*ORACLE과 SQL의 빈값 비교법
ORACLE에서는 IS NULL로 비교하지만, SQL에서는 = ""로 빈값을 비교한다.

https://yurimac.tistory.com/35

SQL) Oracle vs SQL Server 명령어 전체 비교 (1)

SQLD 공부 중 Oracle과 SQL Server 명령어 둘 다 알고있어야 해서 여간 헷갈리는게 아닙니다. 이론서에서 /로 구분해놓으니까 더 모르겠음 내가 보려고 만드는 비교 표 !! 🔥 명령어가 다르면 진하게

yurimac.tistory.com

*SEARCHED_CASE_EXPRESSION 와 SIMPLE_CASE_EXPRESSION 차이

*JOIN USING

*Cross Join은 조건없이 모든 행에 대해서 결합이 발생하므로 ON구문을 사용할 수 없다.

*GROUP BY에서 HAVING은 GROUP BY 없이도 사용가능하다.

*SQL 실행순서
FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY

*B-Tree 인덱스
https://snnchallenge.tistory.com/m/224

[SQLD : Ⅴ. SQL 최적화 기본 원리] 2. 인덱스 기본

* 인덱스 특징과 종류 - 데이터를 쉽게 찾을 수 있도록 돕는 책의 찾아보기와 유사한 개념 - 테이블을 기반으로 선택적으로 생성할 수 있는 구조 - 검색 조건을 만족하는 데이터를 인덱스를 통해

snnchallenge.tistory.com


*비용기반 옵티마이저와 규칙기반 옵티마이저
https://snnchallenge.tistory.com/m/223

[SQLD : Ⅴ. SQL 최적화 기본 원리] 1. 옵티마이저와 실행계획

* 옵티마이저 - 옵티마이저(Optimizer)는 사용자가 질의한 SQL문에 대해 최적의 실행 방법을 결정하는 역할을 수행 - 관계형 데이터베이스는 궁극적으로 SQL문을 통해서만 데이터를 처리할 수 있음 -

snnchallenge.tistory.com


cf.) 중첩된 그룹 함수, 페이지 문제들 , DIVIDE