강원도지사
select * from Book;
select * from Customer;
select * from Orders;

CREATE TABLE Orders;



--프라이머리키나 포린키 쓸땐 앞의 쉼표 삭제(이 문법에선 안 썼음)

orderid number(2),
custid number(2), 
bookid number(2),
saleprice number(8),
orderdate date,
PRIMARY KEY(orderid),
foreign key(custid) references Customer(custid),
foreign key(bookid) references Book(bookid)
);



--숫자는 number
--문자는 varchar2
--날짜는 date

insert into Orders values(1, 1, 1, 6000, to_date('2020-07-02', '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'));

DROP TABLE Orders;
commit;




--select 문법구조
--select 속성이름1, 속성이름2(만약 모든 속성 출력하려면 *)  from 테이블 이름

--Q1 book 테이블에서 책이름과 출판사 두가지 모두 출력하시오.

select bookname 책이름, publisher 출판사 from Book;



--Q2 모든도서의 도서번호, 도서이름, 출판사, 가격을 검색하시오.

select bookid, bookname, publisher, price from Book;

select publisher from Book;



--중복을 제거하고 싶으면 속성이름 앞에 DISTINCT를 붙여주면 된다.
--Q3)중복제거후 출판사 목록 출력

select DISTINCT publisher from Book;



--where
--의미: 모든 데이터를 다 출력하는 것이 아니라 조건에 맞는 데이터만 출력하고 싶을 때 사용!
--예: 가격이 20000원 이하인 책의 출판사를 출력하시오.

select publisher 
from Book
where price <=20000;



--예: 책 이름이 4글자 이상인 책들을 모두 출력하시오
--비교 연산자: =, <>(같지 않다), <, >, =>등등
--범위 연산자: between a and b 문법

--Q4)가격이 10000원 이상 20000원 이하인 책들을 모두 출력하시오.
--조건 두 가지가 모두 만족하는 문법이 있어야 한다면?
--and(두가지 모두 만족), or(둘중에 하나만 만족), not(반대) 모두 조건문에 들어감 

select *
from book
where price between 10000 and 20000;



select *
from book
where price >=10000 and price <=20000;



--Q5) 책들중 가격이 만원 혹은 이만원 혹은 삼만원인 책들을 출력하시오

select *
from book
where price=10000 or price=20000 or price=30000 ;



--IN( , )괄호 안에 있는 것 중에 하나라도 해당되면 ok

select *
from book
where price IN (10000, 20000, 30000) ;



--not 연산자 활용하여 가격이 만원, 혹은 이만원 또는 삼만원이 아닌 책들을 출력하시오


select *
from book
where price not in (10000, 20000, 30000);



commit;

 

--Q1. 모든 도서의 이름과 가격을 검색하시오

-- as뒤 한글은 속성의 영어를 한글로 바꿔줌

select bookname as 책이름, price as 가격
from book;



--이 문법으로 써도 됨 as는 alias의 줄임말(별명이라는 듯, 생략가능)

select bookname as 책이름, price as 가격
from book;


--Q2. (IN문법을 사용해서)출판사가 '굿스포츠'혹은 '대한미디어'인 도서를 검색하시오
--자료형이 number인 데이터는 ' '를 붙일 필요가 없고 그 외에는 데이터에 따옴표를 붙여야한다.

--숫자는 number
--문자는 varchar2
--날짜는 date

select *
from book
where publisher IN ('굿스포츠',' 대한미디어 ');



--Q2. (IN문법을 사용해서)출판사가 '굿스포츠'혹은 '대한미디어'가 아닌 도서를 검색하시오

select *
from book
where publisher NOT IN ('굿스포츠',' 대한미디어 ');



--숫자를 같다 다르다 비교할 때는 =,<> ex)price = 10000;
--문자를 같다 다르다 비교할 때는 like, not like ex)publisher like '굿스포츠';

--Q4.책이름이 '축구의 역사'인 책을 출간한 출판사를 검색하시오

select publisher
from book
where bookname like '축구의 역사';



--출판사이름만 출력하려면 publisher

--%(퍼센트 문법) 어떤 문자열 속에 그 단어가 포함되는 문자열을 찾을 때 사용함.
--예를 들어 추억으로 끝나는 문자열을 찾고 싶을 때에는 '%추억'
--추억으로 시작하는 문자열을 찾고 싶을 때에는 '추억%'
--추억이 어딘가에 들어가는 문자열을 찾고 싶을 때에는 '%추억%'

--Q5 도서 이름에 '축구'가 포함된 책이름과 출판사를 검색하시오

select bookname, publisher
from book
where bookname like'%축구%';



--앞에 있는건(예시:도서이름) where뒤에 뒤에있는 에(예시:책이름과 출판사) select뒤 로 나오는 유형..

--_(언더바 문법)%는 0글자~ 여러글자 _는 한글자만 해당!

Q6. 도서이름의 왼쪽 두번째 위치에 '구'라는 문자열을 갖는 도서를 검색하시오

select *
from book
where bookname like'_구%';



Q7. 제임스가 요청을 한다. "축구에 관한 도서 중 가격이 20000원 이상인 책 좀 추천해줘"

select *
from book
where bookname like'%축구%' and price >=20000;

 

요약

1) 숫자는 number로
문자는 varchar2로
날짜는 date로

 

2)select 문법구조
select 속성이름1, 속성이름2(만약 모든 속성 출력하려면 *) +  from 테이블 이름

 

3)중복을 제거하고 싶으면 속성이름 앞에 DISTINCT

 

4)비교 연산자: =, <>(같지 않다), <, >, =>등등
범위 연산자: between a and b 문법

 

5)IN( , )괄호 안에 있는 것 중에 하나라도 해당되면 ok (괄호 안 속성이 모두아닌 것은 NOT IN써주면 됨)

 

6) --숫자를 같다 다르다 비교할 때는 =,<> ex)price = 10000;
문자를 같다 다르다 비교할 때는 like, not like ex)publisher like '굿스포츠';

 

7) %(퍼센트 문법) 어떤 문자열 속에 그 단어가 포함되는 문자열을 찾을 때 사용함.
--예를 들어 추억으로 끝나는 문자열을 찾고 싶을 때에는 '%추억'
--추억으로 시작하는 문자열을 찾고 싶을 때에는 '추억%'
--추억이 어딘가에 들어가는 문자열을 찾고 싶을 때에는 '%추억%'

profile

강원도지사

@박강원입니다

노력하여 끊임없이 발전하는 사람이 되겠습니다!