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
WHERE 조건
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 이름>
- 예시)