본문 바로가기
SQLD

SQLD | SQL 기본

by 개발송이 2022. 2. 22.

과목 2 SQL 기본 및 활용

 

제 1장 SQL기본

 

제 1절 관계형 데이터베이스 개요

 

데이터 베이스 : 특정기업이나 조직 또는 개인이 필요에 의해 데이터를 일정한 형태로 저장한 것

 

SQL : 관계형 데이터베이스에서 데이터 정의, 조작, 제어를 하기 위해 사용되는 언어

-데이터 조작어 DML : SELECT, INSERT, UPDATE, DELETE

-데이터 정의어 DDL : CREATE, ALTER, DROP, TRUNCATE(RENAME)

-데이터 제어어 DCL : GRANT, REVOKE

-트랜잭션제어어 TCL : COMMIT, ROLLBACK

 

테이블 : 하나 이상의 칼럼을 가져야 한다.

 

SQL 서버는 여러개의 컬럼을 동시에 수정하는 구문 작성 불가능

 

DCL

DB관리자가 데이터 보안, 무결성 유지, 병행 제어, 회복을 위해 사용하는 언어

GRANT -사용권한 부여

GRANT 권한 ON 테이블 TO 사용자;

REVOKE - 사용권한 취소

REVOKE 권한 ON 테이블 FROM 사용자;

 

제 2절 DDL

 

데이터 정의어 Data Definition Language 

: 테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들로 특정 구조를 생성, 변경, 삭제, 이름을 바꾸는 데이터 구조와 관련된 명령어

CREATE, ALTER, DROP, TRUNCATE

 

1. CREATE TABLE

테이블을 생성하는 명령어

CREATE TABLE 테이블명 
(
  속성명 데이터타입 [NOT NULL], 
  PRIMARY KEY(기본키),
  UNIQUE(속성명,...),
  FOREIGN KEY(외래키) REFERENCES 참조테이블(기본키),
  CONSTRAINT 제약조건명 CHECK(조건식),
);

제약조건

PRIMARY KEY - 테이블의 기본 키 정의, 유일하게 테이블의 각 행을 식별

FOREIGN KEY - 외래키를 정의, 참조대상을 테이블(칼럼명)로 명시

UNIQUE - 테이블 내에서 얻은 유일한 값을 갖도록 하는 속성

NOT NULL - 해당 칼럼은 NULL값을 포함하지 않도록 하는 속성

CHECK - 개발자가 정의하는 제약조건, 참이어야 하는 조건을 지정

DEFAULT - 해당 필드의 기본값을 설정

 

제약조건 CONSTRAINT 

-테이블 생성 시

예시) CONSTRAINT 이름 PRIMARY KEY (컬럼1, 컬럼2 ..)

-테이블 생성 후

예시 ) ALTER TABLE 테이블이름 ADD CONSTRAINT 이름 PRIMARY KEY (컬럼1, 컬럼2 ..)

 

2. ALTER TABLE

컬럼 추가, 수정, 삭제, 컬럼명 수정

 

컬럼 추가 

ALTER TABLE 테이블명 ADD 컬럼명 데이터타입;

컬럼 수정

ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입;

컬럼 삭제

ALTER TABLE 테이블명 DROP 컬럼명;

컬럼명 수정

ALTER TABLE 테이블명 RENAME COLUMN 변경전컬럼명 TO 변경후컬럼명;

 

DROP CONSTRAINT 테이블 생성 시 부여했던 제약조건을 삭제하는 명령어

ADD CONSTRAINT 테이블 생성 이후에 필요에 의해서 제약조건을 추가

 

3. DROP TABLE

컬럼 추가, 수정, 삭제, 컬럼명 수정

 DROP TABLE 테이블명;

명령어 옵션 [ CASCADE | RESTRICT ]

CASCADE : 참조하는 테이블까지 연쇠적으로 제거하는 옵션

RESTRICT : 다른 테이블이 삭제할 테이블을 참조 중이면 제거하지 않는 옵션

 

4. TRUNCATE TABLE

테이블 내의 데이터들을 삭제하는 명령

TRUNCATE TABLE 테이블명;

 

제 3절 DML

 

데이터베이스에 저장된 자료들을 입력, 수정, 삭제, 조회하는 언어

 

1. SELECT

데이터 조회

SELECT [ALL|DISTINCT] 칼럼(속성)명 FROM 테이블;
SELECT * FROM 테이블; /*모든 칼럼명 선택*/

ALL-모든 튜플을 검색할 때 사용. 아무것도 명시하지 않으면 ALL로 인식

DISTINCT - 중복 데이터를 1건으로 표시

 

SELECT 명령문(셀프웨 구해오)

SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY

SELECT 속성명1,... FROM 테이블명
[WHERE 조건]
[GROUP BY 속성명1, ...]
[HAVING 그룹조건]
[ORDER BY 속성 [ASC | DESC]; /*오름차순|내림차순*/

2. INSERT

데이터의 내용을 삽입할 때 사용하는 명령어

INSERT INTO 테이블명(칼럼명1,...)
VALUES(데이터1,...)

 

3. UPDATE

데이터의 내용을 변경할때 사용하는 명령어 (업셋웨)

특정 컬럼의 값을 수정하는 용도로 자주 사용됨

UPDATE 테이블명
SET 컬럼명 = 데이터,...
WHERE 조건;

4.DELETE

데이터의 내용을 삭제할 때 사용하는 명령어(델프웨)

DELETE FROM 테이블명
WHERE 조건;

-모든 레코드를 삭제할때는 WHERE절 없이 DELETE만 사용

레코드를 삭제해도 테이블 구조는 남아 있어서 디스크에서 테이블을 완전히 삭제하는 DROP과 다름

 

비절차적 데이터 조작어 - 사용자가 무엇을 원하는 지만을 명세함

 

제 4절 TCL

 

트랜잭션 

: 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위

 

트랜잭션의 특성 ACID

Atomicity 원자성 : 분해가 불가능한 작업의 최소단위. 연산 전체가 성공 또는 실패

Consistency 일관성 : 트랜잭션이 실행 성공 후 항상 일관된 데이터베이스 상태를 보존해야 함

Islation 격리성 : 트랜잭션 실행 중 생성하는 연산의 중간 결과를 다른 트랜잭션이 접근 불가

Durability 영속성 : 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장

 

COMMIT 트랙잭션 확정 - 내용 업데이트를 영구적으로 확정하는 명령어

ROLLBACK 트랙잭션 취소 - 이전 상태로 되돌리는 명령어

SAVEPOINT 저장시기 설정

 

제 5절 WHERE절

자신이 원하는 자료만을 검색하기 위해 사용

 

처리순서 : 부정연산자 -> 비교연산자 -> 논리연산자

 

WHERE절 문법

1.비교

= / <>,!= / <,<=,>,>=

 

2. 범위 (BETWEEN)

칼럼 BETWEEN 값1 AND 값2

 

3. 집합 (IN, NIT IN)

칼럼 IN (값1, 값2..)

칼럼 NOT IN (값1, 값2...)

 

4.패턴 (LIKE)

칼럼 LIKE 패턴

% - 0개 이상의 문자열과 일치

[] - 1개의 문자와 일치

[^] - 1개의 문자와 불일치

_ - 특정 위치의 1개의 문자와 일치

 

5.NULL

칼럼 IS NULL

:칼럼이 NILL 인 데이터 조회

칼럼 IS NOT NULL

:칼럼이 NULL이 아닌 데이터 조회

 

6.복합조건 (AND, OR, NOT)

논리연사자들이 여러 개 같이 사용된 경우 ()->NOT->AND->OR순으로 처리

 

 

 

제 6절 함수

 

 

제 7절 Group By, Having 절

 

집계함수 : 여러 행 또는 테이블 전체 행으로부터 하나의 결괏값을 반환하는 함수

 

집계함수

집계함수 설명
COUNT 복수 행의 줄 수
SUM 복수 행의 해당 컬럼에 대한 합계
AVG 복수 행의 해당 컬럼 간의 평균에 대한 평균
MAX 최댓값
MIN 최솟값
STDDEV 표준편차
VARIAN 분산

 

GROUP BY

-SQL에서는 WHERE구문을 활용해 조견별 대상 ROW를 선택

-복수 ROW 대상의 데이터 분석 시 그룹핑 대상이 되는 부분을 선별할 떄 사용

-GROUP BY 구문은 실제 구체적 데이터 분석값을 보고자 하는 컬럼 단위를 선정할 대 사용되는 기준

 

특징

-NULL값을 가지는 ROW는 제외한 후 산출

-SELECT에서 사용하는 것과 같은 ALIAS사용이 불가

-WHERE 구문 안에 포함되지 않음

-WHERE 구문은 GROUP BY보다 먼저 실행되고, 대상이 되는 단일 행을 사전에 선별하는 역할을 함

 

HAVING

-HAVING 구문은 WHERE구문 내에는 사용할 수 없는 집계 함수의 구문을 적용하는데 사용

-일반적으로 GROUP BY 뒤에 기재하며, GROUP BY 구문이나 소그룹 집계 함수를 활용하는데 사용

-한마디로 GROUP BY 집계 함수에 대한 WHERE 구문

 

제 8절 ORDER BY 절

 

 

제 9절 조인 JOIN