멈추지 않는 기록

[DB] DB04 - 요약 (미완료) 본문

한동대학교/25-1 수업 정리

[DB] DB04 - 요약 (미완료)

pangil_kim 2025. 3. 27. 15:22
728x90

DB04 - SQL

구조적 쿼리 언어(SQL)

  1. SQL: 구조적 쿼리 언어
  1. 관계형 데이터베이스를 설명하고 조작하는 데 사용되는 주요 언어이다.
  2. 매우 고급 언어이다.

(1) "어떻게 할 것인지"가 아니라 "무엇을 할 것인지"를 말한다.

(2) SQL은 데이터 조작 세부 사항을 지정하지 않는다.

(3) DBMS가 쿼리를 실행하는 "최선의" 방법을 결정한다(figure out).

  • 이를 "쿼리 최적화(optimization)"라고 한다.
  1. SQL의 두 가지 종류

(1) 데이터 정의(definition): 데이터베이스 스키마를 선언하기 위한 것(DDL)

(2) 데이터 조작(manipulation): 데이터베이스에 대한 질문을 하거나 데이터베이스를 수정하기 위한 것(DML)

SQL 구성 요소

  • DML - 데이터베이스에서 정보를 쿼리하고, 튜플을 삽입하고, 삭제하고, 수정하는 기능을 제공한다.
  • 무결성 - DDL에는 무결성 제약 조건을 지정하는 명령이 포함되어 있다.
  • 뷰 정의 - DDL에는 뷰를 정의하는 명령이 포함되어 있다.
  • 트랜잭션 제어 - 트랜잭션의 시작과 종료를 지정하는 명령이 포함되어 있다.
  • 임베디드 SQL 및 동적(dynamic) SQL - SQL 문이 일반 프로그래밍 언어에 어떻게 삽입될 수 있는지 정의한다.
  • 권한(Authorization) - 관계 및 뷰에 대한 접근 권한(access rights)을 지정하는 명령이 포함되어 있다.
  • Access control List (ACL)

SELECT

  1. 기본 구조
SELECT 열_이름 FROM 테이블_이름
  1. 특징
  1. SQL 이름은 대소문자를 구분하지 않는다.
  2. 단, SQL 명령어(SELECT, FROM, WHERE 등)는 대문자로 작성하는 관례가 있다.
  3. 기본적으로 SQL은 관계와 쿼리 결과 모두에서 중복을 허용한다. -> ALL 키워드는 중복이 제거되지 않아야 함을 지정한다.
  4. 산술 표현식을 포함할 수 있고, 튜플의 상수 또는 속성에 적용할 수 있다. (+, -, *, /)
  1. 중복 YES! vs 중복 NO!
  • ALL 키워드 : 중복 가능
  • DISTINCT : 중복 불가능
  1. 모든 속성

: 별표(asteriskc)인 *를 사용한다.

  1. 리터럴

: FROM 절 없이 리터털을 사용할 수 있다.

  1. 속성의 별칭

: AS를 사용하여 열에 이름을 지정할 수 있다.

7. 튜플 반복(Tuple Replication)

: SQL에서 상수 값을 특정 테이블의 모든 행에 대해 반복적으로 반환하는 현상을 의미한다.

WHERE

  1. 의미

: 결과가 만족해야 하는 조건을 지정한다.

  1. 특징
  1. 논리적 연결어(AND, OR, NOT) 사용 가능

- 여러 조건을 조합하여 데이터를 필터링할 수 있다.

  • 예: WHERE age > 20 AND gender = 'M'
  1. 비교 연산자 사용 가능 (<, <=, >, >=, =, <>)

- 값을 비교하여 특정 조건을 만족하는 데이터만 선택할 수 있다.

  • 예: WHERE salary >= 50000
  1. 산술 표현식 결과에도 비교 적용 가능

- 연산 결과를 조건으로 사용할 수 있다.

  • 예: WHERE (price * quantity) > 10000

4) BETWEEN 비교연산자

- 특정 범위 내의 값을 찾을 때 사용한다. (작성된 범위도 포함된다.)

  • 예 : WHERE 열_이름 BETWEEN 90,000 AND 100,0005) 튜플 비교
  • 튜플별로 비교를 수행한다.
  • 예 : WHERE (instructor.ID, dept_name) = (teaches.ID, 'Biology');

FROM

  1. 의미

: 쿼리에 포함된 관계를 나열한다.

  1. 특징
  1. 데카르트 곱
  • 예시 : FROM instructor, teaches;
  • WHERE 을 사용하면 유용한 결과를 사용할 수 있다.
  1. 별칭
  • AS 키워드를 사용하여 별칭을 지정할 수 있다.
  • 예시 : FROM instructor AS T
  • AS 키워드는 선택사항이며, 생략이 가능하다.
  • 예시 : FROM instructor T

NULL

  1. 의미

: 알 수 없는 값, 또는 값이 존재하지 않음을 나타낸다.

  1. NULl이 포함된 산술 표현식의 결과는 NULL이다.
  • 예시 : 5 + NULL -> NULL을 반환
  1. IS NULL / IS NOT NULL
  • IS NULL: 값이 NULL인 경우를 찾는 연산자이다.
  • 예시 : (WHERE column IS NULL)
  • IS NOT NULL: 값이 NULL이 아닌 경우를 찾는 연산자이다.
  • 예시 : (WHERE column IS NOT NULL)

집합 연산

  1. 종류

: UNION, INTERSECT, EXCEPT

  1. 특징
  1. 자동으로 중복을 제거한다.
  2. 모든 중복을 유지하려면, ALL 키워드를 사용해야 한다.
  1. 지원 가능 여부
  • UNION : 가능
  • INTERSECT : 불가능
  • EXCEPT : 불가능

문자열 연산

  1. SQL은 문자열 비교를 위한 문자열 연산자를 포함한다.

2. LIKE 연산자

: 문자열이 특정 패턴과 일치하는지 확인할 때 사용한다.

  • 일반적인 = 연산자는 완전 일치만 비교하지만, LIKE는 부분 일치 검색이 가능하다.
  • LIKE는 와일드카드 문자(%, _)와 함께 사용된다.
  1. 와일드카드 문자
  1. 퍼센트(%) : 모든 하위 문자열과 일치한다. -> 0개 이상의 모든 문자와 일치
  2. 밑줄(_) : 모든 문자와 일치한다. -> 정확히 한 개의 문자와 일치
  1. 이스케이프 문자

: 문자열 내에서 특별한 의미를 가진 문자를 일반 문자로 인식하게 하는 데 사용

  • 주로 LIKE 연산자와 함께 사용되며, 와일드카드 문자(%, _)를 일반 문자로 취급하고 싶을 때 사용

5 패턴은 대소문자를 구분한다.

ORDER BY

  1. 기본 구조
SELECT 컬럼명1, 컬럼명2, ...
FROM 테이블명
WHERE 조건
ORDER BY 정렬할_컬럼명 [ASC | DESC];
  1. 특징
  2. 여러 속성을 기준으로 정렬할 수 있다.
  3. 내림차순(DESC), 오름차순(ASC)로 지정할 수 있으며, 기본값은 오름차순(ASC)이다.

집계 함수

  1. 의미

: 집계 함수는 관계형 데이터베이스의 열 값에 대한 여러 값을 집계하여 하나의 결과를 반환하는 함수이다.

  • 관계의 열 값 다중 집합에 대해 작동하며, 값을 반환한다.
  1. 종류
  • AVG: 평균 값
  • MIN: 최소 값
  • MAX: 최대 값
  • SUM: 값의 합
  • COUNT: 값의 수

특별한 집계함수 : GROUP BY

  1. 의미

: 집계 함수를 사용하여 결과를 특정 열의 값에 따라 그룹화할 때 사용된다.

  • 이를 통해 각 그룹에 대해 집계 함수를 적용하여 요약된 결과를 얻을 수 있다.
  1. 기본 구조
SELECT 열1, 집계함수(열2)
FROM 테이블명
WHERE 조건
GROUP BY 열1;

특별한 집계함수 : HAVING

  1. 의미

: HAVING 절은 GROUP BY로 그룹화된 결과에 대해 조건을 적용할 때 사용된다.

  • 즉, 집계 함수의 결과에 대한 필터링을 가능하게 하여 특정 조건을 만족하는 그룹만 선택할 수 있다.
  1. 기본 구조
SELECT 열1, 집계함수(열2)
FROM 테이블명
WHERE 조건
GROUP BY 열1
HAVING 조건;
  • HAVING 절의 술어는 그룹 형성(formation) 후 적용되며, WHERE 절의 술어는 그룹 형성(formation) 전에 적용된다.

INSERT

  1. 기본 구조
# 모든 열에 데이터 삽입INSERT INTO table_name VALUES (col1_value, col2_value, ...)

# 선택된 열에 데이터 삽입INSERT INTO table_name (col1_name, col3_name, col4_name, ...)
VALUES (col1_value, col3_value, col4_value, ...)
  1. 특징
  1. 데이터 삽입 시, 특정 열이 NOT NULL 제약 조건이 아닐 경우 해당 컬럼을 제외하고 삽입할 수 있다.
  2. NULL을 허용하는 컬럼에 대해서는 NULL 값을 삽입할 수 있다.

3) 외래 키(Foreign Key)는 한 테이블의 속성이 다른 테이블의 특정 컬럼(기본 키 등)에 존재하는 값과 매핑되어야 한다는 제약을 의미한다.

  1. 다른 쿼리의 결과 삽입

: SQL에서는 다른 쿼리의 결과를 사용하여 테이블에 데이터를 삽입할 수 있다.

  • 이를 통해 복잡한 데이터 이동이나 조작이 가능하다.

UPDATE

  1. 기본 구조
UPDATE table_name
SET col1_name = new_col1_value, col2_name = new_col2_value, ...;
  1. 조건을 가진 테이블 업데이트
UPDATE tablename
SET col1_name = new_col1_value, col2_name = new_col2_value, … WHERE predicate;
  1. CASE문

:CASE 문을 사용하여 조건에 따라 특정 열의 값을 업데이트할 수 있다.

  • 이를 통해 여러 조건을 처리하고, 각각에 대해 다른 값을 설정할 수 있다.
SET 열_이름 =
	CASE
    	WHEN 조건1
        	THEN 결과1
        	ELSE 결과2
	END

DELETE

  1. 기본 구조
DELETE FROM table_name
WHERE predicate;
  1. 모든 행 삭제
  1. DELETE
DELETE FROM table_name;
  1. TRUNCATE
TRUNCATE TABLE tablename;
  • 외래 키 제약 조건: 외래 키 제약 조건이 있는 테이블은 TRUNCATE TABLE로 삭제할 수 없다.
  • 이유: 외래 키로 참조되는 경우, 참조 무결성이 깨질 수 있기 때문이다.

- 해결 방법: 먼저 외래 키 제약 조건을 비활성화해야 한다.

  • 삭제 방식:
  • DELETE는 한 행씩 삭제하는 반면, TRUNCATE는 모든 행을 한 번에 삭제한다.
  • 이로 인해 외래 키가 있는 경우 TRUNCATE를 사용할 수 없다.
  • 대체방법:
# ALTER를 통해 수정 (하지만 지금은 안됨)ALTER TABLE tablename
DISABLE CONSTRAINT constraint_name;

# 따라서 SET를 사용SET FOREIGN_KEY_CHECKS = 0;-- 외래 키 제약 조건 비활성화

 

728x90

'한동대학교 > 25-1 수업 정리' 카테고리의 다른 글

[DB] DB06 - 요약  (0) 2025.03.31
[DB] DB05 - 요약  (0) 2025.03.30
[DB] DB03 - 요약 (미완료)  (0) 2025.03.27
[DB] DB02 - 요약 (미완료)  (0) 2025.03.24
[DB] DB01 - 요약 (미완료)  (0) 2025.03.21