DevBlackCat
정보처리기사 : SQL 작성 (1) 완전정복!! 본문
728x90
SQL
- 데이터를 처리하기 위해 쓰는 질의 언어
SQL의 특징
- 구문이 영어 문장과 유사하여 배우기 쉽고 사용하기 편리하다.
- 데이터 연산이 절차적이지 않고 집합 단위로 처리된다.
- 표준 SQL 문법이 있어서 다양한 DBMS(예: Oracle, MSSQL, MySQL 등)에 구애받지 않고 사용할 수 있다.
- SQL은 대소문자를 구별하지 않는다.
- 한 줄 주석은 --로 시작하고, 여러 줄 주석은 /* */로 묶는다.
SQL 문법의 종류
① 데이터 정의어 (DDL, Data Definition Language)
- CREATE: 테이블 생성
CREATE TABLE 회원 (
USER_NO INT(11) NOT NULL AUTO_INCREMENT,
NAME VARCHAR(50) NOT NULL,
AGE TINYINT(4) DEFAULT '0',
PRIMARY KEY (USER_NO)
);
- ALTER: 테이블 구조 변경
-- 회원 테이블에 주소 속성 추가
ALTER TABLE 회원 ADD ADDR VARCHAR(200);
- DROP: 테이블 삭제
-- 회원 테이블 삭제
DROP TABLE 회원;
- RENAME: 테이블 이름 변경
-- 회원 테이블 이름을 사용자로 변경
RENAME TABLE 회원 TO 사용자;
- TRUNCATE: 테이블 데이터 초기화
-- 회원 테이블 데이터 삭제
TRUNCATE TABLE 회원;
② 데이터 조작어 (DML, Data Manipulation Language)
- SELECT: 데이터 조회
-- 부서별 인원수와 나이 합산 조회
SELECT 부서, COUNT(*) AS 인원수, SUM(나이) AS 나이
FROM 사원정보
GROUP BY 부서;
- INSERT: 데이터 삽입
-- 회원 데이터 추가
INSERT INTO 회원 (NAME, AGE)
VALUES ('이흥직', '42');
- UPDATE: 데이터 수정
-- 회원 나이를 43으로 수정
UPDATE 회원
SET AGE = 43
WHERE NAME = '이흥직';
- DELETE: 데이터 삭제
-- 회원 데이터 삭제
DELETE FROM 회원
WHERE NAME = '이흥직';
③ 데이터 제어어 (DCL, Data Control Language)
- GRANT: 권한 부여
-- 사용자에게 SELECT 권한 부여
GRANT SELECT ON 회원 TO '사용자이름';
- REVOKE: 권한 회수
-- 사용자로부터 SELECT 권한 회수
REVOKE SELECT ON 회원 FROM '사용자이름';
④ 트랜잭션 제어어 (TCL, Transaction Control Language)
- COMMIT: 트랜잭션 결과 확정
-- 변경 사항 확정
COMMIT;
- ROLLBACK: 트랜잭션 결과 취소
-- 마지막 변경 사항 취소
ROLLBACK;
- SAVEPOINT: 트랜잭션 중간 저장점 설정
-- 저장점 설정
SAVEPOINT 저장점1;
-- 저장점으로 롤백
ROLLBACK TO 저장점1;
DDL의 조작 방법
① CREATE
- 데이터베이스 객체(테이블, 인덱스, 뷰 등)를 생성하는 명령어
- 데이터베이스 생성
CREATE DATABASE db;
- 테이블 생성
CREATE TABLE 회원 ( USER_NO INT(11) NOT NULL AUTO_INCREMENT, NAME VARCHAR(50) NOT NULL, AGE TINYINT(4) DEFAULT '0', PRIMARY KEY (USER_NO) );
DDL (Data Definition Language) 조작 방법
① CREATE
- INDEX 생성
// 회원 테이블에 search_name 이름의 인덱스 생성 CREATE INDEX search_name ON 회원 (name);
- VIEW 생성
// 회원 테이블에서 이름과 나이만 가지고 VIEW 생성 CREATE VEIW y_user AS [쿼리] ;
② ALTER
- 속성 추가
// 회원 테이블에 ADDR 속성 추가 ALTER TABLE 회원 ADD ADDR VARCHAR(200);
- 속성 변경
// 회원 테이블에 AGE 속성 INT로 변경 ALTER TABLE 회원 MODIFY AGE INT(11);
- 속성 삭제
// 회원 테이블에 AGE 속성 삭제 ALTER TABLE 회원 DROP COLUMN AGE;
- INDEX 변경
// 회원명 INDEX를 성명으로 변경 ALTER INDEX 회원명 RENAME TO 성명; // INDEX의 속도가 저하되거나 깨졌을 경우 INDEX 재구성 ALTER INDEX 회원명 REBUILD; // INDEX 비활성화 ALTER INDEX 회원명 UNUSABLE;
③ DROP
- 데이터베이스 객체를 삭제하는 명령어
// 회원 테이블 삭제 DROP TABLE 회원;
④ TRUNCATE
- 테이블의 모든 데이터를 삭제하는 명령어로, 구조는 남기고 데이터만 비운다.[초기화]
// 회원 테이블 내용 초기화 TRUNCATE [TABLE] 회원;
제약 조건 적용
제약 조건 설명
PRIMARY KEY | - 하나의 테이블에서 유일하게 데이터를 식별할 수 있는 기본키를 정의- 기본으로 NOT NULL, UNIQUE 제약 포함 |
FOREIGN KEY | - 다른 테이블의 기본키를 참조하는 외래키를 정의 - 참조 무결성 위배 상황 발생 시 처리 방법으로 옵션 지정 가능 - 예) FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE CASCADE; |
제약 조건 적용
제약 조건 설명
UNIQUE | - 테이블 내에서 각 행의 해당 컬럼 값이 유일해야 함을 정의 - 예) USER_ID VARCHAR(10) UNIQUE NOT NULL |
NOT NULL | - 해당 컬럼이 NULL 값을 허용하지 않도록 정의- 예) USER_ID VARCHAR(10) NOT NULL |
CHECK | - 개발자가 정의하는 특정 조건을 만족해야 하는 컬럼에 대한 제약 설정 - 예) CONSTRAINT user_jumin CHECK(LENGTH(jumin)=13) |
DML (Data Manipulation Language) - 데이터 조작어
1. 데이터 조작어의 개념
- 데이터베이스에서 데이터 조회, 추가, 삭제, 수정을 위한 언어이다.
- 관계형 데이터베이스에서 데이터를 검색하거나 업데이트하는 등의 조작을 위해 사용된다.
2. 조작 방법
① INSERT
- 테이블에 데이터를 추가하는 명령어
- 컬럼 순서와 값의 순서가 일치해야 해당 컬럼에 데이터가 추가된다.
- 예:
// 회원 데이터 추가 INSERT INTO 회원 (NAME, AGE) VALUES ('이흥직', '42'); // 여러 행을 검색하여 추가 INSERT INTO 회원 SELECT NAME, AGE FROM 회원2;
② SELECT
- 하나 이상의 테이블에서 데이터를 조회하는 명령어
사용 키워드
- WHERE: 조건에 맞는 데이터를 지정
- GROUP BY: 특정 속성을 그룹으로 만들어서 집계 함수를 사용
- HAVING: GROUP BY 절에 정의된 조건
- ORDER BY: 반환되는 열의 순서를 지정
사용 예
- 모든 직원 정보 조회
SELECT * FROM 사원정보;
- 개발팀 직원 정보 조회 (사번, 이름, 직책만)
SELECT 사번, 이름, 직책 FROM 사원정보 WHERE 부서 = '개발팀';
- 부서별 인원수와 나이 합산
SELECT 부서, COUNT(*) AS 인원수, SUM(나이) AS 나이 FROM 사원정보 GROUP BY 부서;
728x90
'정보처리기사 > 데이터베이스 구축' 카테고리의 다른 글
정보처리기사 : 절차형 SQL 작성 (1) | 2024.12.13 |
---|---|
정보처리기사 : SQL 작성 (2) 완전정복!! (0) | 2024.12.09 |
정보처리기사 : 물리데이터모델 품질검토 완전정복!! (0) | 2024.12.07 |
정보처리기사: 물리 데이터 베이스 모델링 (1) | 2024.12.06 |
정보처리기사 : 물리속성 설계 완전정복!! (1) | 2024.12.06 |