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 |