정보처리기사

[정보처리기사실기] 기본 SQL 문법

PEAZH 2024. 7. 15. 10:32
반응형

2과목. 데이터베이스 구축

📒 10. 기본 SQL 작성


1. SQL(Structured Query Language)

(1) SQL의 개념

  • 데이터베이스 시스템에서 데이터를 처리하기 위해 사용되는 구조적 데이터 질의 언어

(2) SQL 문법의 종류

  • a) Data Definition Language(DDL) - 데이터 정의어
    - 테이블이나 다양한 객체들을 정의하는 데 사용되는 명령어
    - 데이터가 들어갈 구조를 정의하는 것
    - CREATE, ALTER, DROP, RENAME, TRUNCATE
  • b) Data Manipulation Language(DML) - 데이터 조작어
    - 데이터를 조작(조회, 추가, 수정, 삭제)하는 데 사용되는 명령어
    - SELECT, INSERT, UPDATE, DELETE
  • c) Data Control Language(DCL) - 데이터 제어어
    - 데이터베이스 접근 및 사용 권한을 부여하고 회수하는 명령어
    - GRANT, REVOKE
  • d) Transaction Control Language(TCL) - 트랜젝션 제어어
    - 작업의 단위를 묶어서, 그 결과를 단위별로 제어하는 명령어
    - COMMIT, ROLLBACK, SAVEPOINT

 

2. DDL(Data Definition Language) - 데이터 정의어

(1) 데이터 정의어의 개념

  • 데이터가 저장되는 테이블이나 다양한 객체들을 정의하는 데 사용되는 언어
  • 데이터를 담는 '그릇'을 정의하는 언어로 데이터베이스의 구조를 만들거나 수정, 삭제하는 명령어 포함

(2) CREATE 

  • 데이터베이스 객체(테이블, 인덱스, 뷰 등)를 생성하는 명령어
-- db 데이터베이스 생성
CREATE DATABASE db;

-- 회원 테이블 생성
CREATE TABLE 회원 (
    USER_NO INT(11) NOT NULL AUTO_INCREMENT,
    NAME VARCHAR(50) NOT NULL,
    PRIMARY KEY (USER_NO)
);

-- INDEX 생성
CREATE INDEX search_name
ON 회원 (name);

-- VIEW 생성
CREATE VIEW v_user
AS
	SELECT name FROM 회원
;

(3) ALTER

  • 기존에 생성된 데이터베이스 객체의 구조를 변경하는 명령어
-- 속성 추가
ALTER TABLE 회원 ADD ADDR VARCHAR(200) null;

-- 속성 변경
ALTER TABLE 회원 MODIFY AGE INT(11);

-- 속성 삭제
ALTER TABLE 회원 DROP COLUMN AGE;

-- INDEX 변경⭐
-- 1. 회원명 INDEX를 성명으로 변경
ALTER INDEX 회원명 RENAME TO 성명

-- 2. INDEX의 속도가 저하되거나 깨졌을 경우 INDEX 재구성
ALTER INDEX 회원명 REBUILD

-- 3. INDEX 비활성화
ALTER INDEX 회원명 UNUSABLE

(4) DROP

  • 데이터베이스 객체를 삭제하는 명령어
-- 테이블 삭제
DROP TABLE 회원;

(5) TRUNCATE

  • 테이블의 모든 데이터를 삭제하는 명령어로, 구조는 남기고 데이터만 삭제
-- 내용 삭제
TRUNCATE[TABLE] 회원;

 

 

3. DML(Data Manipulation Language) - 데이터 조작어

(1) 데이터 조작어의 개념

  • 데이터 조회, 추가, 삭제, 수정을 위한 언어

(2) INSERT

  • 테이블에 데이터를 추가하는 명령어로, 컬럼 순서와 값의 순서가 일치해야 해당 컬럼에 데이터가 추가됨
-- 회원 데이터 추가
INSERT INTO 회원 (NAME, AGE) VALUES('peazh', 20);

-- 여러 행을 검색하여 추가
INSERT INTO 회원 SELECT NAME, AGE FROM 회원2

(3)  SELECT

  • 하나 이상의 테이블에서 데이터를 조회하는 명령어
  • 사용 키워드
    - WHERE : 조건에 맞는 데이터 지정
    - GROUP BY : 특정 속성을 그룹으로 만들어서 집계 함수 사용
    - HAVING : GROUP BY 절에 정의된 조건
    - ORDER BY : 반환되는 행의 순서 지정 (DESC:내림차순, ASC:오름차순)
-- 기본 구조
SELECT 속성 FROM 테이블명;

-- 개발팀 직원 정보 조회(사번, 이름, 직책만)
SELECT 사번, 이름, 직책 FROM 사원정보 
WHERE 부서='개발팀';

-- 개발팀이나 디자인팀 조회
SELECT * FROM 사원정보 
WHERE 부서='개발팀' OR 부서='디자인팀';

-- 개발팀이나 디자인팀이면서 이씨만 조회
SELECT * FROM 사원정보 
WHERE (부서='개발팀' OR 부서='디자인팀') AND 이름 LIKE '이%';

-- 개발팀이나 디자인팀이면서 이씨로 시작하고 이름이 두 글자만 조회
SELECT * FROM 사원정보 
WHERE (부서='개발팀' OR 부서='디자인팀') AND 이름 LIKE '이_';

-- 개발팀 중 입사일이 NULL이 아닌 직원 조회
SELECT * FROM 사원정보 
WHERE 부서='개발팀' AND 입사일 IS NOT NULL;

-- 입사일이 2010년 이후 직원 조회
SELECT * FROM 사원정보 
WHERE 입사일 >= '2010';

-- 입사일이 2010년부터 2020년까지 출력
SELECT * FROM 사원정보 
WHERE 입사일 >= '2010' AND 입사일 <= '2020';
SELECT * FROM 사원정보 
WHERE 입사일 BETWEEN 2010 AND 2020;

-- 사원 정보에서 부서만 중복 없이 출력
SELECT DISTINCT 부서 FROM 사원정보;

-- 부서별 인원수 출력
SELECT 부서, COUNT(*) AS 인원수 FROM 사원정보 GROUP BY 부서;

-- 부서별 인원수 중 2명 이상만 출력
SELECT 부서, COUNT(*) AS 인원수 FROM 사원정보 GROUP BY 부서 HAVING COUNT(*)>=2;

-- 모든 직원 정보 조회 나이별 내림차순
SELECT * FROM 사원정보 ORDER BY 나이 DESC;

(4)  UPDATE

  • 기존 데이터를 갱신하는 명령어로, WHERE 절을 생략했을 경우 모든 행 갱신
-- 기본 구조
UPDATE 테이블명 SET 바꿀 속성;

-- 개발팀의 부서명을 개발지원팀으로 변경
UPDATE 사원정보
SET 부서 = '개발지원팀'
WHERE 부서 = '개발팀';

(5)  DELETE

  • 테이블에서 데이터를 삭제하는 명령어로, WHERE 절을 생략했을 경우 모든 행이 삭제
-- 개발팀 직원만 삭제
DELETE FROM 사원정보
WHERE 부서 = '개발팀';

-- 디자인팀 배움 삭제
DELETE FROM 사원정보
WHERE 부서 = '디자인팀' AND 이름 = '배움';

 

 

4. DCL(Data Control Language) - 데이터 제어어

(1) 데이터 제어어 개념

  • 데이터베이스에 접근하거나 객체에 대한 권한을 주고 빼앗는 역할을 하는 언어

(2) GRANT

  • 데이터베이스 사용자에게 권한을 부여하는 명령
  • WITH GRANT OPTION : 지정된 권한을 다른 유저에게 부여할 수 있도록 함
-- 기본 구조
GRANT [권한] ON [객체명] TO [사용자 계정] [WITH GRANT OPTION];

-- PEAZH 사용자에게 사원정보 SELECT 권한 부여
GRANT SELECT ON 사원정보 TO PEAZH;

(3)  REVOKE

  • 데이터베이스 사용자로부터 권한을 회수하는 명령
  • CASCADE : 사용자가 부여한 모든 사용자 권한을 같이 회수
-- 기본 구조
REVOKE [권한] ON [객체명] FROM [사용자 계정] [CASCADE];

-- PEAZH 사용자에게 사원정보 SELECT 권한 회수
REVOKE SELECT ON 사원정보 FROM PEAZH CASCADE;

 

 

5. TCL( Transaction Control Language) - 트랜젝션 제어어

(1) 트랜잭션 제어어 개념

  • 트랜잭션을 제어하는 데 사용되는 명령어들로, 작업 단위를 안전하게 관리하기 위해 사용

(2) COMMIT

  • 트랜잭션이 정상적으로 처리된 경우, 그 결과를 데이터베이스에 반영하는 명령어
  • 한번 COMMIT을 수행하면, 이전 상태로 돌아갈 수 없음

(3)  ROLLBACK

  • 트랜잭션 처리 중 오류가 발생했거나 사용자가 명시적으로 취소할 경우, 변경사항을 되돌리고 데이터를 이전 상태로 복구하는 명령어

(4)  SAVEPOINT

  • 트랜잭션 중 특정 지점에 대해 저장점을 생성하는 명령어

 

 

참고자료

흥달쌤,  '흥!나게 합격 달성! 2024 정보처리기사 실기 클래스'
 

1억뷰 N잡

[1회 연장 포함] 흥!나게 합격 달성! 2024 정보처리기사 실기 클래스

www.njobler.net

반응형