DB3 - SQL 기초

박정빈·2024년 4월 24일

DB

목록 보기
3/9

SQL 에 대해서 공부하기 위해서 Oracle Database 21c XE 를 설치하였다!

1. SQL

SQL 기능에따른분류

  • 데이터정의어(DDL)
    • 테이블이나관계의구조를생성하는데사용
    • CREATE, ALTER, DROP 문 등이 있음
  • 데이터조작어(DML)
    • 테이블에데이터를검색, 삽입, 수정, 삭제하는 데사용
    • SELECT, INSERT, DELETE, UPDATE 문 등이 있음
    • SELECT 문은 특별히 질의어(query)라고 함
  • 데이터제어어(DCL)
    • 데이터의사용권한을관리하는데사용
    • GRANT, REVOKE 문 등이 있음

2. 데이터조작어(DML)

SELECT / FROM

  • SELECT <column> FROM <table> 형식으로 검색가능

  • 예시)

    • SELECT bookname, price FROM Book;
    • SELECT FROM Book; ( 은 전체 선택)
    • SELECT DISTINCT publisher FROM Book; (DISTINCT 로 중복 내용 제거)

WHERE 조건

  • SELECT <column> FROM <table> WHERE <조건> 형식으로 조건부 검색 가능

  • 예시)

    • SELECT * FROM Book WHERE price < 20000; (price 값이 20000 미만인 것만 검색)
    • SELECT bookname, publisher FROM Book WHERE bookname LIKE '축구역사'; (bookname이 축구역사인 것만 검색)
    • SELECT bookname, publisher FROM Book WHERE bookname LIKE '%축구%';(bookname에 축구가 포함된 것 검색) (와일드 문자 사용)
  • 조건들을 AND 와 OR 로 연결해서 조건을 복합적으로 사용가능

  • 예시)

    • SELECT * FROM Book WHERE bookname LIKE '%축구%' AND price >= 20000;

ORDER BY

  • 순서대로 정렬하여 검색할때 사용 (기본적으로 오름차순 정렬)
  • 예시)
    • SELECT * FROM Book ORDER BY price, bookname; (가격순 정렬, 가격이 같으면 이름순 정렬)
    • SELECT * FROM Book ORDER BY price DESC, bookname ASC; (가격순 내림차순, 가격이 같으면 이름순 오름차순 정렬)

집계함수 SUM,AVG,COUNT,MAX,MIN

  • SELECT <집계함수>(<column>) FROM <table> 형식으로 적용가능
  • 예시)


GROUP BY

  • 집계함수를 다룰때 같은 속성을 가진 것 끼리 분류하고 싶을 때 사용
  • 예시)

HAVING

  • GROUP BY에 조건 부여 가능

JOIN 조인

  • SELCT - FROM 절로 JOIN 가능
  • 예시)
    • SELECT * FROM Customer,Orders; (Customer 와 Orders 의 합체)
    • SELECT * FROM Customer,Orders WHERE Customer.custid = Orders.custid ORDER BY Customer.custid;
    • SELECT name, SUM(saleprice) FROM Customer, Orders WHERE Customer.custid = Orders.custid GROUP BY Customer.name ORDER BY Customer.name;

외부 조인

  • SELECT Customer.name, Orders.saleprice FROM Customer LEFT OUTER JOIN Orders ON Customer.custid = Orders.custid;

부속질의(Subquery)



집합 연산(Set Operation)

  • 합집합 UNION
  • 차집합 EXCEPT (SQL표준은 EXCEPT이지만, Oracle에서는 MINUS로 사용)
  • 교집합 INTERSECT
  • <SQL문> <집합연산> <SQL문> 형식
  • 예시) SELECT name FROM UNION SELECT name FROM Customer

EXISTS / NOT EXISTS

  • 조건에 맞는 튜플이 존재하면 결과에 포함시킴, 반대는 NOT EXISTS
  • 예시)
    • SELECT name, address FROM Customer WHERE
      EXISTS (SELECT *
      FROM Orders od
      WHERE cs.custid =od.custid);

INSERT

  • 테이블에 새로운 투플을 삽입하는 명령
  • INSERT INTO <table 이름(속성)> VALUES(값)
  • 예시)
    • INSERT INTO Book(bookid,bookname,author,price) VALUES(11,'피겨 교본','센게이지',90000)

대량삽입(bulk insert)

  • 테이블을 다른 테이블에 넣어서 여러 투플을 추가할 수 있다.
  • INSERT INTO Book(bookid,bookname,author,price) SELECT bookid,bookname,author,price FROM imported_book;

UPDATE

  • 특정 속성 값을 수정하는 명령
  • UPDATE <table 이름> SET <속성이름1=값1,속성이름2=값2...>
  • 예시)
    • UPDATE Customer SET address='부산' WHERE custid=5;

DELETE

  • 기존 투플을 삭제하는 명령
  • DELETE FROM <table 이름>
  • 예시)
    • DELETE FROM Customer WHERE custid=5;
    • DELETE FROM Customer; (모든 customer 삭제)

3. 데이터정의어(DLL)

CREATE

  • 테이블을 구성하고, 속성과 속성에 대한 제약을 정의하며, 키본키와 외래키를 정의하는 명령

  • 형식
    ON UPDATE와 ON DELETE는 외래키 속성의 수정과 투플 삭제시 동작을 나타냄.

  • 예시)

ALTER

  • 생성된 테이블의 속성과 속성에 관한 제약을 변경하며, 기본키 및 외래키를 변경
  • ADD - 속성, 제약 추가
  • DROP - 속성, 제약 제거
  • MODIFY - 기본값 설정 , 제거
  • 예시)

DROP

  • 테이블을 삭제하는 명령, 외래키로 지정되어있다면 삭제가 거절될 수도 있다.
  • 데이터만 삭제하는 명령은 DELETE 문
  • DROP TABLE <table 이름>
  • 예시)
    • DROP TABLE NewBook;

0개의 댓글