방통대 데이터베이스 수업 내용을 정리했습니다.


1. SQL의 개요 

 - SQL(structured query language)은 관계대수에 기초하여 DB데이터를 관리하기 위해 설계된 언어

 - 비절차적 언어, 필요한 데이터만 기술, 인간의 언어와 유사하고 간단 명료

 - 데이터 정의 언어(DDL) : 테이블 구조를 생성 수정, 삭제 (create, drop, alter)

 - 데이터 조작 언어(DML) : 데이터를 추가, 수정 삭제, 검색 기능 수행(insert, update, delete, select)



2. 데이터 정의

 - CREATE TABLE 교수

   ( 교번  CHAR(5) NOT NULL,

     이름  CHAR(30),

     학과명CHAR(30),

     연보  INT)


 - 테이블 수정

   ALTER TABLE 테이블명 ADD 컬럼이름 데이터타입

   ALTER TABLE 테이블명 DROP 컬럼이름


EX) ALTER TABLE 교수 ADD 나이 INT


    ALTER TABLE 교수 DROP 연봉


 - 테이블 제거

   DROP TABLE 교수        



3. 데이터 조작

 - INSERT문 : INSERT INTO 테이블 VALUES ();

   EX) INSERT INTO 교수 (교번, 이름, 학과, 연봉) VALUES('A','B','C',100);


 - UPDATE문 : 조건을 만족하는 레코드의 특정 컬럼값을 수정 UPDATE 테이블명 SET 값 WHERE 조건

   EX) UPDATE 교수 SET 연봉 = 연봉 * 1.01 WHERE 연봉 <= 20000


 - DELETE문 : 조건을 만족하는 레코드를 삭제 DELETE FROM 테이블 [WHERE 조건]

   EX) DELETE FROM 교수 WHERE 학과 = '경영학과';


 - SELECT문 : 조건을 만족하는 레코드를 조회 : SELECT 컬럼 FROM 테이블명 [WHERE 조건]

   EX) SELECT 학과명 FROM 교수


 - DISTINCT : 중복값 삭제

   EX) SELECT DISTINCT 학과명 FROM 교수


 실습1 : SELECT * FROM 교수 WHERE 연봉 >= 2000;



 - 집합 연산이 포함된 SELECT 질의(UNION, INTERSECT 등)

 - 그룹질의 : 특정 기준으로 레코드를 그룹화하고 각 레코드 그룹에 대해 집계함수를 적용하는 질의

   EX) 각 학과에서 개설한 과목 수를 출력하시오.

       SELECT 학과명, COUNT(과목명) AS 개설 강의 수 FROM 과목 GROUP BY 학과명


 - HAVING 절을 사용한 그룹 질의 : 레코드를 그룹화하고 집계함수를 적용한 결과에 조건을 기술

   EX) SELECT 질의 GROUP BY 컬럼 HAVING 조건

       SELECT 학과명, COUNT(과목명) AS 개설강의 수 FROM 과목 GROUP BY 학과명 HAVING COUNT(과목명) > 5;


 - 중첩질의 : SELECT 문 내부에 독립적으로 실행 가능한 또 다른 SELECT 문이 내포되어 있는 질의

   EX) SELECT 학과명, 평균연봉

FROM (SELECT 학과명, AVG(연봉) AS 평균_연봉 FROM 교수 GROUP BY 학과명)

WHERE 평균연봉 >= 15000;


   강의를 5개 이상 개설하는 학과와 그 과에 속한 교수들을 구하라

       SELECT 교수.학과명, 이름

FROM 교수

WHERE 교수, 학과명 IN 

 (SELECT 학과명 AS 개설_강의

FROM 과목

GROUP BY 학과명

 HAVING COUNT(과목명)>5);


 - 뷰 : 하나 이상의 원본 테이블로부터 유도되어 일반 테이블처럼 조작할 수 있는 가상테이블

물리적으로 저장되지 않음

EX) 컴퓨터과학과에서 개설한 과목만 출력하는 뷰를 생성

CREATE VIEW 컴퓨터과학과_과목 AS (SELECT 과목명 FROM 과목 WHERE 학과명 = '컴퓨터과학과')




연습문제

1. 다음중 영역에 다른 SQL 명령어는? 4번 DROP

2. 학생테이블에서 외모 컬럼을 삭제하시오 : ALTER TABLE 학생 DROP 외모

3. DELETE FROM ~ 

5. GROUP BY와 함께 사용되며, 그룹화된 데이터의 검색 조건에서 사용되는 구문은? HAVING

6. CREATE VIEW 명령을 바르게 설명한 것은? 3번 사용자 뷰 생성



정리하기

1.구조화된 질의 언어라는 의미의 SQL은 사람과 DBMS 간의 의사소통을 위한 언어이다. SQL에는 데이터 정의

 언어와 데이터 조작 언어 영역으로 이루어져 있으며, 이 외에도 DBMS를 관리하기 위한 다양한 기능을 

가지고 있다. 


2.데이터 정의 언어는 테이블의 스키마를 정의하는 데 이용된다. CREATE, ALTER,DROP 명령어를 사용하여 

테이블을 생성, 수정, 추가할 수 있다. 


3.데이터 조작 언어에는 INSERT, UPDATE, DELETE, SELECT 명령어가 포함된다. 각각의 명령어는 테이블에 

새로운 레코드를 삽입하거나, 테이블의 레코드를 수정, 삭제 및 검색하는 기능을 수행한다. 


4.|SELECT 문은 테이블에서 다양한 형태로 데이터를 검색하기 위해 사용된다. WHERE 절에 검색하고자 

하는 검색 조건을 기술하여 조건을 만족하는 레코드를 선택할 수 있다. 


5.두 개의 독립적인 SELECT 문을 대상으로 UNION, INTERSECT, EXCEPT 명령어를 사용하여 집합 연산자의 

합집합, 교집합, 차집합 연산을 수행할 수 있다. 이때 두 SELECT 문의 스키마는 반드시 동일해야 한다.

 

6.SELECT 문에는 특정 컬럼을 기준으로 레코드의 그룹을 정의하여 그룹별로 여러 그룹 함수(COUNT, SUM, 

AVG, MAX, MIN 등)를 적용한 결과를 생성할 수 있다. 


7.중첩 질의란 하나의 SELECT 문에 또 다른 SELECT 문이 내포되는 질의의 형태를 의미한다. 중첩 질의를 

이용하면 복잡한 검색을 직관적으로 해결할 수 있다. 


8.뷰는 가상 테이블이라고도 하며, 실제로 관련된 데이터가 존재하지 않고 단지 그 정보가 시스템 

카탈로그에 저장되어 사용된다. 뷰를 이용한 데이터의 검색, 삭제, 삽입, 수정 등의 작업 시 참조 

무결성이나 개체 무결성의 원칙에 위배되는 작업은 수행되지 않는다는 점에 유의해야 한다. 

+ Recent posts