728x90
1. SQL의 소개
- SQL(Structured Query Language)
- 관계 데이터베이스를 위한 표준 질의어
- 데이터 정의어, 데이터 조작어, 데이터 제어어가 있다.
- SQL의 분류
- 데이터 정의어(DDL) : 테이블을 생성하고 변경, 제거하는 기능을 제공
- 데이터 조작어(DML) : 테이블에 새 데이터를 삽입하거나, 테이블에 저장된 데이터를 수정, 삭제, 검색하는 기능을 제공
- 데이터 제어어(DCL) : 보안을 위해 데이터에 대한 접근 및 사용 권한을 사용자 별로 부여하거나 취소하는 기능을 제공
2. SQL을 이용한 데이터 정의
- 테이블 생성
- CREATE TABLE 문을 사용한다.
- 속성의 정의
- 테이블을 구성하는 각 속성의 데이터 타입을 선택한 다음 null 값 허용 여부와 기본 값 필요 여부 결정
- NOT NULL : 속성이 null 값을 허용하지 않음을 의미한다.
ex) VARCHAR(20) NOT NULL - DEFAULT : 속성의 기본 값을 지정한다.
ex) INT DEFAULT 0
- 키의 정의
- PRIMARY KEY
- 기본키(primary key)를 지정
- UNIQUE
- 대체키를 지정
- 유일성을 가지고 기본키와 달리 null 값이 허용됨
- FOREIGN KEY
- 외래키를 지정
- 외래키가 어떤 테이블의 무슨 속성을 참조하는지 REFERENCES 키워드 다음에 제시
ex) FOREIGN KEY(소속부서) REFERENCES 부서(부서번호)
- PRIMARY KEY
- 데이터 무결성 제약조건의 정의
- CHECK
- 테이블 내 데이터의 무결성을 유지하기 위해 특정 속성에 대한 제약조건을 지정
- CONSTRAINT 키워드와 함께 고유의 이름을 부여할 수도 있다.
ex) CHECK(재고량 >= 0 AND 재고량 <= 10000)
ex2) CONSTRAINT CHK_CPY CHECK(제조업체 = '한빛제과')
- CHECK
- 테이블 변경
- ALTER TABLE 문을 사용
- 새로운 속성 추가 시 ADD 키워드를 사용
- 기존 속성 삭제 시 DROP 키워드를 사용
- CASCADE : 삭제할 속성과 관련된 제약조건이나 참조하는 다른 속성을 함께 삭제
- RESTRICT : 삭제할 속성과 관련된 제약조건이나 참조하는 다른 속성이 존재하면 삭제 거부
- 테이블 제거
- DROP TABLE 문을 사용
- CASCADE : 제거할 테이블을 참조하는 다른 테이블도 함께 제거
- RESTRICT : 제거할 테이블을 참조하는 다른 테이블이 존재하면 제거 거부
3. SQL을 이용한 데이터 조작
- 데이터 검색(SELECT)
- 기본 검색
- SELECT + 속성 이름
- FROM + 테이블 이름
- 검색 결과는 테이블 형태로 반환
- ALL : 결과 테이블이 tuple의 중복을 허용하도록 지정
- DISTINCT : 결과 테이블이 tuple의 중복을 허용하지 않도록 지정
- AS 키워드를 이용해 결과 테이블에서 속성의 이름을 바꾸어 출력 가능
- 산술식을 이용한 검색
- SELECT 키워드와 함께 산술식 제시
- 속성의 값이 실제로 변경되지는 않음
- 결과 테이블에서만 계산된 결과 값이 출력됨
- 조건 검색
- 조건을 만족하는 데이터만 검색
- WHERE 키워드와 함께 비교 연산자와 논리 연산자를 이용해 검색 조건 제시
- LIKE를 이용한 검색
- LIKE 키워드를 이용해 부분적으로 일치하는 데이터를 검색
- 문자열을 이용하는 조건에만 LIKE 키워드 사용 가능
- NULL을 이용한 검색
- IS NULL : 특정 속성의 값이 null 값인지 비교
- IS NOT NULL : 특정 속성의 값이 null 값이 아닌지를 비교
- 정렬 검색
- ORDER BY를 이용
- ASC : 오름차순(기본값), DESC : 내림차순
- 집계 함수를 이용한 검색
- 특정 속성의 값을 통계적으로 계산한 결과를 검색하기 위해 집계 함수를 이용
- 집계 함수 사용 시 주의 사항
- null인 속성 값은 제외하고 계산
- WHERE 절에서는 사용할 수 없고 SELECT 절이나 HAVING 절에서만 사용 가능
- 그룹별 검색
- GROUP BY 키워드를 이용해 특정 속성의 값이 같은 tuple을 모아 그룹을 만들고 그룹별로 검색
- HAVING 키워드를 함께 이용해 그룹에 대한 조건을 작성(이는 집계 함수는 WHERE 절에서 사용할 수 없기 때문이다.)
- GROUP BY 절에 명시된 속성은 반드시 SELECT 절에 반드시 포함
- 집계 함수나 GROUP BY 절에 명시된 속성 외의 속성은 SELECT 절에 작성 불가
- 여러 테이블에 대한 조인 검색
- 조인 검색 : 여러 개의 테이블을 연결하여 데이터를 검색하는 것
- 조인 속성 : 조인 검색을 위해 테이블을 연결해주는 속성
- 연결하려는 테이블 간에 조인 속성의 이름은 달라도 되지만 domain은 같아야 함
- 일반적으로 외래키가 조인 속성으로 이용됨
- FROM + 검색에 필요한 모든 테이블
- WHERE 절에 조인 속성의 값이 같아야 함을 의미하는 조인 조건을 제시
- 같은 이름의 속성이 서로 다른 테이블에 존재할 수 있으므로 속성 이름 앞에 해당 속성이 소속된 테이블의 이름을 표시
ex) 주문.주문고객 - 여러 테이블에 대한 조인 검색 시 INNER JOIN.. ON을 사용하기도 한다.
- 부속 질의문을 이용한 검색
- SELECT 문 내에 또 다른 SELECT 문을 포함하는 질의
- 단일 행 부속 질의문 : 하나의 행을 결과로 반환
- 다중 행 부속 질의문 : 하나 이상의 행을 결과로 반환
- 부속 질의문을 먼저 수행하고, 그 결과를 이용해 상위 질의문을 수행
- 부속 질의문과 상위 질의문을 연결하는 연산자가 필요
- 단일 행 부속 질의문은 비교 연산자를 사용 가능하나 다중 행 부속 질의문은 사용 불가
- 다중 행 부속 질의문에서 사용하는 연산자
- IN / NOT IN : 부속 질의문의 결과 값 중 일치하는 것이 있으면(없으면) 검색 조건이 참
- EXISTS / NOT EXISTS : 부속 질의문의 결과 값이 하나라도 존재하면(존재하지 않으면) 검색 조건이 참
- ALL / ANY(SOME) : 비교 연산자와 함께 사용하는데, 부속 질의문의 결과 값 모두와(하나라도) 비교한 결과가 참이면 검색 조건을 만족
- 데이터 삽입
- INSERT 문을 사용
- 데이터 직접 삽입
- INTO + tuple을 삽입할 테이블의 이름(속성의 이름1, 속성의 이름2, ... )
- VALUES + (속성 값1, 속성 값2, ... )
- INTO 절의 속성 이름과 VALUES 절의 속성 값은 일대일 대응되어야 함
- 부속 질의문을 이용한 데이터 삽입
- VALUES 대신 SELECT 문을 이용해 다른 테이블에서 검색한 데이터를 삽입
- 데이터 수정
- UPDATE 문을 사용
- 테이블에 저장된 tuple에서 특정 속성의 값을 수정
- SET 키워드 다음에 속성 값을 어떻게 수정할 것인지를 지정
- WHERE 절에 제시된 조건을 만족하는 tuple에 대해서만 속성 값을 수정(생략 시 모든 tuple에 대해 속성 값을 수정)
- 데이터 삭제
- DELETE 문을 사용
- 테이블에 저장된 데이터를 삭제
- WHERE 절에 제시한 조건을 만족하는 tuple만 삭제(WHERE 생략 시 테이블에 존재하는 모든 tuple을 삭제 해 빈 테이블이 됨)
출처 : 데이터베이스의 원리와 응용 강의
728x90
'데이터베이스' 카테고리의 다른 글
7. 관계 데이터 연산 (0) | 2021.09.27 |
---|---|
6. 정규화 (0) | 2021.09.24 |
5. 관계 데이터 모델 (0) | 2021.09.24 |
4. 개념적 데이터 모델링 (0) | 2021.09.24 |
3. 데이터베이스 시스템 (0) | 2021.09.22 |