
이 글은 이기적 정보처리기능사 실기 기본서를 기반으로 제작되었습니다.
저번 데이터베이스 챕터에 이어서, 이번엔 Part.4 SQL 활용에 대해 배워보도록 합시다!
DDL 대상 설명 스키마(Schema) - DBMS 특성과 구현 환경을 감안한 데이터 구조
- 직관적으로 하나의 데이터베이스로 이해 가능도메인(Domain) - 속성과 데이터 타입과 크기, 제약조건 등을 지정한 정보
- 속성이 가질 수 있는 값의 범위로 이해 가능테이블(Table) 데이터 저장 공간 뷰(View) 하나 이상의 물리 테이블에서 유도되는 가상의 논리 테이블 인덱스(Index) 검색을 빨르게 하기 위한 데이터 구조
| 구분 | DDL 명령어 | 내용 |
|---|---|---|
| 생성 | CREATE | 데이터베이스 오브젝트 생성 |
| 변경 | ALTER | 데이터베이스 오브젝트 변경 |
| 삭제 | DROP | 데이터베이스 오브젝트 삭제 |
| 삭제 | TRUNCATE | 데이트베이스 오브젝트 내용 삭제, 테이블 구조는 유지 |
| 구분 | 문법 |
|---|---|
| 신규 생성 | CREATE TABLE 테이블 이름 ( 열이름 데이터 타입 [DEFAULT 값] [NOT NULL] [PRIMARY KEY (열 리스트)] {[FOREIGN KEY (열 리스트) REFERENCES 테이블 이름[(열이름)] [ ON DELETE 옵션 ] [ ON UPDATE 옵션 ] ]}* [CHECK (조건식) | UNIQUE(열이름)] ); |
| 다른 테이블 정보를 이용한 테이블 생성 | CREATE TABLE 테이블이름 AS (SELECT 문); |
| 구분 | 문법 |
|---|---|
| 열 추가 | ALTER TABLE 테이블이름 ADD 열이름 데이터 타입 [DEFAILT 깂] |
| 열 데이터 타입 변경 | ALTER TABLE 테이블이름 MODIFY 열이름 데이터 타입 [DEFAILT 깂] |
| 열 삭제 | ALTER TABLE 테이블이름 DROP 열이름 |
| 구분 | 문법 |
|---|---|
| 테이블 삭제 | DROP TABLE 테이블이름 |
| 테이블 내용 삭제 | TRUNCATE TABLE 테이블이름 |
| 테이블 이름 변경 | RENAME TABLE 이전 테이블이름 TO 새로운 테이블 이름 ALTER TABLE 이전 테이블이름 RENAME 새로운 테이블 이름 |
| 유형 | 정의 |
|---|---|
| CHAR | 고정 길이 문자열 데이터 타입 |
| VARCHAR | 가변 길이 문자열 데이터 타입 |
| INT | 숫자에 사용되는 데이터 타입 |
| FLOAT | 소수형 데이터 타입 |
| DATE | 날짜에 사용되는 데이터 타입 |
| 제약조건 | 설명 |
|---|---|
| PRIMARY KEY | - 테이블의 기본키를 정의한다. - 기본으로 NOT NULL, UNIQUE 제약이 포함됨 |
| FOREIGN KEY | - 외래키를 정의함 - 참조 대상을 테이블 이름(열 이름)으로 명시해야 함 - 참조 무결성 위배 상황 발생 시 처리 방법으로 옵션 지정 가능 - NO ACTION, SET DEFAULT, SET NULL, CASCADE, RESTRICT |
| UNIQUE | - 테이블 내에서 열은 유일한 값을 가져야 함 - 테이블 내에서 동일한 값을 가져서는 안되는 항목에 지정함 |
| NOT NULL | - 테이블 내에서 관련 열의 값은 NULL일 수 없음 - 필수 입력 항목에 대해 제약조건으로 설정함 |
| CHECK | - 개발자가 정의하는 제약조건 - 상황에 따라 다양한 조건 설정 가능 |
ALTER TABLE을 사용하여 테이블에 제약조건을 추가하거나 삭제할 수는 있으나 수정은 불가능하다.
| 내용 | SQL 명령문 |
|---|---|
| 제약조건 추가 | ALTER TABLE 테이블이름 ADD [CONSTRAINT 제약조건이름] 제약조건(열이름) |
| 제약조건 삭제 | ALTER TABLE 테이블이름 DROP CONSTRAINT 제약조건이름 |
| 제약조건 활성화 | ALTER TABLE 테이블 이름 ENABLE CONSTRAINT 제약조건이름 |
| 제약조건 비활성화 | ALTER TABLE 테이블 이름 DISABLE CONSTRAINT 제약조건이름 |




Address의 Address1을 Address_Main으로 변경하시오.
ALTER TABLE Address rename column Address1 to Address_Main;
Client에 Social_S_No를 가변 문자형으로 표현하고, Null값을 허용하지 못하도록 변경하시오,
ALTER TABLE Client modify Social_S_No Varchar(20) NOT NULL;
Client 테이블을 삭제하시오.
DROP TABLE Client CASCADE;
Client 테이블에서 Phone 컬럼만 삭제하시오.
ALTER TABLE Client DROP COLUMN Phone
DROP 문에서 쓰이는 기타 SQL 명령어들
RESTRICT : 삭제할 테이블이 참조 중리면 삭제하지 않는다.
CASCADE : 삭제할 테이블이 참조 중이여도 삭제한다.
CASCADE로 삭제를 하게 되면, 삭제할 요소와 참조된 모든 요소에 대해서 연쇄적으로 같이 삭제된다.
CRUD : Create, Read, Update, Delete의 약자이다.
Create = INSERT, Read = SELECT. Update = UPDATE, Delete = DELETE
| 구분 | DML 명령어 | 내용 |
|---|---|---|
| 데이터 조회 | SELECT | 테이블의 내용을 조회 |
| 데이터 삭제 | DELETE | 테이블의 내용을 삭제 |
| 데이터 변경 | UPDATE | 테이블의 내용을 변경 |
| 데이터 추가 | INSERT | 테이블의 내용을 추가 |
SELECT [OPTION] columns FROM table [WHERE 절];

SELECT 문에서 쓰이는 기타 SQL 명령어들
- DISTINCT : 중복된 값을 한 번만 검색되도록 한다.
- BETWEEN : A AND B, 즉 A값과 B값 사이를 만족하는 부분을 검색한다.
- IN : IN(A, B), OR과 동일하게 참조되는 부분 중 하나라도 만족하는 부분을 검색한다.
- ORDER BY : 오름차순은 ASC, 내림차순은 DESC를 사용하여 정렬한다,
- HAVING : GROUP BY에 의해 그룹으로 분류된 부분에서 WHERE 대신 조건절을 대신한다.
DELETE FROM table [WHERE 절]
UPDATE table SET column1 = value1, column2 = value2, ... [WHERE 절]
INSERT INTO table_name (column1, column2, ...) VALUES (Value1, Value2, ...)
INSERT INTO table_name VALUES (Value1, Value2, ...)

아무 조건 없이 Client 테이블의 모든 컬럼을 조회하시오.


Client에서 Client_ID가 1인 유저를 조회하시오.


추가로 알아둬야 하는 SELECT 명령어들!
- 학생 테이블에서 중복을 제외한 동아리명 컬럼을 조회하시오.
SELECT DISTINCT 동아리명 FROM 학생;
- 학생 테이블에서 학년이 3학년, 과목이 영어인 학생의 성명과 연락처를 조회하시오.
SELECT 성명, 연락처 FROM 학생 WHERE 학년 = 3 AND 과목 = '영어';



추가로 알아줘야 하는 DELETE 명령어
- 학생 테이블에서 학년이 3학년인 데이터를 삭제하시오.
DELETE FROM '학생' WHERE 학년 = 3;
오브젝트 목적 내용 사용자 권한 접근 통제 사용자를 등록, 사용자에게 특정 데이터베이스를 사용할 수 있는 권리를 부여하는 작업 트랜잭션 안전한 거래 보장 동시에 다수의 작업을 독립적으로 안전하게 처리하기 위한 상호작용 단위

권한 명령어 문법 시스템 권한 부여 GRANT 권한1, 권한2 TO 사용자계정 객체 권한 부여 GRANT 권한1, 권한2 ON 객체명 TO 사용자계정

권한 명령어 문법 시스템 권한 회수 REVOKE 권한1, 권한2 TO 사용자계정 객체 권한 회수 REVOKE 권한1, 권한2 ON 객체명 TO 사용자계정

명령어 내용 비고 COMMIT 트랜잭션을 확정함 ROLLBACK 트랜잭션을 취소함 CHECKPOINT 저장점 설정 ROLLBACK할 위치를 지정함
메타 데이터란?
- '데이터에 대한 데이터', 즉 어떠한 목적을 가지고 만들어진 데이터를 의미한다.
- 데이터에 관해 구조화 된 데이터로, 다른 데이터를 설명해 주는 데이터라고 볼 수 있다.
네! SQL 활용 중 기본 SQL에 대해 배워 보았습니다!
다음 시간에는 뷰, 인덱스등, SQL에 필요한 고오급 기술에 대해 배워보도록 합시다!

기본 SQL은 분식집이고, 고급 SQL은 고오급 레스토랑이죠 ㅎ
그럼 다음 시간에 다시 뵙도록 하죠!
