01_데이터 조작어(DML: data manipulation language) - 삽입, 수정, 삭제
☾ 데이터 조작어
테이블에 데이터를 검색, 삽입, 수정, 삭제하는 데 사용
SELECT, INSERT, DELETE UPDATE문 등
INSERT
테이블에 새로운 튜플 삽입
INSERT INTO 테이블이름[(속성리스트)] VALUES (값리스트);
INSERT INTO Constructors(constructor, engine, country, races_entered, height, width)
VALUES('McLaren', 'Mercedes', 'British', 884, 95, 180);
속성의 이름을 생략할 때는 데이터의 입력 순서와 속성의 순서가 일치해야 한다.
INSERT INTO Constructors VALUES('McLaren', 'British', 'Mercedes', 884, 95, 180);
INSERT 문은 SELECT 문을 사용하여 작성할 수도 있다.
INSERT INTO Constructors(constructor, engine, country, races_entered)
SELECT constructor, engine, country, races_entered
FROM Imported_Constructors;
UPDATE
특정 속성값 수정
UPDATE 테이블이름
SET 속성이름1 = 값1[, 속성이름2 = 값2, ...]
[WHERE 검색조건];
UPDATE Customer
SET address='대한민국 서울'
WHERE custid=5;
Safe Updates 옵션 미 해제 시 아래와 같이 작성해야 한다.
SET SQL_SAFE_UPDATES=0;
DELETE
테이블에 있는 기존 튜플 삭제
<검색조건>에 해당되는 튜플을 삭제하고, <검색조건>이 없으면 모든 튜플을 삭제한다.
다른 테이블에서 외래키로 참조하고 있다면 명령이 실행되지 않는다.
DELETE FROM 테이블이름 [WHERE 검색조건];
DELETE FROM Book WHERE bookid = 11;
02_데이터 조작어(DML: data manipulation language) - 검색
SELECT
데이터를 검색하는 기본 문장으로, 검색한 결과를 테이블 형태로 출력
SELECT 문은 특별히 질의어(query)라고 함
SELECT 절에서 열 순서는 결과 테이블의 열 순서를 결정
SELECT [ALL | DISTINCT] 속성이름
FROM 테이블이름
[WHERE 검색조건]
[GROUP BY 속성이름]
[HAVING 검색조건]
[ORDER BY 속성이름 [ASC | DES]]
- FROM 절에 있는 테이블을 가져옴
- WHERE 절 조건에 의하여 튜플 선택
- SELECT 절에 있는 속성들을 결과로 출력
e.g., Customer 테이블에 있는 김연아라는 이름을 가진 사람의 phone을 가져오시오.
SELECT phone
FROM Customer
WHERE name='김연아';
- ‘*’(asterisk) : 모든 열을 나타냄
SELECT * FROM Customer;
- DISTINCT : 데이터의 중복을 제거하고 싶을 때 사용
SELECT DISTINCT name FROM Customer;
WHERE
- 비교
SELECT *
FROM Book
WHERE price < 20000;
- 범위 BETWEEN : 값의 범위 지정
SELECT *
FROM Book
WHERE price BETWEEN 10000 AND 20000;
- 집합 : 두개 이상의 값 비교
- IN: 집합의 원소인지 판단하는 연산자
- NOT IN: 집합의 원소가 아닌지 판단하는 연산자
-- 출판사가 '굿스포츠' 또는 '대한미디어'인 도서를 검색하시오.
SELECT *
FROM Book
WHERE publisher IN ('굿스포츠', '대한미디어');
-- 출판사가 '굿스포츠' 또는 '대한미디어'가 아닌 도서를 검색하시오.
SELECT *
FROM Book
WHERE publisher NOT IN ('굿스포츠', '대한미디어');
- 패턴 LIKE : 문자열 패턴 비교
-- '축구의 역사'를 출간한 출판사를 검색하시오.
SELECT bookname, publisher
FROM Book
WHERE bookname LIKE '축구의 역사';
와일드 문자를 사용하여 검색할 수 있다.
와일드 문자 | 의미 | 사용 예 |
% | 0개 이상의 문자열과 일치 | '%야구%' : 야구라는 단어를 포함하는 문자열 |
[ ] | 1개의 문자와 일치 | '[0-5]%' : 0-5 사이의 숫자로 시작하는 문자열 |
[^] | 1개의 문자와 불일치 | '[^0-5]%' : 0-5 사이의 숫자로 시작하지 않는 문자열 |
_ | 특정 위치에 있는 1개의 문자와 일치 | '_구%' : 두 번째 위치에 '구'가 들어가는 문자열 |
-- 도서 이름의 왼쪽 두 번째 위치에 '구'라는 문자열을 갖는 도서 이름을 검색하시오.
SELECT bookname
FROM Book
WHERE bookname LIKE '_구%';
- 복합조건 AND, OR, NOT
-- 축구에 관한 도서 중 가격이 20000원 이상인 도서 이름을 검색하시오.
SELECT bookname
FROM Book
WHERE bookname LIKE '%축구%' AND price >= 20000;
ORDER BY
실행 결과를 특정 순서대로 출력하고 싶을 때
기본은 오름차순으로 정렬
문자의 경우 숫자, 영문자, 한글 순으로 정렬된다.
-- 도서를 가격 순으로 검색하고, 가격이 같으면 이름 순으로 검색하시오.
SELECT *
FROM Book
ORDER BY price, bookname;
내림차순으로 정렬하려면 열 이름 다음에 DESC키워드 사용
-- 도서를 가격의 내림차순으로 검색하고, 가격이 같으면 이름을 오름차순으로 검색하시오.
SELECT *
FROM Book
ORDER BY price DESC, bookname ASC;
GROUP BY
속성값이 같은 값끼리 그룹을 만든다.
-- 고객별로 주문한 도서의 총수량과 총판매액을 구하시오.
SELECT custid, COUNT(*) AS 도서수량, SUM(saleprice) AS 총액
FROM Orders
GROUP BY custid;
HAVING
GROUP BY 절의 결과에서 나타나는 그룹 제한
반드시 GROUP BY 절과 함께 작성해야 한다.
WHERE 절보다 뒤에 나와야 한다.
검색조건에는 집계함수가 와야 한다.
-- 가격이 8000원 이상인 도서를 구매한 고객에 대하여 고객별 주문 도서의 총수량을 구하시오.
-- 단, 2권 이사아 구매한 고객에 대해서만 구하시오.
SELECT custid, COUNT(*) AS 도서수량
FROM Orders
WHERE saleprice <= 8000
GROUP BY custid
HAVING COUNT(*) >= 2;
☾ 집계 함수
테이블의 각 열에 대해 계산하는 함수
집계 함수 | 설명 |
SUM | 속성의 총 합 계산 |
AVG | 속성의 평균 계산 |
COUNT | 속성의 개수 계산 |
MAX | 속성의 최댓값 반환 |
MIN | 속성의 최솟값 반환 |
AS : 열 이름을 부여할 때 사용
-- 고객이 주문한 도서의 총판매액, 평균값, 최저가, 최고가를 구하시오.
SELECT SUM(saleprice) AS Total,
AVG(saleprice) AS Average,
MIN(saleprice) AS Minimum,
MAX(saleprice) AS Maximum
FROM Orders;
- COUNT : 해당 속성의 튜플(행) 개수를 센다.
-- 도서 판매 건수를 구하시오.
SELECT COUNT(*) FROM Orders;
'Lecture' 카테고리의 다른 글
[네트워크] Chap 2 - Protocol Architecture, TCP/IP, and Internet-based Applications (0) | 2024.07.26 |
---|---|
[네트워크] Chap 1 - Data Communications, Data Networking, and the Internet (0) | 2024.06.28 |
[데이터베이스] SQL 질의 - 조인(JOIN), 부속질의(Subquery), 집합 연산 (0) | 2024.05.30 |
[데이터베이스] 데이터 정의어(DDL) - CREATE, ALTER, DROP (0) | 2024.04.29 |
[데이터베이스] SQL 개요, 데이터베이스 명령어 - CREATE, SHOW, USE, DROP (0) | 2024.04.29 |