프로그래밍/SQLD

3. 2과목 제 1장 SQL 기본 (1), 알아야 할게 너무 많다ㅠ

량아이 2022. 8. 22. 21:44

최대한 인터넷에 떠도는 요점정리나 SQL 개발자 스터디 교재로 이해한다음에 SQL 자격검정 실전문제를 풀어보려고 했는데,

일단 되든 안되든 가벼운 마음으로 풀어봤더니 64개 중에서 21개 맞혔다ㅋㅋㅋ

다른 유튜브 강의들은 너무 길고 메모하면서 듣는다해도 시간만 날릴꺼같아서 일단 풀어봤는데 해도 너무한다 진짜 ㅋㅋㅋㅋㅋ

 

2과목에도 1과목때 했던 것처럼 모르는 것들은 정답해설을 보면서 해보려했으나 이번과목에서부턴 어림도없었고 이걸 어떻게 해야하나 이곳저곳 찾아다니던 끝에 전광철님의 노랭이 문제풀이를 보게됐는데 

분명 1과목풀때도 이해못하겠는 유형이 있었을때도 몇번 찾아보게 됐지만 봐도 전혀 이해못했었는데 설명이 좋아지신건지 2과목부턴 이해가 너무 잘됐다.

 

그리 어려운 시험이 아니기때문에 요점정리만 봐도 충분하다고 했던 유튜버 및 기타 블로거들은 어제보다 오늘 머리카락이 더 많이 빠졌길 바란다.

 


SQL 문장들의 종류

DML - 데이터 조작어

     SELECT - DB에 들어있는 데이터를 조회하거나 검색하기 위한 명령어
     INSERT, UPDATE, DELETE - 테이블에 있는 데이터에 변형을 가하는 종류의 명령어

DDL - 데이터 정의어

    구조생성, 변환, 삭제, 이름변경 등 데이터 구조와 관련된 명령어
    CREATE - 생성
    ALTER - 변경
    DROP - 삭제
    RENAME - 이름변경

DCL - 데이터 제어어

    권한을 주고 회수하는 명령어
    GRANT - 권한부여
    REVOKE - 권한취소

TCL - 트랜젝션 제어어

    논리적인 작업 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜젝션)별로 제어하는 명령어
    COMMIT - 올바르게 반영된 데이터를 DB에 반영(저장)
    ROLLBACK - 트랜젝션 시작 이전의 상태로 되돌림
    SAVEPOINT - 저장 지점

 

절차적 데이터 조작어(DML) - 어떻게(how) 데이터를 접근해야 하는지 명세함

비절차적 데이터 조작어 (DML) - 사용자가 무슨(what) 데이터를 윈하는지만 명세함

 

PK 제약조건을 생성하는 DDL

<테이블을 만들 때 바로 PK 생성시>

CONSTRAINT
	(constraint_name)
PRIMARY KEY
	(col_1, col_2...)

<테이블을 만들고 나서 별도로 PK를 생성시>

ALTER TABLE
	(table_name)
ADD 
CONSTRAINT
	(constraint_name)
PRIMARY KEY
	(col_1, col_2...)
      ㄴ(칼럼에 대한 내용)
(줄바꿈 상관 없음)

*이때 주의해야 할 점은 데이터 모델에 있는 NOT NULL은 절대 누락되면 안된다.

 

테이블 칼럼

DBMS가 SQL Server인 경우

하나의 명령으로 동시작업 못한다(문법적으로 틀림)
ALTER TABLE 기관분류 ALTER COLUMN (분류명 VARCHAR(30) NOT NULL, 등록일자 DATE NOT NULL); => X

ALTER TABLE 기관분류 ALTER COLUMN 분류명 VARCHAR(30) NOT NULL;
ALTER TABLE 기관분류 ALTER COLUMN 등록일자 DATE NOT NULL; => O

DBMS가  Oracle인 경우

ALTER TABLE 기관분류 MODIFY(분류명 VARCHAR(30) NOT NULL, 등록일자 DATE NOT NULL);
로 표현가능하다

 

널(NULL)

-알 수 없는 값

-0도 공백 ( ' ' )도 문자도 아님

- NULL을 포함한 모든 사칙연산의 결과는 NULL

- IS NULL, NOT NULL 만으로 비교가능

 

제약조건

REFERENCES - 참조

UNIQUE (KEY) - 테이블 전체에서 유일한 값, NULL입력 가능

PK - 주키로 테이블당 1기믄 생성이 가능하다 NOT NULL & UNIQUE

FK - 외래키로 테이블당 여러 개 생성이 가능하다.

        NULL 값이 될 수 있다.

       테이블간의 관계를 정의하기 위해 PK를 다른 테이블의 FK가 참조하도록 생성한다. (참조 무결성)

NOT NULL - 명시적으로 NULL 입력을 방지한다.

CHECK - 해당 조건을 만족하는 값으로만 입력을 제한

데이터 무결성 유지 - CHECK 조건에 만족하는 값만이 해당 컬럼에 입력 됨

 

  • 테이블 명은 반드시 영문으로 시작해야 하며 - 는 넣을 수 없다.
  • 칼럼이 하나인 경우 바로 옆에 PRIMATY KEY를 붙여도 된다
  • 더보기
    CREATE TABLE (table_name)
    (pk 내용 (not) null PRIMARY KEY, ...);
  • PK는 중복정의해서는 안된다.
  • 더보기
    CREATE TABLE (table_name)
    (pk 내용 (not) null PRIMARY KEY, ... );
    ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY (칼럼 이름);
    둘째줄과 셋째줄 정의 중복됨

 

테이블의 불 필요한 칼럼 삭제

ALTER TABLE

  테이블명

DROP COLUMN

  삭제할 칼럼명;

 

참조동작(Referential Action)

아직 반도 다 못했는데 할게 너무 많다...

특히 위의 사진은 반드시 외워야 함