SQL(5)

Jinmin Kim·2020년 8월 8일
0

sqldeveloper 코드 자동정리 ctrl + f7

DDL(데이터 정의어)

1.CREATE

CREATE TABLE NewBook(
bookid NUMBER PRIMARY KEY,
bookname VARCHAR2(20) NOT NULL,
publisher VARCHAR2(20) UNIQUE,
price NUMBER
);
  1. ALTER
ALTER TABLE NewBook ADD isbn VARCHAR2(13);
ALTER TABLE NewBook MODIFY isbn NUMBER;
ALTER TABLE NewBook MoDIFY bookid NUMBER NOT NULL;
  1. DROP
DROP TABLE NewBook;

DML(데이터 조작어)

1.SELECT

  • DISTINCT (중복 제거)
SELECT DISTINCT publisher
FROM Book;
  • SUM(합계), AVG(평균), MIN(최소값), MAX(최고값) [집계 함수]
SELECT SUM(saleprice) AS Total, AVG(saleprice) AS Average, MIN(saleprice) AS Minimum, MAX(saleprice) AS Maximum
FROM Orders;
  • COUNT(갯수)
SELECT COUNT(*)
FROM Orders;
  1. WHERE
  • BETWEEN A AND B, A AND B (사이값)

WHERE BETWEEN 10000 AND 20000;

WHERE price ≥ 10000 AND price ≤ 20000;

  • IN, NOT IN (원소 포함, 미포함)

WHERE publisher NOT IN ('굿스포츠', '대한미디어');

  • LIKE (문자열 패턴 비교), %(문자열이 포함된 데이터), _(특정 위치 한문자 대신)

WHERE bookname LIKE '축구의 역사';

WHERE bookname LIKE '%축구%';

WHERE bookname LIKE '_구%';

  • AND, OR, NOT

WHERE bookname LIKE '%축구%' AND price >= 20000;

  1. ORDER BY ( 결과를 특정 순서대로 출력)

ORDER BY price desc, bookname asc;

(desc 내림차순, asc 오름차순) 기본은 asc로 오름차순으로 나타난다

  1. GROUP BY (집계 함수 및 그룹별로 모으기)

GROUP BY : 속성값이 같은값 끼리 그룹을 만들어준다

HAVING : group by 한것에 대한 조건을 걸어준다

SELECT custid, COUNT(*) AS 도서수량
FROM Orders
WHERE saleprice >= 8000
GROUP BY custid
HAVING COUNT(**) >= 2;
  1. Join( 테이블 합치기)

서로다른 테이블의 데이터들을 한 테이블로 만들어서 원하는 데이터나, 통계를 내고싶을때

JOIN을 사용

  • 같은 조건의 컬럼을 원할경우
SELECT name, SUM(saleprice)
FROM Customer, Orders
WHERE Customer.custid = Orders.custid
GROUP BY [Customer.name](http://customer.name/)
ORDER BY [Customer.name](http://customer.name/);
  • 자신의 테이블로도 가능
SELECT staff.ename, staff.job
FROM Emp staff, Emp manager
WHERE staff.mgr = manager.empno AND manager.ename LIKE 'BLAKE';
  • 3가지의 테이블 조인도 가능
SELECT [Customer.name](http://customer.name/) , book.bookname
FROM Customer, Orders, Book
WHERE Customer.custid = Orders.custid AND Orders.bookid = Book.bookid AND Book.price=20000;
  • 외부조인

WHRER 조건에 속하지 않는것이라도 결과에 나타낼때

SELECT [Customer.name](http://customer.name/), saleprice
FROM Customer, Orders
WHERE Customer.custid = Orders.custid(+);
SELECT [Customer.name](http://customer.name/), saleprice
FROM Customer, Orders
WHERE Customer.custid(+) = Orders.custid;
  • 부속질의
SELECT name
FROM customer
WHERE custid IN (SELECT custid
FROM orders
WHERE bookid IN ( SELECT bookid
FROM book
WHERE publisher = '대한미디어'));
  1. INSERT
INSERT INTO Book(bookid, bookname, publisher, price)
VALUES (11, '스포츠 의학', '한솔의학서적', 90000);
INSERT INTO Book
VALUES (11, '스포츠 의학', '한솔의학서적', 90000);
INSERT INTO Book(bookid, bookname, price, publisher)
SELECT bookid, bookname, price, publisher
FROM Imported_book;
-- 한꺼번에 데이터 입력해주기
  1. UPDATE
UPDATE Customer
SET address = (SELECT address
            FROM Customer
            WHERE name='김연아')
WHERE name LIKE '박세리';
  1. DELETE
DELETE FROM Customer
WHERE custid=5;
DELETE FROM Customer
-- 테이블의 데이터가 모두 사라지고 빈테이블만 남게된다.

참고문헌(오라클로 배우는 데이터베이스 개론과 실습)

profile
Let's do it developer

0개의 댓글