안녕하세요. 오늘은 오라클과 SQL Developer를 이용한 데이터베이스를 공부해 보겠습니다.
먼저 데이터베이스가 무엇이냐? 조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것으로 정의할 수 있는데요. 이 데이터를 모아서 사람이 쓰고 싶은 것만 정제하고 구분, 선별하는 작업을 하여 실사용 가능한 데이터로 만드는 것이 우리의 할 일이라고 생각하시면 되겠습니다. 물론 지금의 저의 수준에 한에서 말이죠. 더욱 다양한 것을 할 수 있습니다! 먼저 질의에 사용할 데이터를 보여드리겠습니다.
CREATE TABLE Book (
bookid NUMBER(2) PRIMARY KEY,
bookname VARCHAR2(40),
publisher VARCHAR2(40),
price NUMBER(8)
);
CREATE TABLE Customer (
custid NUMBER(2) PRIMARY KEY,
name VARCHAR2(40),
address VARCHAR2(50),
phone VARCHAR2(20)
);
CREATE TABLE Orders (
orderid NUMBER(2) PRIMARY KEY,
custid NUMBER(2) REFERENCES Customer(custid),
bookid NUMBER(2) REFERENCES Book(bookid),
saleprice NUMBER(8),
orderdate DATE
);
/* Book, Customer, Orders 데이터 생성 */
INSERT INTO Book VALUES(1, '축구의 역사', '굿스포츠', 7000);
INSERT INTO Book VALUES(2, '축구아는 여자', '나무수', 13000);
INSERT INTO Book VALUES(3, '축구의 이해', '대한미디어', 22000);
INSERT INTO Book VALUES(4, '골프 바이블', '대한미디어', 35000);
INSERT INTO Book VALUES(5, '피겨 교본', '굿스포츠', 8000);
INSERT INTO Book VALUES(6, '역도 단계별기술', '굿스포츠', 6000);
INSERT INTO Book VALUES(7, '야구의 추억', '이상미디어', 20000);
INSERT INTO Book VALUES(8, '야구를 부탁해', '이상미디어', 13000);
INSERT INTO Book VALUES(9, '올림픽 이야기', '삼성당', 7500);
INSERT INTO Book VALUES(10, 'Olympic Champions', 'Pearson', 13000);
INSERT INTO Customer VALUES (1, '박지성', '영국 맨체스타', '000-5000-0001');
INSERT INTO Customer VALUES (2, '김연아', '대한민국 서울', '000-6000-0001');
INSERT INTO Customer VALUES (3, '장미란', '대한민국 강원도', '000-7000-0001');
INSERT INTO Customer VALUES (4, '추신수', '미국 클리블랜드', '000-8000-0001');
INSERT INTO Customer VALUES (5, '박세리', '대한민국 대전', NULL);
INSERT INTO Orders VALUES (1, 1, 1, 6000, TO_DATE('2020-07-01','yyyy-mm-dd'));
INSERT INTO Orders VALUES (2, 1, 3, 21000, TO_DATE('2020-07-03','yyyy-mm-dd'));
INSERT INTO Orders VALUES (3, 2, 5, 8000, TO_DATE('2020-07-03','yyyy-mm-dd'));
INSERT INTO Orders VALUES (4, 3, 6, 6000, TO_DATE('2020-07-04','yyyy-mm-dd'));
INSERT INTO Orders VALUES (5, 4, 7, 20000, TO_DATE('2020-07-05','yyyy-mm-dd'));
INSERT INTO Orders VALUES (6, 1, 2, 12000, TO_DATE('2020-07-07','yyyy-mm-dd'));
INSERT INTO Orders VALUES (7, 4, 8, 13000, TO_DATE('2020-07-07','yyyy-mm-dd'));
INSERT INTO Orders VALUES (8, 3, 10, 12000, TO_DATE('2020-07-08','yyyy-mm-dd'));
INSERT INTO Orders VALUES (9, 2, 10, 7000, TO_DATE('2020-07-09','yyyy-mm-dd'));
INSERT INTO Orders VALUES (10, 3, 8, 13000, TO_DATE('2020-07-10','yyyy-mm-dd'));
CREATE TABLE Imported_Book (
bookid NUMBER,
bookname VARCHAR(40),
publisher VARCHAR(40),
price NUMBER(8)
);
INSERT INTO Imported_Book VALUES(21, 'Zen Golf', 'Pearson', 12000);
INSERT INTO Imported_Book VALUES(22, 'Soccer Skills', 'Human Kinetics', 15000);
SQL은 데이터베이스에서 데이터를 추출하여 문제를 해결하는 용도에 사용하며 입출력은 TABLE에서 행해집니다.
또한, SQL을 기능에 따라 분류할 수 있는데요.
○데이터 정의어 (DLL)
테이블이나 관계의 구조를 생성하는 데 사용하며 CREATE, ALTER, DROP 문 등이 있습니다.
○데이터 조작어 (DML)
테이블에 데이터를 검색, 삽입, 수정, 삭제하는 데 사용하며 SELECT, INSERT, DELETE, UPDATE문 등이 있습니다.
○데이터 제어어 (DCL)
데이터의 사용 권한을 관리하는 데 사용하며 GRANT, REVOKE 문 등이 있습니다.
이해를 위해 데이터 조작어중 검색 기능을 사용해보겠습니다.
SELECT 문의 구성요소는 아래와 같이 간략히 표현할 수 있습니다.

SELECT는 질의 결과 추출되는 속성 리스트를 열거합니다.
FROM은 질의에 어느 테이블이 사용되는지 열거합니다.
WHERE는 질의의 조건을 작성합니다.
위의 구조를 이해하기위해 하나의 예시를 들어보겠습니다.
가격이 20,000원 미만인 도서를 검색하시오. 라는 문장을 SELECT문으로 표현해보겠습니다.
SELECT *
FROM Book
WHERE price < 20000;
여기서 * 은 전체 선택을 의미합니다.

질의의 조건은 복합적일 수 있으며 이때 'AND'를 사용합니다.
끝으로 '축구'가 제목에 포함되는 도서 중 가격이 20,000원 이상인 도서를 검색하시오. 라는 조건을 충족해 보겠습니다.
SELECT *
FROM Book
WHERE bookname LIKE '%축구%' AND price >= 20000;
SQL을 처음 다뤄보는 입장으로 계속 질의를 하며 배워가는 재미가 있었습니다. 본 포스팅은 복습의 목적으로 작성한 것이어서 본문이 설명이 부족하고 불친절하여도 너그러이 이해해주시기 바랍니다. 점점 발전해가는 글을 보여드리겠습니다. 감사합니다.
'SQL' 카테고리의 다른 글
[SQL] 인덱스를 안탔다??! 암시적 형변환, 풀테이블 스캔 문제 (0) | 2024.08.02 |
---|---|
[SQL/Error] Object[]와 COUNT의 반환 타입 (2) | 2024.03.26 |
[SQL/Error] 필드타입 변경 : TEXT길이 연장하기 (0) | 2024.03.10 |
[SQL] WHERE, ORDER BY (1) | 2022.10.20 |
안녕하세요. 오늘은 오라클과 SQL Developer를 이용한 데이터베이스를 공부해 보겠습니다.
먼저 데이터베이스가 무엇이냐? 조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것으로 정의할 수 있는데요. 이 데이터를 모아서 사람이 쓰고 싶은 것만 정제하고 구분, 선별하는 작업을 하여 실사용 가능한 데이터로 만드는 것이 우리의 할 일이라고 생각하시면 되겠습니다. 물론 지금의 저의 수준에 한에서 말이죠. 더욱 다양한 것을 할 수 있습니다! 먼저 질의에 사용할 데이터를 보여드리겠습니다.
CREATE TABLE Book (
bookid NUMBER(2) PRIMARY KEY,
bookname VARCHAR2(40),
publisher VARCHAR2(40),
price NUMBER(8)
);
CREATE TABLE Customer (
custid NUMBER(2) PRIMARY KEY,
name VARCHAR2(40),
address VARCHAR2(50),
phone VARCHAR2(20)
);
CREATE TABLE Orders (
orderid NUMBER(2) PRIMARY KEY,
custid NUMBER(2) REFERENCES Customer(custid),
bookid NUMBER(2) REFERENCES Book(bookid),
saleprice NUMBER(8),
orderdate DATE
);
/* Book, Customer, Orders 데이터 생성 */
INSERT INTO Book VALUES(1, '축구의 역사', '굿스포츠', 7000);
INSERT INTO Book VALUES(2, '축구아는 여자', '나무수', 13000);
INSERT INTO Book VALUES(3, '축구의 이해', '대한미디어', 22000);
INSERT INTO Book VALUES(4, '골프 바이블', '대한미디어', 35000);
INSERT INTO Book VALUES(5, '피겨 교본', '굿스포츠', 8000);
INSERT INTO Book VALUES(6, '역도 단계별기술', '굿스포츠', 6000);
INSERT INTO Book VALUES(7, '야구의 추억', '이상미디어', 20000);
INSERT INTO Book VALUES(8, '야구를 부탁해', '이상미디어', 13000);
INSERT INTO Book VALUES(9, '올림픽 이야기', '삼성당', 7500);
INSERT INTO Book VALUES(10, 'Olympic Champions', 'Pearson', 13000);
INSERT INTO Customer VALUES (1, '박지성', '영국 맨체스타', '000-5000-0001');
INSERT INTO Customer VALUES (2, '김연아', '대한민국 서울', '000-6000-0001');
INSERT INTO Customer VALUES (3, '장미란', '대한민국 강원도', '000-7000-0001');
INSERT INTO Customer VALUES (4, '추신수', '미국 클리블랜드', '000-8000-0001');
INSERT INTO Customer VALUES (5, '박세리', '대한민국 대전', NULL);
INSERT INTO Orders VALUES (1, 1, 1, 6000, TO_DATE('2020-07-01','yyyy-mm-dd'));
INSERT INTO Orders VALUES (2, 1, 3, 21000, TO_DATE('2020-07-03','yyyy-mm-dd'));
INSERT INTO Orders VALUES (3, 2, 5, 8000, TO_DATE('2020-07-03','yyyy-mm-dd'));
INSERT INTO Orders VALUES (4, 3, 6, 6000, TO_DATE('2020-07-04','yyyy-mm-dd'));
INSERT INTO Orders VALUES (5, 4, 7, 20000, TO_DATE('2020-07-05','yyyy-mm-dd'));
INSERT INTO Orders VALUES (6, 1, 2, 12000, TO_DATE('2020-07-07','yyyy-mm-dd'));
INSERT INTO Orders VALUES (7, 4, 8, 13000, TO_DATE('2020-07-07','yyyy-mm-dd'));
INSERT INTO Orders VALUES (8, 3, 10, 12000, TO_DATE('2020-07-08','yyyy-mm-dd'));
INSERT INTO Orders VALUES (9, 2, 10, 7000, TO_DATE('2020-07-09','yyyy-mm-dd'));
INSERT INTO Orders VALUES (10, 3, 8, 13000, TO_DATE('2020-07-10','yyyy-mm-dd'));
CREATE TABLE Imported_Book (
bookid NUMBER,
bookname VARCHAR(40),
publisher VARCHAR(40),
price NUMBER(8)
);
INSERT INTO Imported_Book VALUES(21, 'Zen Golf', 'Pearson', 12000);
INSERT INTO Imported_Book VALUES(22, 'Soccer Skills', 'Human Kinetics', 15000);
SQL은 데이터베이스에서 데이터를 추출하여 문제를 해결하는 용도에 사용하며 입출력은 TABLE에서 행해집니다.
또한, SQL을 기능에 따라 분류할 수 있는데요.
○데이터 정의어 (DLL)
테이블이나 관계의 구조를 생성하는 데 사용하며 CREATE, ALTER, DROP 문 등이 있습니다.
○데이터 조작어 (DML)
테이블에 데이터를 검색, 삽입, 수정, 삭제하는 데 사용하며 SELECT, INSERT, DELETE, UPDATE문 등이 있습니다.
○데이터 제어어 (DCL)
데이터의 사용 권한을 관리하는 데 사용하며 GRANT, REVOKE 문 등이 있습니다.
이해를 위해 데이터 조작어중 검색 기능을 사용해보겠습니다.
SELECT 문의 구성요소는 아래와 같이 간략히 표현할 수 있습니다.

SELECT는 질의 결과 추출되는 속성 리스트를 열거합니다.
FROM은 질의에 어느 테이블이 사용되는지 열거합니다.
WHERE는 질의의 조건을 작성합니다.
위의 구조를 이해하기위해 하나의 예시를 들어보겠습니다.
가격이 20,000원 미만인 도서를 검색하시오. 라는 문장을 SELECT문으로 표현해보겠습니다.
SELECT *
FROM Book
WHERE price < 20000;
여기서 * 은 전체 선택을 의미합니다.

질의의 조건은 복합적일 수 있으며 이때 'AND'를 사용합니다.
끝으로 '축구'가 제목에 포함되는 도서 중 가격이 20,000원 이상인 도서를 검색하시오. 라는 조건을 충족해 보겠습니다.
SELECT *
FROM Book
WHERE bookname LIKE '%축구%' AND price >= 20000;
SQL을 처음 다뤄보는 입장으로 계속 질의를 하며 배워가는 재미가 있었습니다. 본 포스팅은 복습의 목적으로 작성한 것이어서 본문이 설명이 부족하고 불친절하여도 너그러이 이해해주시기 바랍니다. 점점 발전해가는 글을 보여드리겠습니다. 감사합니다.
'SQL' 카테고리의 다른 글
[SQL] 인덱스를 안탔다??! 암시적 형변환, 풀테이블 스캔 문제 (0) | 2024.08.02 |
---|---|
[SQL/Error] Object[]와 COUNT의 반환 타입 (2) | 2024.03.26 |
[SQL/Error] 필드타입 변경 : TEXT길이 연장하기 (0) | 2024.03.10 |
[SQL] WHERE, ORDER BY (1) | 2022.10.20 |