SQL조작문은 SELECT 문, INSERT문, UPDATE문, DELETE문 4가지가 있다.
SELECT 검색문
SELECT문은 테이블에서 자료를 검색할 때 사용되는 명령문이며, 산술식 계산도 수행한다.
예시)
SELECT 속성 FROM 테이블
[WHERE 조건]
[GROUP BY 속성 [HAVING 그룹조건]]
[ORDER BY 속성[ASC | DESC]];
1. SELECT 절
- 검색하고자 하는 속성이름, 계산식
- DISTINCT : 검색 결과에 중복되는 값이 있으면 한번만 표현하도록 하는 옵션
2. FROM 절
3. WHERE 절
- 관계연산자와 논리연산자 등을 수행 할 수 있음
4. GROUP BY 절
- 속성값을 그룹으로 분류하고자 할때
- HAVING : 그룹바이에 의해 분류한 후 조건 제시시
5. ORDER BY 절
- 속성값을 정렬 하고자 할때
- ASC : 오름차순
- DESC : 내림차순
- 생략시 오름차순 정렬
*SQL연산자의 종류
종류 |
연산자 |
설명 |
관계 연산자 |
=, <, <=, >, >= |
값의 크기를 비교하여 검색 |
범위 연산자 |
BETWEEN |
검사값이 두 값의 사이인지 검색 |
리스트 연산자 |
IN |
검사값이 리스트에 속하는지 검사 |
패턴 매칭 연산자 |
LIKE |
문자열의 일부가 같은지 검색 |
논리연산자 |
AND, OR, NOT |
AND, OR, NOT 을 사용하여 탐색 조건을 결합하여 검색 |
Q) [학생]테이블에서 수학을 수강하는 학생의 학번과 성명을 검색.
A) SELECT 학번, 성명 FROM 학생 WHERE 수강과목 = '수학';
Q) [학생] 테이블에서 2학년 학생의 모든 속성을 검색.
A) SELECT * FROM 학생 WHERE 학년 = 2;
Q) [학생] 테이블에서 학년이 2학년이고, 수강과목이 '수학'인 학생의 성명과 연락처 검색.
A) SELECT 성명 연락처 FROM 학생 WHERE 학년 = 2 AND 수강과목 = '수학'
Q) [학생] 테이블에서 학생의 점수가 70점 이상 90점 이하인 학생의 성명 검색.
A) SELECT 성명 FROM 학생 WHERE 점수 BETWEEN 70 AND 90
Q) [학생] 테이블에서 2학년 이상인 학생의 수강과목을 검색하고, 같은 수강과목 값은 한번만 검색.
A) SELECT DISTINCT 수강과목 FROM 학생 WHERE 학년 >= 2;
*집계함수 검색문
함수 |
의미 |
SUM(속성) |
속성의 합계 |
AVG(속성) |
속성의 평균 |
MAX(속성) |
속성의 최대값 |
MIN(속성) |
속성의 최소값 |
COUNT(속성) |
속성의 튜플 수 |
Q) [학생] 테이블에서 1학년 학생의 점수 합계
A) SELECT SUM(점수) FROM 학생 WHERE 학년=1;
SELECT SUM(점수) AS 1학년합계 FROM 학생 WHERE 학년=1; //속성이름을 표에 표현하고싶을때 RENAME
Q) [학생] 테이블에서 1학년과 2학년 학생의 학번과 성명을 검색.
A) SELECT 학번, 성명 FROM 학생 WHERE 학년 IN(3,4) // 원소함수 IN은 논리연산자 OR과 같은의미
Q) [학생] 테이블에서 점수가 80점 이상인 학생을 학번 오름차순으로 성명 검색.
SELECT 성명 FROM 학생 WHERE 점수 >= 80 ORDER BY 학번 ASC; //ASC는 기본값으로 생략해도됨
Q) [학생] 테이블에서 점수가 80점 이상인 20명 이상인 학년을 검색.
A) SELECT 학년 FROM 학생 WHERE 점수 = 80 GROUP BY 학년 HAVING COUNT(*) =2;
* 부속 질의문 / 중첩질의문
- 부속질의문은 질의문 안에 또 하나의 하위 질의문을 갖고 있는 형태고 여러테이블을 이용해야하는 경우 사용
- 처음 나오는 질의문을 메인질의문(외부), 두번째 질의문을 부속(내부, 하위) 질의문
- 메인 질의문과 부속질의문은 =, IN, NOT IN, EXISTS, NOT EXISTS 로 연결
* 부분매치질의문
: 부분 매치 질의문은 자료의 일부를 가지고 와서 비교하여 검색하는 질의문을 말한다.
Q. [학생] 테이블에서 연락처의 번호가 '8882'로 끝나는 학생의 성명 검색.
SELECT 성명 FROM 학생 WHERE 연락처 LIKE '%7588"; //여러자리를 대신하는경우 %, 한자리는 _ ,같은 경우는 = 사용
*NULL 값과 비교하는 질의문
: NULL값과 비교하는 경우 WHERE 절에 = 대신에 IS를 사용하며 >,<대신에는 IS NOT을 사용
* JOIN 질의문
: 두 테이블을 JOIN 연산 한 뒤 자료를 검색하는 형태의 질의문, 테이블1 JOIN 테이블2 ON 조인조건
Q. [학생]테이블과 [학과인원] 테이블에서 학과명을 JOIN 하여 이름,학과,학생수를 검색.
A. SELECT 이름,학과,학생수 FROM 학생 JOIN 학과인원 ON(학생.학과=학과인원.학과);
SELECT 이름,학과,학생수 FROM 학생 JOIN 학과인원 USING 학과;
INSERT 삽입문
INSERT 문은 기존의 테이블에 새로운 튜플을 삽입하는 경우 사용
INSERT INTO 테이블이름 [(속성...)] VALUES (자료..);
Q. [학생] 테이블에 학번 112233, 성명 '이종인', 학년 3 수강과목 '수학' 인 학생을 삽입.
A. INSERT INTO 학생(학번, 성명, 학년, 수강과목)
VALUES (112233, '이종인', 3, '수학');
UPDATE 갱신문
UPDATE문은 테이블의 튜플중에서 값을 변경 하는 경우 사용
Q. [학생] 테이블에서 '이종인' 학생의 점수를 92점으로 수정.
A. UPDATE 학생 SET 점수 = 92 WHERE 성명='이종인';
DELETE 삭제문
DELETE문은 테이블의 튜플을 삭제할 경우 사용
WHERE 절의 조건에 맞는 튜플만 사용하며, WHERE절이 없으면 모든 튜플이 삭제됨 (DROP과 같은 기능)
'STUDY > 자격증' 카테고리의 다른 글
웹디자인 기능사 실기 벼락치기2. 사진 슬라이드 (0) | 2019.03.06 |
---|---|
웹디자인 기능사 실기 벼락치기 요점정리 (2) | 2019.03.05 |
DB SQL 조작어 DCL, 뷰 (정보처리기사 / 산업기사 실기) (0) | 2018.10.06 |
DB SQL 정의어 DDL (정보처리 기사 / 산업기사 실기) (0) | 2018.09.30 |
DB 키(Key), 관계 데이터 연산 (정보처리기사 / 산업기사 실기) (0) | 2018.09.27 |
DB 개체-관계 모델 E-R Model, 관계 데이터 모델 (정보처리기사 / 산업기사 실기) (0) | 2018.09.26 |