SQL(Structured Query Language)
IBM이 Sequel이라는 이름으로 개발한 관계형 데이터베이스 언어
ANSI에 의해 관계형 데이터베이스 표준 언어로 승인되었다.
DBMS는 SQL을 해석하고 프로그램으로 변환하여 실행하고 결과를 알려준다.
데이터 부속어: 데이터베이스의 데이터와 메타 데이터를 생성하고 처리하는 문법만 가진다.
SQL 종류
SQL은 기능에 따라 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL) 로 나뉜다.
- 데이터 정의어 : 테이블이나 관계의 구조를 생성하는데 사용
- CREATE, ALTER, DROP
- 데이터 조작어: 테이블에 데이터를 검색, 삽입, 수정, 삭제하는데 사용
- SELECT, INSERT, UPDATE, DELETE
- 데이터 제어어: 데이터의 사용 권한을 관리하는데 사용
- GRANT, REVOKE
데이터 조작어 - 검색(SELECT)
구조
더 자세히 살펴보면,
select : 검색할 속성
- distinct : 중복 제거
where : 검색 조건
- between A and B : A이상 B 이하 (범위 양 끝값 포함)
- IN : 집합의 원소인지 판단하는 연산자
- LIKE : 문자열의 패턴 비교, ''로 둘러싸기
- % : 아무 문자열이나 대신함(문자 없어도 됨)
- _ : 특정 위치에 한 문자만 대신함
- ORDER_BY : 정렬 (기본적으로 오름차순)
- ASC : 오름차순, DESC: 내림차순
집계 함수와 GROUP BY
집계를 하기 위해서 GROUP BY문을 사용하고, 구체적인 집계 내용은 집계 함수를 사용한다.
집계 함수
SUM(합), AVG(평균), MIN(최소값), MAX(최대값), COUNT(개수)
select SUM(saleprice) FROM Orders;
- 합계열에 대한 이름을 AS로 지정할 수 있다.
select SUM(saleprice) AS 총매출 FROM Orders;
- COUNT(특정 속성값) : 특정 속성값에 *을 넣을 수 있다. 해당 투플의 개수를 세어주며 NULL값은 제외된다.
GROUP BY
속성이 같은 값끼리 그룹을 만들 수 있다.
SELECT custid, COUNT(*) AS 도서수량, SUM(saleprice) AS 총액
FROM Orders
GROUP BY custid;
결과
HAVING
GROUP BY 절의 결과를 나타내는 그룹을 제한하는 역할
- GROUP BY로 묶은 후 SELECT 절에는 GROUP BY에서 사용한 속성과 집계함수만 나올 수 있다.
- HAVING은 반드시 GROUP BY절과 같이 작성해야하고, WHERE 절보다 뒤에 나와야한다.
실행 순서
과정
두 개 이상의 테이블에서 SQL 질의
SQL은 여러개의 테이블을 조인과 부속 질의로 질의할 수 있다.
조인
한 테이블의 행을 다른 테이블의 행에 연결하여 두 개 이상의 테이블을 결합하는 연산
- 조건이 없으면 카티전 프로덕트 연산이 된다.
- ON : 조인 조건 명시하기
- outer join에서 해당 값이 없을 경우 NULL
부속 질의
질의가 중첩되어 있는 것(=중첩 질의)
순서 : 부속 질의 -> 전체 질의
집합 연산
테이블은 튜플의 집합이므로 테이블 간의 집합 연산을 이용하여 합, 차, 교집합을 구할 수 있다.
- 합집합 : UNION
- 차집합 : EXCEPT
- 교집합: INTERSECT
EXISTS
상관 부속질의문
조건에 맞는 투플이 존재하면 결과에 포함시킨다.
- cs의 모든 행에 대해 반복되며 참과 거짓을 판단한다.
데이터 정의어(DDL)
데이터를 저장할 테이블의 구조를 만드는 명령이다.
테이블의 구조를 만드는 CREATE, 구조를 변경하는 ALTER, 구조를 삭제하는 DROP문
CREATE
테이블을 구성하고 속성과 속성에 관한 제약을 정의하며, 기본키 및 외래키를 정의하는 명령이다.
예시
- 외래키 지정시 삭제 옵션
- ON DELETE CASCADE : 부모 테이블의 투플이 삭제되면 참조하던 자식 테이블 투플 연쇄 삭제
- NO ACTION : 어떠한 행동도 안취함
- SET NULL : NULL값으로 변경
- SET DEFAULT : 기본값으로 변경
데이터 타입 종류
ALTER
생성된 테이블의 속성과 속성에 대한 제약을 변경하며 기본키 및 외래키를 변경한다.
- ADD, DROP : 속성 추가, 삭제
예시
DROP
테이블을 삭제하는 명령
테이블의 구조와 데이터를 모두 삭제한다.
데이터만 삭제하려면 DELETE문을 사용한다.
DROP TABLE 테이블명
삭제하려는 테이블의 기본키를 다른 테이블에서 참조하고 있다면 삭제가 거절될 수 있다.
삭제를 하기 위해서는 참조하고 있는 테이블부터 삭제해야한다.
데이터 조작어(DML) - 삽입, 수정, 삭제
INSERT
테이블에 새로운 튜플을 삽입하는 명령
bulk insert
한번에 여러개의 튜플 삽입하는 방법
다른 테이블에 저장된 데이터를 읽어서(select) 삽입
UPDATE
특정 속성 값을 수정하는 명령
다른 테이블 속성값 이용 가능
- 주의사항 : UPDATE시 조건을 지정하지 않을 경우 모든 데이터의 값이 수정된다.
DELETE
테이블에 있는 기존 튜플을 삭제하는 명령
외래키로 다른 테이블이 참조시에 삭제가 중지될 수 있다.
Reference
책 : SQL Server로 배우는 데이터베이스 개론과 실습
https://m.yes24.com/Goods/Detail/97538787
SQL Server로 배우는 데이터베이스 개론과 실습 - 예스24
이론부터 워크북 실습까지, 한 권으로 배우는 데이터베이스데이터베이스 핵심 이론을 SQL Server로 실습하며 공부할 수 있는 책입니다. 데이터베이스 시스템을 이해하는 데 필요한 이론을 4개의
m.yes24.com
'CS > 데이터베이스' 카테고리의 다른 글
[데이터베이스] 트랜잭션, 동시성 제어 (1) | 2024.04.04 |
---|---|
[데이터베이스] 인덱스 + 심화 (커버링 인덱스, 실행 계획, 인덱스 스캔) (1) | 2024.03.22 |
[데이터베이스] SQL 고급 (내장함수, subquery, 뷰) (1) | 2024.03.21 |
[데이터베이스] 관계 데이터 모델(ERD) (0) | 2024.03.14 |
[데이터베이스] 데이터베이스와 데이터베이스 시스템 (3) | 2024.03.07 |