일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 네트워킹
- QT
- 날솟샘
- 고윤민교수님
- 한동대학교
- dbms
- 묵상
- GLS
- CHEMISTRY
- 컴네
- Database
- 어노인팅
- FE
- 글로벌리더십학부
- 일반화학
- 예배
- 전산전자공학부
- 찬양
- SQL
- 화학
- 설교
- CCM
- 혼자공부하는sql
- 데이터베이스
- computer networks and the internet
- 날마다 솟는 샘물
- csee
- 유태준교수님
- SQLD
- 프론트엔드
- Today
- Total
멈추지 않는 기록
[DB] DB04 - 요약 (미완료) 본문
DB04 - SQL
구조적 쿼리 언어(SQL)
- SQL: 구조적 쿼리 언어
- 관계형 데이터베이스를 설명하고 조작하는 데 사용되는 주요 언어이다.
- 매우 고급 언어이다.
(1) "어떻게 할 것인지"가 아니라 "무엇을 할 것인지"를 말한다.
(2) SQL은 데이터 조작 세부 사항을 지정하지 않는다.
(3) DBMS가 쿼리를 실행하는 "최선의" 방법을 결정한다(figure out).
- 이를 "쿼리 최적화(optimization)"라고 한다.
- SQL의 두 가지 종류
(1) 데이터 정의(definition): 데이터베이스 스키마를 선언하기 위한 것(DDL)
(2) 데이터 조작(manipulation): 데이터베이스에 대한 질문을 하거나 데이터베이스를 수정하기 위한 것(DML)
SQL 구성 요소
- DML - 데이터베이스에서 정보를 쿼리하고, 튜플을 삽입하고, 삭제하고, 수정하는 기능을 제공한다.
- 무결성 - DDL에는 무결성 제약 조건을 지정하는 명령이 포함되어 있다.
- 뷰 정의 - DDL에는 뷰를 정의하는 명령이 포함되어 있다.
- 트랜잭션 제어 - 트랜잭션의 시작과 종료를 지정하는 명령이 포함되어 있다.
- 임베디드 SQL 및 동적(dynamic) SQL - SQL 문이 일반 프로그래밍 언어에 어떻게 삽입될 수 있는지 정의한다.
- 권한(Authorization) - 관계 및 뷰에 대한 접근 권한(access rights)을 지정하는 명령이 포함되어 있다.
- Access control List (ACL)
SELECT
- 기본 구조
SELECT 열_이름 FROM 테이블_이름
- 특징
- SQL 이름은 대소문자를 구분하지 않는다.
- 단, SQL 명령어(SELECT, FROM, WHERE 등)는 대문자로 작성하는 관례가 있다.
- 기본적으로 SQL은 관계와 쿼리 결과 모두에서 중복을 허용한다. -> ALL 키워드는 중복이 제거되지 않아야 함을 지정한다.
- 산술 표현식을 포함할 수 있고, 튜플의 상수 또는 속성에 적용할 수 있다. (+, -, *, /)
- 중복 YES! vs 중복 NO!
- ALL 키워드 : 중복 가능
- DISTINCT : 중복 불가능
- 모든 속성
: 별표(asteriskc)인 *를 사용한다.
- 리터럴
: FROM 절 없이 리터털을 사용할 수 있다.
- 속성의 별칭
: AS를 사용하여 열에 이름을 지정할 수 있다.
7. 튜플 반복(Tuple Replication)
: SQL에서 상수 값을 특정 테이블의 모든 행에 대해 반복적으로 반환하는 현상을 의미한다.
WHERE
- 의미
: 결과가 만족해야 하는 조건을 지정한다.
- 특징
- 논리적 연결어(AND, OR, NOT) 사용 가능
- 여러 조건을 조합하여 데이터를 필터링할 수 있다.
- 예: WHERE age > 20 AND gender = 'M'
- 비교 연산자 사용 가능 (<, <=, >, >=, =, <>)
- 값을 비교하여 특정 조건을 만족하는 데이터만 선택할 수 있다.
- 예: WHERE salary >= 50000
- 산술 표현식 결과에도 비교 적용 가능
- 연산 결과를 조건으로 사용할 수 있다.
- 예: WHERE (price * quantity) > 10000
4) BETWEEN 비교연산자
- 특정 범위 내의 값을 찾을 때 사용한다. (작성된 범위도 포함된다.)
- 예 : WHERE 열_이름 BETWEEN 90,000 AND 100,0005) 튜플 비교
- 튜플별로 비교를 수행한다.
- 예 : WHERE (instructor.ID, dept_name) = (teaches.ID, 'Biology');
FROM
- 의미
: 쿼리에 포함된 관계를 나열한다.
- 특징
- 데카르트 곱
- 예시 : FROM instructor, teaches;
- WHERE 을 사용하면 유용한 결과를 사용할 수 있다.
- 별칭
- AS 키워드를 사용하여 별칭을 지정할 수 있다.
- 예시 : FROM instructor AS T
- AS 키워드는 선택사항이며, 생략이 가능하다.
- 예시 : FROM instructor T
NULL
- 의미
: 알 수 없는 값, 또는 값이 존재하지 않음을 나타낸다.
- NULl이 포함된 산술 표현식의 결과는 NULL이다.
- 예시 : 5 + NULL -> NULL을 반환
- IS NULL / IS NOT NULL
- IS NULL: 값이 NULL인 경우를 찾는 연산자이다.
- 예시 : (WHERE column IS NULL)
- IS NOT NULL: 값이 NULL이 아닌 경우를 찾는 연산자이다.
- 예시 : (WHERE column IS NOT NULL)
집합 연산
- 종류
: UNION, INTERSECT, EXCEPT
- 특징
- 자동으로 중복을 제거한다.
- 모든 중복을 유지하려면, ALL 키워드를 사용해야 한다.
- 지원 가능 여부
- UNION : 가능
- INTERSECT : 불가능
- EXCEPT : 불가능
문자열 연산
- SQL은 문자열 비교를 위한 문자열 연산자를 포함한다.
2. LIKE 연산자
: 문자열이 특정 패턴과 일치하는지 확인할 때 사용한다.
- 일반적인 = 연산자는 완전 일치만 비교하지만, LIKE는 부분 일치 검색이 가능하다.
- LIKE는 와일드카드 문자(%, _)와 함께 사용된다.
- 와일드카드 문자
- 퍼센트(%) : 모든 하위 문자열과 일치한다. -> 0개 이상의 모든 문자와 일치
- 밑줄(_) : 모든 문자와 일치한다. -> 정확히 한 개의 문자와 일치
- 이스케이프 문자
: 문자열 내에서 특별한 의미를 가진 문자를 일반 문자로 인식하게 하는 데 사용
- 주로 LIKE 연산자와 함께 사용되며, 와일드카드 문자(%, _)를 일반 문자로 취급하고 싶을 때 사용
5 패턴은 대소문자를 구분한다.
ORDER BY
- 기본 구조
SELECT 컬럼명1, 컬럼명2, ...
FROM 테이블명
WHERE 조건
ORDER BY 정렬할_컬럼명 [ASC | DESC];
- 특징
- 여러 속성을 기준으로 정렬할 수 있다.
- 내림차순(DESC), 오름차순(ASC)로 지정할 수 있으며, 기본값은 오름차순(ASC)이다.
집계 함수
- 의미
: 집계 함수는 관계형 데이터베이스의 열 값에 대한 여러 값을 집계하여 하나의 결과를 반환하는 함수이다.
- 관계의 열 값 다중 집합에 대해 작동하며, 값을 반환한다.
- 종류
- AVG: 평균 값
- MIN: 최소 값
- MAX: 최대 값
- SUM: 값의 합
- COUNT: 값의 수
특별한 집계함수 : GROUP BY
- 의미
: 집계 함수를 사용하여 결과를 특정 열의 값에 따라 그룹화할 때 사용된다.
- 이를 통해 각 그룹에 대해 집계 함수를 적용하여 요약된 결과를 얻을 수 있다.
- 기본 구조
SELECT 열1, 집계함수(열2)
FROM 테이블명
WHERE 조건
GROUP BY 열1;
특별한 집계함수 : HAVING
- 의미
: HAVING 절은 GROUP BY로 그룹화된 결과에 대해 조건을 적용할 때 사용된다.
- 즉, 집계 함수의 결과에 대한 필터링을 가능하게 하여 특정 조건을 만족하는 그룹만 선택할 수 있다.
- 기본 구조
SELECT 열1, 집계함수(열2)
FROM 테이블명
WHERE 조건
GROUP BY 열1
HAVING 조건;
- HAVING 절의 술어는 그룹 형성(formation) 후 적용되며, WHERE 절의 술어는 그룹 형성(formation) 전에 적용된다.
INSERT
- 기본 구조
# 모든 열에 데이터 삽입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, ...)
- 특징
- 데이터 삽입 시, 특정 열이 NOT NULL 제약 조건이 아닐 경우 해당 컬럼을 제외하고 삽입할 수 있다.
- NULL을 허용하는 컬럼에 대해서는 NULL 값을 삽입할 수 있다.
3) 외래 키(Foreign Key)는 한 테이블의 속성이 다른 테이블의 특정 컬럼(기본 키 등)에 존재하는 값과 매핑되어야 한다는 제약을 의미한다.
- 다른 쿼리의 결과 삽입
: SQL에서는 다른 쿼리의 결과를 사용하여 테이블에 데이터를 삽입할 수 있다.
- 이를 통해 복잡한 데이터 이동이나 조작이 가능하다.
UPDATE
- 기본 구조
UPDATE table_name
SET col1_name = new_col1_value, col2_name = new_col2_value, ...;
- 조건을 가진 테이블 업데이트
UPDATE tablename
SET col1_name = new_col1_value, col2_name = new_col2_value, … WHERE predicate;
- CASE문
:CASE 문을 사용하여 조건에 따라 특정 열의 값을 업데이트할 수 있다.
- 이를 통해 여러 조건을 처리하고, 각각에 대해 다른 값을 설정할 수 있다.
SET 열_이름 =
CASE
WHEN 조건1
THEN 결과1
ELSE 결과2
END
DELETE
- 기본 구조
DELETE FROM table_name
WHERE predicate;
- 모든 행 삭제
- DELETE
DELETE FROM table_name;
- TRUNCATE
TRUNCATE TABLE tablename;
- 외래 키 제약 조건: 외래 키 제약 조건이 있는 테이블은 TRUNCATE TABLE로 삭제할 수 없다.
- 이유: 외래 키로 참조되는 경우, 참조 무결성이 깨질 수 있기 때문이다.
- 해결 방법: 먼저 외래 키 제약 조건을 비활성화해야 한다.
- 삭제 방식:
- DELETE는 한 행씩 삭제하는 반면, TRUNCATE는 모든 행을 한 번에 삭제한다.
- 이로 인해 외래 키가 있는 경우 TRUNCATE를 사용할 수 없다.
- 대체방법:
# ALTER를 통해 수정 (하지만 지금은 안됨)ALTER TABLE tablename
DISABLE CONSTRAINT constraint_name;
# 따라서 SET를 사용SET FOREIGN_KEY_CHECKS = 0;-- 외래 키 제약 조건 비활성화
'한동대학교 > 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 |