데이터베이스

[DATABASE] Chapter03. SQL 기초

ima9ine4 2024. 4. 25. 00:32
728x90
오라클로 배우는 데이터베이스 개론과 실습 2판 (박우창, 남송휘, 이현룡 지음, 한빛 아카데미)를 읽고 공부하며 기록한 내용입니다. 모든 내용이 담겨 있지 않으며, 오류가 있을 수 있습니다. 

 

📍 1. SQL 소개

SQL이란 IBM이 개발한 관계형 데이터베이스 언어

  • 데이터 정의어(DDL, Definition) : 테이블이나 관계의 구조를 생성하는 데 사용, ex CREATE 생성, ALTER 변경, DROP 삭제
  • 데이터 조작어(DML, Manipulation) : 테이블에 데이터를 검색, 삽입, 수정, 삭제하는 데 사용, ex) SELECT 검색, INSERT 삽입, DELETE 삭제, UPDATE 수정
  • 데이터 제어어(DCL, Control) : 데이터의 사용 권한을 관리하는 데 사용, ex) GRANT, REVOKE

 

📍 2. 데이터 조작어 - 검색

  • SQL문은 관계 대수와 달리 기본적으로 중복을 제거하지 않기 때문에, 결과에 같은 값이 두 개 이상 나올 수 있다.
    중복을 제거하고 싶을 경우 SELECT 뒤에 DISTINCT 키워드를 붙여 사용한다.

  • 패턴 조건 검색시 와일드 문자 '%'는 아무 문자 열이나 대신하는 기호, '_'는 특정 위치에 한 문자만 대신할 때 사용
    ex) SELECT * FROM Book WHERE bookname LIKE '_구%';

  • 검색 결과의 정렬은 ORDER BY로 할 수 있다.
    내림차순 정렬을 하고 싶다면 열 이름 다음에 DESC키워드 붙이기 <-> ASC

  • SQL문에서 GROUP BY절을 사용하면 같은 속성값끼리 그룹을 만들 수 있다. GROUP BY로 투플을 그룹으로 묶은 후에 SELECT절에는 GROUP BY에서 사용한 속성과 집계함수만 올 수 있다!
  • HAVING절은 GROUP BY절의 결과 나타나는 그룹을 제한하는 역할을 한다. HAVING절은 반드시 GROUP BY절과 같이 작성해야하고, WHERE절보다 뒤에 나와야 하고, 검색 조건에는 집계 함수(SUM, AVG, MAX, MIN, COUNT)가 와야 한다.
    ex) ⋯ GROUP BY custid HAVING count(*) >= 2; 고객 별로 표시하되 2권 이상 구매한 고객만!

  • 외부 조인을 사용하고 싶다면?
    ex) 도서를 구매하지 않은 고객을 포함하여 ⋯을 구하시오
    ⋯ FROM Customer LEFT OUTER JOIN Orders ON Customer.custid = Orders.custid;
    ('(+)'기호를 조인조건의 오른쪽 혹은 왼쪽에 붙여서 외부 조인을 수행할 수도 있다)

  • 부속질의란 SELECT 문의 WHERE절에 또 다른 테이블 결과를 이용하기 위해 다시 SELECT문을 괄호로 묶는 것. 중첩질의라고도 한다.
    ex) 도서를 구매한 적이 있는 고객의 이름을 검색하시오
SELECT NAME
FROM Customer
WHERE custid IN (SELECT custid FROM Orders);

 

  • 상관 부속질의(correlated subquery)란 상위 부속질의의 투플을 이용하여 하위 부속질의를 계산하는 것이다. 
    ex) 출판사별로 출판사의 평균 도서 가격보다 비싼 도서를 구하시오
//교재 풀이
SELECT b1.bookname
FROM Book b1

WHERE b1.price > (SELECT AVG(b2.price) FROM Book b2 WHERE b2.publisher = b1.publisher)

//내 풀이, 이렇게 GROUP BY를 이용해서도 할 수 있는 듯!
SELECT b1.bookname
FROM Book b1
WHERE b1.price > (SELECT AVG(b2.price) FROM Book b2 WHERE b2.publisher = b1.publisher GROUP BY publisher);

(테이블의 뒤에 별칭이 붙은 것은 투플 변수라고 한다)

  • EXISTS는 상관 부속질의문 형식으로, 부속질의문의 어떤 행이 조건에 만족하면 참
    NOT EXISTS는 부속질의문의 모든 행이 조건에 만족하지 않을 때만 참

 

📍 3. 데이터 정의어

  • CREATE: 테이블을 구성하고 속성과 속성에 관한 제약을 정의하며, 기본키 및 외래키를 정의한다.
  • ALTER: 생성된 테이블의 속성과 속성에 관한 제약을 변경하며, 기본키 및 외래키를 변경한다.
  • DROP: 테이블의 구조와 데이터를 삭제한다.

 

📍 4. 데이터 조작어 - 삽입, 수정, 삭제

  • INSERT: 테이블에 새로운 투플을 삽입
INSERT INTO 테이블이름[(속성리스트)]
     VALUES (값리스트);
  • UPDATE
  • DELETE

 

ㅜㅜ 어렵다 ,.,,,, 마음같지않다 .........

728x90
반응형

'데이터베이스' 카테고리의 다른 글

[DATABASE] Chapter02. 관계 데이터 모델  (2) 2024.04.24