SQL의 데이터 조작 기능(1)
데이터 검색 SELECT데이터 삽입 INSERT
데이터 수정 UPDATE
데이터 삭제 DELETE
INSERT INTO customer VALUES ('apple', '정소화', 20, 'gold', '학생', 1000);
INSERT INTO customer VALUES ('banana', '김선우', 25, 'vip', '간호사', 2500);
INSERT INTO customer VALUES ('carrot', '고명석', 28, 'gold', '교사', 4500);
INSERT INTO customer VALUES ('orange', '김용욱', 22, 'silver', '학생', 0);
INSERT INTO customer VALUES ('melon', '성원용', 35, 'gold', '회사원', 5000);
INSERT INTO customer VALUES ('pear', '채광주', 31, 'silver', '회사원', 500);
INSERT INTO customer VALUES ('peach', '오형준', NULL, 'silver', '의사', 300);
INSERT INTO product VALUES ('p01', '그냥만두', 5000, 4500, '대한식품');
INSERT INTO product VALUES ('p02', '매운쫄면', 2500, 5500, '민국푸드');
INSERT INTO product VALUES ('p03', '쿵떡파이', 3600, 2600, '한빛제과');
INSERT INTO product VALUES ('p04', '맛난초콜렛', 1250, 2500, '한빛제과');
INSERT INTO product VALUES ('p05', '얼큰라면', 2200, 1200, '대한식품');
INSERT INTO product VALUES ('p06', '통통우동', 1000, 1550, '민국푸드');
INSERT INTO product VALUES ('p07', '달콤비스켓', 1650, 1500, '한빛제과');
INSERT INTO order_info VALUES ('o01', 'apple', 'p03', 10, '서울시 마포구', '13/01/01');
INSERT INTO order_info VALUES ('o02', 'melon', 'p01', 5, '인천시 계양구', '13/01/10');
INSERT INTO order_info VALUES ('o03', 'banana', 'p06', 45, '경기도 부천시', '13/01/11');
INSERT INTO order_info VALUES ('o04', 'carrot', 'p02', 8, '부산시 금정구', '13/02/01');
INSERT INTO order_info VALUES ('o05', 'melon', 'p06', 36, '경기도 용인시', '13/02/20');
INSERT INTO order_info VALUES ('o06', 'banana', 'p01', 19, '충청북도 보은군', '13/03/02');
INSERT INTO order_info VALUES ('o07', 'apple', 'p03', 22, '서울시 영등포구', '13/03/15');
INSERT INTO order_info VALUES ('o08', 'pear', 'p02', 50, '강원도 춘천시', '13/04/10');
INSERT INTO order_info VALUES ('o09', 'banana', 'p04', 15, '전라남도 목포시', '13/04/11');
INSERT INTO order_info VALUES ('o10', 'carrot', 'p03', 20, '경기도 안양시', '13/05/22');
1. 데이터의 검색
1. 기본 검색
SELECT [ALL | DISTINCT ] 속성_리스트 FROM 테이블_리스트;SELECT 키워드와 함께 검색하고 싶은 속성의 이름을 콤마(,) 로 구분하여 차례로 나열한다. 그리고 FROM 키워드와 함께 검색하고 싶은 속성이 있는 테이블의 이름을 콤마(,) 로 구분하여 차례로 나열한다. SELECT 문은 검색 결과를 테이블 형태로 반환한다. 즉, 테이블을 대상으로 하는 SELECT 문의 수행 결과도 테이블이다.
고객 테이블에서 고객아이디, 고객이름, 등급 속성을 검색해본다.
SELECT id, name, grade FROM customer;
고객 테이블에 존재하는 모든 속성을 검색해본다.
SELECT id, name, age, grade, job, saved_money FROM customer;
고객 테이블에 존재하는 모든 속성을 검색해보자.
SELECT * FROM customer;
결과는 컬럼을 모두 나열한 앞의 예와 동일하다.
제품 테이블에서 제조업체를 검색해보자.
SELECT manufacturer from product;
위 결과와 같이 SELECT 문의 결과 테이블은 관계 데이터 모델의 일반 릴레이션과 큰 차이가 있다. 관계 데이터 모델의 일반 릴레이션은 투플의 집합 개념으로 이해할 수 있으며 투플의 유일성을 만족해야 하기 때문에 릴레이션 하나에서 동일한 투플이 중복되면 안되다. 그러나 SELECT 문의 수행 결과로 반환되는 결과 테이블에서는 동일한 투플이 중복될 수 있다.
결과 테이블이 중복을 허용하도록 ALL 키워드를 명시적으로 사용할 수 있다.
SELECT ALL manufacturer from product;
결과는 위의 예와 동일하다.
결과 테이블에서 투플의 중복을 제거하고 한 번씩만 출력되도록 하려면 DISTINCT 키워드를 사용한다.
제품 테이블에서 제조업체 속성을 중복 없이 검색해보자.
SELECT DISTINCT manufacturer FROM product;
결과 테이블에서 출력되는 속성의 이름을 다른 이름으로 바꾸어 출력할 수도 있다. AS 키워드를 변경할 이름과 함께 지정하면 된다. 원래 테이블의 속성 이름이 실제로 바뀌는 것은 아니다. 지정하는 이름에 공백이 포함되어 있으면 작은 따옴표나 큰 따옴표로 묶어주어야 한다. 그리고 AS 키워는 생략할 수 있다.
제품 테이블에서 제품명과 단가를 검색하되, 단가를 가격이라는 새 이름으로 출력하자.
SELECT name, price AS 가격 FROM product;
2. 산술식을 이용한 검색
SELECT 키워드와 함께 산술식을 제시할 수 있다. 산술식은 속성의 이름과 +, -, *, / 등의 산술 연산자와 상수로 구성한다.
제품 테이블에서 제품명과 단가 속성을 검색하되, 단가에 500원을 더해 조정단가라는 새 이름으로 출력해보자.
SELECT name, price + 500 AS 조정단가 FROM product;
3. 조건 검색
조건을 만족하는 데이터만 검색하는 SELECT 문의 기본 형식은 다음과 같다.
SELECT [ ALL | DISTINCT ] 속성_리스트 FROM 테이블_리스트 [ WHERE 조건 ];
WHERE 키워드와 함께 비교 연산자(=, <>, <, >, <=, >=)와 논리 연산자(AND, OR, NOT)를 이용하여 검색 조건을 제시한다.
비교 연산자를 이용해 문자나 날짜 값을 비교할 수 있다.
'A' < 'C' '2013-12-01' < '2013-12-02'
조건에서 숫자값은 그대로 작성해도 되지만 문자나 날짜 값은 속성의 이름과 구별할 수 있도록 작은 따옴표로 묶어야 한다.
논리 연산자는 조건을 여러 개 결합하거나 조건을 만족하지 않는 데이터를 검색하고자 할 때 이용한다.
제품 테이블에서 한빛제과가 제조한 제품의 제품명, 재고량, 단가를 검색하자.
SELECT name, stock, price FROM product WHERE manufacturer = '한빛제과';
주문 테이블에서 apple 고객이 15개 이상 주문한 주문제품, 수량, 주문일자를 검색해보자.
SELECT product, quantity, order_date FROM order_info WHERE customer = 'apple' AND quantity >= 15;
주문 테이블에서 apple 고객이 주문했거나 15개 이상 주문된 제품의 주문제품, 수량, 주문일자, 주문고객을 검색해보자.
SELECT product, quantity, order_date, customer FROM order_info WHERE customer = 'apple' OR quantity >= 15;
제품 테이블에서 단가가 2000원 이상이면서 3000원 이하인 제품의 제품명, 단가, 제조업체를 검색해보자.
SELECT name, price, manufacturer FROM product WHERE price >= 2000 AND price <= 3000;
4. LIKE를 이용한 검색
검색 조건을 정확히 몰라 부분적으로 일치하는 데이터를 검색하고 싶다면 LIKE 키워드를 사용한다. 검색 조건을 정확히 알면 = 연산자로 조건을 표현한다. 단 LIKE 키워드는 문자열을 이요하는 조건에만 사용할 수 있다.
LIKE 키워드와 함께 사용할 수 있는 기호
- % : 0개 이상의 문자(문자의 내용과 개수는 상관없음)
- _ : 한 개의 문자(문자의 내용을 상관 없음)
LIKE 키워드의 사용 예
- LIKE '데이터%' : 데이터로 시작하는 문자열(데이터로 시작하기만 하면 길이는 상관 없음)
- LIKE '%데이터' : 데이터로 끝나는 문자열(데이터로 끝나기만 하면 길이는 상관 없음)
- LIKE '%데이터%' : 데이터가 포함된 문자열
- LIKE '데이터___' : 데이터로 시작하는 6자 길이의 문자열
- LIKE '__한%' : 세 번째 글자가 '한'인 문자열
고객 테이블에서 성이 김씨인 고객의 고객이름, 나이, 등급, 적립금을 검색해보자.
SELECT name, age, grade, saved_money FROM customer WHERE name LIKE '김%' ;
고객 테이블에서 고객아이디가 5자인 고객의 고객아이디, 고객이름, 등급을 검색해보자.
SELECT id, name, grade FROM customer WHERE id LIKE '_____';
[출처] 한빛아카데미 데이터베이스 개론 김현희지음
댓글 없음:
댓글 쓰기