[데이터처리와활용] 4강. 관계형 데이터베이스 SQL 완전 기초 정복

SQL이란?

SQL(Structured Query Language)
관계형 데이터베이스에서 데이터를 조회하고 조작하고 정의할 때 사용하는 표준 질의어입니다.
ANSI/ISO 국제 표준으로, 대부분의 데이터베이스에서 이 문법을 사용합니다.

SQL 문장 종류

종류 설명
DDL 데이터 정의 테이블 생성, 삭제, 뷰, 트리거
DML 데이터 조작 데이터 조회, 삽입, 수정, 삭제

DDL (Data Definition Language)

데이터베이스의 테이블 구조를 정의하는 명령어입니다.

테이블 생성문

1
2
3
4
5
create table department (
dname varchar(10),
dean varchar(10),
primary key (dname)
);
cs
  • create table : 테이블 생성
  • varchar(n) : 최대 n글자 문자열

  • primary key : 기본키 지정

 

외래키 지정

1
2
3
4
5
6
7
create table student (
sno numeric,
sname varchar(20not null,
dname varchar(10),
primary key (sno),
foreign key (dname) references department
);
cs
foreign key (dname) references department

→ student 테이블의 dname이 department 테이블의 dname을 참조

View 정의문

뷰(View) : 복잡한 질의 결과를 테이블처럼 보여주는 가상 테이블

1
2
3
4
create view take_course_number(sno, num_of_cno) as
select sno, count(cno) as num_of_cno
from take_course
group by sno;
cs

여기서 as는 “이 view의 정의는 이 select문이다” 라고 연결하는 역할을 합니다.

Trigger 정의문

트리거(Trigger) : 특정 이벤트 발생 시 자동 실행되는 명령어 집합

1
2
3
create trigger stud_del_trigger
before delete on student1
execute delete student2 where sno = :obj.sno;
cs

DML (Data Manipulation Language)

데이터 삽입 (INSERT)

1
2
insert into professor (pno, pname, salary, dname)
values (‘0001’‘송연지’‘7000’‘컴공학과’);
cs

데이터 갱신 (UPDATE)

1
2
3
update professor
set salary = salary * 1.1
where salary < 5000;
cs

데이터 조회 (SELECT)

1
2
3
select pname, salary
from professor
order by salary desc;
cs

조건 검색

1
2
3
4
select *
from student
where dname <> ‘컴공학과’
order by sno, dname, eyear;
cs

문자열 포함 출력

1
2
3
select ‘신입생’ || sname || ‘ 의 소속학과는 ‘ || dname || ‘ 입니다’
from student
where eyear=2020;
cs

 

집계함수(Aggregate Functions)

  • avg() : 평균

  • count() : 개수

  • sum() : 총합

  • max() : 최대

  • min() : 최소

예)

1
2
3
select avg(salary) as avg_salary
from professor
where dname= ‘컴공학과’;
cs

Group by & Having 절

  • group by : 집계 함수 기준 그룹화

  • having : 그룹화된 결과 조건

예)

1
2
3
4
select dname, avg(salary) as avg_salary
from professor
group by dname
having avg_salary > 6000;
cs

중첩부질의(Subquery)

다른 SELECT문 안에 들어가는 SELECT문

예)

1
2
3
select pno, pname
from professor
where pno not in (select pno from teach_course);
cs

집합연산자 (UNION, INTERSECT, DIFFERENCE)

UNION : 두 질의의 결과 합집합
INTERSECT : 교집합
DIFFERENCE : 차집합

예)

1
2
3
select pname from professor where eyear=2019
union
select pname from professor where eyear=2020;
cs

중요 내용 정리

구분 설명
DDL 테이블, 뷰, 트리거 정의
DML 데이터 삽입, 조회, 수정, 삭제
View 가상 테이블
Trigger 자동 실행 SQL 블록
집계함수 avg, count, sum, max, min
group by / having 그룹화 및 조건
중첩부질의 select문 안의 select
집합연산자 union, intersect, difference

객관식 3문제 + 정답과 해설

Q1. SQL에서 데이터를 조회, 삽입, 수정, 삭제하는 명령어 집합은?

① DDL
② DML
③ TCL
④ DCL

정답: ②
해설: DML이 데이터 조작 명령어

Q2. 다음 중 집계 함수가 아닌 것은?

① avg
② count
③ max
④ varchar

정답: ④
해설: varchar는 문자열 자료형

Q3. 교수 테이블에서 연봉이 6000 이상인 학과만 조회하려면 사용하는 절은?

① group by
② having
③ order by
④ where

정답: ②
해설: 그룹화된 결과에 조건 거는 건 having절

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다