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 |
-
varchar(n)
: 최대 n글자 문자열 -
primary key
: 기본키 지정
외래키 지정
→ 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절