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

2025. 3. 27. 15:22·🏫 한동대학교/25-1 수업 정리
목차
  1. DB04 - SQL
  2.  
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
  1. DB04 - SQL
  2.  
'🏫 한동대학교/25-1 수업 정리' 카테고리의 다른 글
  • [DB] DB06 - 요약
  • [DB] DB05 - 요약
  • [DB] DB03 - 요약 (미완료)
  • [DB] DB02 - 요약 (미완료)
pangil_kim
pangil_kim
기록을 통해 지속적인 성장을 추구합니다.
멈추지 않는 기록기록을 통해 지속적인 성장을 추구합니다.
    250x250
  • pangil_kim
    멈추지 않는 기록
    pangil_kim
  • 전체
    오늘
    어제
  • 📝 글쓰기
      ⚙️ 관리

    • 분류 전체보기 (309) N
      • 💻 개발 (124) N
        • ※ 참고 지식 (6)
        • 📀 MySQL (24)
        • 🌸 Spring Boot (5)
        • 🟩 Node.js (7)
        • 🦕 React (6)
        • 🎩 Next.js (25)
        • 📘 TypeScript (4)
        • 🌈 CSS (4)
        • 🌀 Dart (2)
        • 🧑🏻‍💻 코테 (25)
        • 🕸️ 알고리즘 (4)
        • 🩵 Flutter (9)
        • 📒 JavaScript (3) N
      • 📽️ 프로젝트 (5)
        • 캡스톤디자인2 (5)
      • ✍🏻 회고 (10)
        • 우테코 (2)
      • 📰 정보 공유 (12)
      • 🏫 한동대학교 (151)
        • Database (15)
        • Software Engineering (18)
        • EAP (22)
        • 일반화학 (26)
        • 25-1 수업 정리 (19)
        • Computer Networking (36)
        • OPIc (2)
        • 클라우드 컴퓨팅 (4)
        • 미술의 이해 (9)
  • 최근 글

  • 인기 글

  • 태그

    csee
    일반화학
    날솟샘
    GLS
    어노인팅
    QT
    computer networks and the internet
    유태준교수님
    웹개발
    찬양
    주일
    한동대학교
    고윤민교수님
    날마다 솟는 샘물
    데이터베이스
    설교
    글로벌리더십학부
    FE
    Database
    네트워킹
    화학
    CHEMISTRY
    typeScript
    컴네
    SQL
    예배
    프론트엔드
    묵상
    CCM
    전산전자공학부
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.4
pangil_kim
[DB] DB04 - 요약 (미완료)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.