DML
DML(Data Manipulation Language, 데이터 조작어)의 개념
- 데이터의 검색/삽입/삭제/변경에 사용되는 언어
- 사용자와 DBMS 간의 인터페이스를 제공함
- 종류
SELECT | - 튜플 검색 명령어 - 기본 구조 SELECT 속성명[ALL | DISTINCT] FROM 릴레이션명 WHERE 조건; [GROUP BY 속성명1, 속성명2, ...] [HAVING 조건] [ORDER BY 속성명 [ASC | DESC]; - ALL : 모든 튜플을 검색 (생략 가능) - DISTINCT : 중복된 튜플 생략 |
INSERT | - 튜플 삽입 명령어 - 기본 구조 INSERT INTO 테이블명(속성명1, 속성명2,...) VALUES(데이터1, 데이터2, ...); |
DELETE | - 튜플 삭제 명령어 - 기본 구조 DELETE FROM 테이블명 WHERE 조건; |
UPDATE | - 튜플의 내용 변경 명령어 - 기본 구조 UPDATE 테이블명 SET 속성명 = 데이터 WHERE 조건; |
SELECT
1. 다음 R1과 R2의 테이블에서 아래의 실행결과를 얻기 위한 SQL문은?
[R1] 테이블
학번 | 이름 | 학년 | 학과 | 주소 |
1000 | 홍길동 | 1 | 컴퓨터공학 | 서울 |
2000 | 김철수 | 1 | 전기공학 | 경기 |
3000 | 강남길 | 2 | 전기공학 | 경기 |
4000 | 오말자 | 2 | 컴퓨터공학 | 경기 |
5000 | 장미화 | 3 | 전기공학 | 서울 |
[R2] 테이블
학번 | 과목번호 | 과목이름 | 학점 | 점수 |
1000 | C100 | 컴퓨터 구조 | A | 91 |
2000 | C200 | 데이터베이스 | A+ | 99 |
3000 | C100 | 컴퓨터 구조 | B+ | 89 |
3000 | C200 | 데이터베이스 | B | 85 |
4000 | C200 | 데이터베이스 | A | 93 |
4000 | C300 | 운영체제 | B+ | 88 |
5000 | C300 | 운영체제 | B | 82 |
[실행 결과]
과목번호 | 과목이름 |
C100 | 컴퓨터 구조 |
C200 | 데이터베이스 |
SELECT 과목번호, 과목이름
FROM R1, R2
WHERE R1.학번=R2.학번 AND R1.학과='전자공학' AND R1.이름='강남길';
2. R1 테이블에서 성이 '홍'인 학생의 레코드를 검색하시오.
SELECT * FROM R1 WHERE 이름 LIKE '홍%';
[실행 결과]
학번 | 이름 | 학년 | 학과 | 주소 |
1000 | 홍길동 | 1 | 컴퓨터공학 | 서울 |
BETWEEN
- 구간값 조건식
- BETWEEN 170 AND 180은 170이상에서 180이하까지의 범위를 의미
- WHERE 점수 >=90 AND 점수 <=95로 표현 가능
1. R2 테이블에서 점수가 80점에서 85점까지인 학번, 점수 필드의 레코드를 검색하시오.
SELECT 학번, 점수
FROM R2
WHERE 점수 BETWEEN 80 AND 85;
[실행 결과]
학번 | 점수 |
3000 | 85 |
5000 | 82 |
2. R2 테이블에서 과목번호별 점수의 평균을 구하시오.
SELECT 과목번호, AVG(점수) AS 평균
FROM R2
GROUP BY 과목번호;
[실행 결과]
과목번호 | 평균 |
C100 | 90 |
C200 | 92.3 |
C300 | 85 |
그룹 함수, 하위 질의
그룹 함수의 종류(집계 함수)
종류 | 설명 |
COUNT | - 테이블의 행의 수를 계산할 때 - 표현식 : COUNT(*) |
SUM | - 하나 또는 여러 개의 열 합계를 구할 때 - 표현식 : SUM(열 이름) |
AVG | - 하나 또는 여러 개의 열 평균을 구할 때 - 표현식 : AVG(열 이름) |
MAX | - 해당 열의 최댓값을 구할 때 - 표현식 : MAX(열 이름) |
MIN | - 해당 열의 최솟값을 구할 때 - 표현식 : MIN(열 이름) |
HAVING절을 사용한 조회 검색
- GROUP BY절에 의해 선택된 그룹의 탐색 조건을 지정할 수 있으며 SUM, AVG, COUNT, MAX, MIN 등의 그룹 함수와 함께 사용할 수 있음
R2 테이블에서 점수가 90점 이상인 학생이 1명 이상인 과목이름별 과목이름을 검색하시오.
SELECT 과목이름, COUNT(*) AS 학생수
FROM R2
WHERE 점수>=90
GROUP BY 과목이름
HAVING COUNT(*)>=1;
[실행 결과]
과목이름 | 학생수 |
컴퓨터구조 | 1 |
데이터베이스 | 2 |
ORDER BY 절을 이용한 정렬 검색
- 특정 항목을 기준으로 검색 테이블의 행들을 오름차순(ASC) 또는 내림차순(DESC)으로 정렬할 때 사용
- 생략하면 ASC가 디폴트 값이 되어 오름차순으로 정렬됨
R2 테이블에서 점수를 기준으로 내림차순 정렬하시오.
SELECT * FROM R2 ORDER BY 점수 DESC
하위 질의(Sub Query, 서브쿼리)
- 질의를 1차 수행한 다음, 반환값을 다른 릴레이션의 WHERE절에 포함시켜 사용하는 것
다음 SQL문을 분석하시오.
SELECT 이름 FROM R1 WHERE 학번 IN
(SELECT 학번 FROM R2 WHERE 과목번호='C100');
(SELECT 학번 FROM R2 WHERE 과목번호='C100';
R2 테이블에서 과목번호가 'C100'인 튜플의 학번 필드를 조회함
조회된 값을 상위 질의에 대치함(예를 들어 조회된 값이 1000, 3000, 4000이라고 가정)
SELECT 이름 FROM R1 WHERE 학번 IN (1000, 3000, 4000);
INSERT, UPDATE, DELETE
INSERT문 - 삽입문
INSERT INTO 테이블(열_이름1, 열_이름2, ...) VALUES(열_값1, 열_값2,...);
R2 테이블에 (학번 : 6000, 과목번호 : C100)인 레코드를 삽입하시오.
INSERT INTO R2(학번, 과목번호) VALUES(6000, C100);
UPDATE문 - 갱신문
UPDATE 테이블 SET 열_이름 = 산술식{열_이름 = 산술식} WHERE 조건;
R1 테이블의 홍길동의 학년을 2학년으로 갱신하시오.
UPDATE R1 SET 학년 = 2 WHERE = '홍길동';
DELETE문 - 삭제문
DELETE FROM 테이블이름 WHERE 조건;
R1 테이블에서 장미화 레코드를 삭제하시오.
DELETE FROM R1 WHERE 이름 = '장미화';
NoSQL
- "Not only SQL"로, SQL만을 사용하지 않는 데이터베이스 관리 시스템(DBMS)을 지칭하면, 다양한 유형의 데이터베이스를 사용하는 것을 의미함
- 데이터를 저장하는데 SQL 외에도 다른 방법도 있다는 개념하에 비정형 데이터의 저장을 위해 유연한 데이터 모델을 지원함
- 전통적인 관계형 데이터베이스 관리 시스템과는 다른 비관계형(Non-Relational) DBMS임
728x90
반응형
'정보처리기사 > 데이터베이스 구축' 카테고리의 다른 글
보안, 분산 데이터베이스 (0) | 2023.07.19 |
---|---|
트랜잭션, 병행 제어 (0) | 2023.07.19 |
SQL, DDL, DCL, View (0) | 2023.07.19 |
관계 대수와 연산자 (0) | 2023.07.18 |
반정규화 (0) | 2023.07.18 |