본문 바로가기

DATA BASE

20200408 오후

User = 계정 = DB

 

새 DB 생성

 

DDL

grant (리소스할 수 있는 )권한 주는 거

revoke 권한 회수하는 거

 

 

다 객체 - 트리거 시퀀스 인덱스 등등

 

좁은 의미의 스키마 : 테이블의 컬럼

resource - 테이블 , 뷰, 트리거 , 인덱스 등등과 같은 객체들을 가리키는 스키마(넓은 의미의 스키마)

 

테이블 = relation

 

system 먼저 마당을 만들어 주고 리소스와 커넥션 권한을 만들어 준다.

 

conn 아이디/비번; 

conn : 오라클 자체 명령어

- 접속을 이동함(계정을 갈아 탐), 생성된 아이디와 패스워드를 사용하여 접속하는 명령어

(ex) 관리자로 접속하여 테이블 생성 conn이하부터 마당으로 접속을 바꾸어 줌.

 

 

 

 

테이블 마다 프라이머리 키 하나 주는거는 무결성 어쩌구

데이터를 INSERT 할 때 PK를 먼저 넣은 후 FK를 넣어야 함(참조할 데이터가 우선 있어야 하기 때문에

 

 

외례키 때문에 각 테이블 마다 값을 입력할 때 순서 중요하다.

 

ORDER BY 너무 느려서 실시간 서비스에서 쓰지말기, 정렬필요하면 다른 방법도 있음..

 

ctrl + / : 주석 생김

 

유니코드에서 나온 UTF-8

 

DROP USER c##madang CASCADE; 

CREATE USER c##madang IDENTIFIED BY c##madang 
DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp PROFILE DEFAULT;
alter user madang default tablespace users quota unlimited on users;


GRANT CONNECT, RESOURCE TO c##madang; 
GRANT CREATE TABLE, CREATE VIEW, CREATE SYNONYM TO c##madang;

ALTER USER c##madang ACCOUNT UNLOCK; /* 여기서부터는 마당 계정으로 접속 */ 

alter user c##madang default tablespace 
users quota unlimited on users;

conn c##madang/c##madang;

CREATE TABLE Book (  
                bookid     NUMBER(2) PRIMARY KEY, 
                bookname   VARCHAR2(40),  
                publisher  VARCHAR2(40),  
                price       NUMBER(8) );
                

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);                

CREATE TABLE  Customer (  custid      NUMBER(2) PRIMARY KEY,    
			  name        VARCHAR2(40),  
			  address     VARCHAR2(50),  
			  phone       VARCHAR2(20) );

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);

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 Orders VALUES (1, 1, 1, 6000, TO_DATE('2014-07-01','yyyy-mm-dd')); 
INSERT INTO Orders VALUES (2, 1, 3, 21000, TO_DATE('2014-07-03','yyyy-mm-dd')); INSERT INTO Orders VALUES (3, 2, 5, 8000, TO_DATE('2014-07-03','yyyy-mm-dd')); INSERT INTO Orders VALUES (4, 3, 6, 6000, TO_DATE('2014-07-04','yyyy-mm-dd')); INSERT INTO Orders VALUES (5, 4, 7, 20000, TO_DATE('2014-07-05','yyyy-mm-dd')); INSERT INTO Orders VALUES (6, 1, 2, 12000, TO_DATE('2014-07-07','yyyy-mm-dd')); INSERT INTO Orders VALUES (7, 4, 8, 13000, TO_DATE( '2014-07-07','yyyy-mm-dd')); INSERT INTO Orders VALUES (8, 3, 10, 12000, TO_DATE('2014-07-08','yyyy-mm-dd')); INSERT INTO Orders VALUES (9, 2, 10, 7000, TO_DATE('2014-07-09','yyyy-mm-dd')); INSERT INTO Orders VALUES (10, 3, 8, 13000, TO_DATE('2014-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);
COMMIT;

 

 

 

--1.1 도서번호가 1인 도서의 이름
SELECT BOOKNAME
FROM BOOK
WHERE BOOKID=1;

--1.2 가격이 20,000원 이상인 도서의 이름
SELECT BOOKNAME
FROM BOOK
WHERE PRICE>=20000;

--1.3 박지성의 총 구매액
SELECT SUM(SALEPRICE)
FROM CUSTOMER C, ORDERS O
WHERE C.CUSTID = O.CUSTID AND NAME LIKE '박지성';

--1.4 박지성이 구매한 도서의 수
SELECT COUNT(*) "박지성이 구매한 도서 수"
FROM CUSTOMER C, ORDERS O
WHERE C.CUSTID = O.CUSTID AND NAME LIKE '박지성';

--2.1 마당서점 도서의 총 개수
SELECT COUNT(*)
FROM (
SELECT *
FROM BOOK
UNION ALL
SELECT *
FROM IMPORTED_BOOK);

--2.2 마당서점에 도서를 출고하는 출판사의 총 개수
SELECT COUNT(DISTINCT PUBLISHER)
FROM BOOK;

--2.3 모든 고객의 이름, 주소
SELECT NAME, ADDRESS
FROM CUSTOMER;

--2.4 2014년 7월 4일 ~ 2014년 7월 7일 사이에 주문받은 도서의 주문번호
SELECT ORDERID
FROM ORDERS
WHERE ORDERDATE BETWEEN '14/07/04' AND '14/07/07';

--2.5 2014년 7월 4일 ~ 2014년 7월 7일 사이에 주문받은 도서를 제외한 도서의 주문번호
SELECT ORDERID
FROM ORDERS
WHERE NOT ORDERDATE >= '14/07/04' AND ORDERDATE <='14/07/07';

--2.6 성이 '김'씨인 고객의 이름과 주소
SELECT NAME, ADDRESS
FROM CUSTOMER
WHERE NAME LIKE '김%';

--2.7 성이 '김'씨이고 이름이 '아'로 끝나는 고객의 이름과 주소
SELECT NAME, ADDRESS
FROM CUSTOMER
WHERE NAME LIKE '김%아';

 

 

 

'DATA BASE' 카테고리의 다른 글

복습 DDL(creat, alter, drop), DCL(insert, update, delete)  (0) 2020.04.16
20200409 JOIN 서브쿼리 집합연산  (0) 2020.04.09
Scalar 서브쿼리  (0) 2020.04.08
INDEX  (0) 2020.04.02
서브쿼리  (0) 2020.04.02