410 likes | 532 Views
ORACLE. 버전 : 9i. DDL(Data Definition language). 여러 가지 객체 , 즉 데이터베이스 , 테이블 , 인덱스 , 뷰 등을 생성하는 작업과 구조를 변경하는 작업을 위한 기능 CREATE : 데이터베이스 , 테이블 , 인덱스 , 뷰 등의 개체를 생성하기 위한 정의 문이다 . ALTER : CREATE 문에 의해 생성된 개체를 수정하는
E N D
ORACLE 버전 : 9i
DDL(Data Definition language) • 여러 가지 객체, 즉 데이터베이스, 테이블, 인덱스, 뷰 등을 생성하는 작업과 구조를 변경하는 작업을 위한 기능 • CREATE : 데이터베이스, 테이블, 인덱스, 뷰 등의 개체를 생성하기 위한 정의 문이다. • ALTER : CREATE 문에 의해 생성된 개체를 수정하는 것으로 새로운 항목의 추가나 삭제 등 구조 변경의 경우나, 또는 기존의 개체에 새로운 제약조건 등을 추가하거나 삭제하는 경우 등의 작업에 사용된다. • DROP : 테이블 스페이스나 테이블을 제거.
▶ DB 접속하기 • ID : SYSTEM • PASSWORD : MANAGER0 • 오라클 설치 시 입력한 암호 • DATABASE : ORA9 / DBLAB • 설치 중 입력한 SID나 로컬네트서비스 이름
▶ 1.1 테이블 스페이스 생성하기 • CREATE TABLESPACE 테이블스페이스 명 DATAFILE ‘저장경로\파일명.DBF’ SIZE 용량M; (테이블 스페이스 생성) • CREATE TABLESPACE DB_HOME DATAFILE 'c:\oracle\oradata\DB_HOME.DBF' SIZE 100M; • CREATE USER 사용자이름 IDENTIFIED BY 암호; (유저생성) • CREATE USER MANAGE IDENTIFIED BY MANAGE1 DEFAULT TABLESPACE DB_HOME; • GRANT CONNECT, RESOURCE, DBA TO 사용자이름; (권한 주기) • GRANT DBA TO MANAGE;
▶ 1.2 만든 테이블 스페이스로 재접속 • ID : MANAGE • PASSWORD : MANAGE1 • 오라클 설치 시 입력한 암호 • DATABASE : ORA9 / DBLAB • 설치 중 입력한 SID나 로컬네트서비스 이름
▶ 1.3 테이블 스페이스 검색하기 • SELECT * FROM DBA_TABLESPACES; • 생성된 테이블스페이스 확인.
▶ 1.4 유저삭제와 테이블스페이스 삭제 • 유저삭제 • DROP USER MANAGE(사용자 이름) CASCADE; • 테이블스페이스 삭제 • DROP TABLESPACE DB-HOME(테이블스페이스명);
▶ 2.1 테이블 생성하기 • 테이블 생성구문 CREATE TABLE 테이블명 ( 열이름 데이터 타입 NOT NULL DEFAULT 기본값, PRIMARY KEY(열이름), UNIQUE 열이름, FOREIGN KEY 열이름 REFERENCES 테이블명(열이름) );
▶ 2.1 테이블 생성하기 (예문) • 테이블 생성 예문 CREATE TABLE SANGPUM ( 상품코드 CHAR(10) NOT NULL, 소코드 CHAR(10) NOT NULL, 색상코드 CHAR(10) NOT NULL, 사이즈 CHAR(10) NOT NULL, 재고수량 INTEGER DEFAULT '0', -- 재고수량의 기본값은 0 이다. PRIMARY KEY (상품코드) );
▶ 2.2 모든 테이블 검색하기 • SELECT * FROM TAB; • ‘SANGPUM’이란 테이블이 검색됨.
▶ 2.3 테이블 삭제하기와 이름변경 • 테이블 삭제 • DROP TABLE SANGPUM(삭제 할 테이블 명); • 테이블 이름변경 • RENAME SANGPUM(변경 전 이름) TO 상품 (변경 후 이름); 테이블이름이 상품으로 변경됨
▶ 2.4 테이블 내 컬럼보기 • SELECT * FROM 상품 ( 테이블 이름 ); 테이블 생성시 입력한 컬럼들을 확인
▶ 2.5 테이블 내 컬럼추가 및 기본값 설정하기 • ALTER TABLE 테이블 이름 ADD ( 컬럼이름 테이터 형 DEFAULT 기본값); • ALTER TABLE 상품 ADD (비고 CHAR(10)DEFAULT '정품'); 비고라는 컬럼이 추가되었지만, 기본값은 데이터가 입력되지 않았기 때문에 보이지 않는다.
▶ 2.6 컬럼 데이터 크기 변경 • ALTER TABLE 테이블 이름; MODIFY( 컬럼이름 변경할 데이터 형(크기) ); ALTER TABLE 상품 MODIFY(비고 CHAR(30));
▶ 2.7 Oracle Enterpise Manager에서 확인하기 • 시작 ORACLE Enterprise Manager Consol 독립적 실행 • 유저/암호입력 스키마 유저선택 테이블 선택 (더블클릭) 2.5 확인 (비고, 기본값) 2.6 확인 (비고 크기 변경)
▶ 2.8 컬럼 삭제하기 • ALTER TABLE 테이블 이름 DROP COLUMN 컬럼이름; / 또는 DROP (컬럼이름); ALTER TABLE 상품 DROP COLUMN 비고; / DROP (비고); 비고라는 컬럼이 삭제됨
▶ 3.1 제약조건 • 테이블 생성시 • 컬럼이름 데이터 형(크기) CHECK ( 컬럼이름 IN ( 입력 허용 값 ) • CREATE TABLE 상품 ( 상품코드 CHAR(10) NOT NULL, 소코드 CHAR(10), 색상코드 CHAR(10), 사이즈 CHAR(10) CHECK ( 사이즈 IN ( 'S', 'M', 'L', 'XL')), 판매단가 INTEGER, 재고수량 INTEGER DEFAULT '0', -- 재고수량의 기본값은 0 이다. PRIMARY KEY (상품코드) ); 제약조건 재고수량 기본값 설정
▶ 3.2 제약조건 위배 • 데이터 삽입 INSERT INTO 테이블이름 ( 컬럼이름1, 컬럼이름2, …… ) VALUES ( 데이터1, 데이터2, …..) 컬럼의 데이터 형과 크기에 맞게 순서대로 데이터를 넣어야 함. • 제약조건 위배 예 ) INSERT INTO 상품( 상품코드, 소코드, 색상코드, 사이즈, 판매단가, 재고수량) values( 'P1', 'S1', 'C1', 'XXL', 67000, 15 );
▶ 3.3 데이터 삽입 ( 1 ) • 상품테이블에 데이터 입력 INSERT INTO 상품( 상품코드, 소코드, 색상코드, 사이즈, 판매단가, 재고수량) values( 'P1', 'S1', 'C1', 'XL', 67000, 15 ); 입력된 데이터 값
▶ 3.3 데이터 삽입 ( 2 ) • 다음 행에 ‘상품코드’만 추가하기 insert into 상품( 상품코드 ) values( ‘P2’ ); ‘P2’가 추가되고, 재고수량의 기본값은 ‘0’
▶ 3.3 데이터 삽입 ( 3 ) • INSERT 데이터 삽입 후 데이터를 추가 하기 위한 쿼리 문 UPDATE사용 ( 삽입 후 INSERT로 같은 행 다시 삽입 불가 ) UPDATE 테이블이름 SET 컬럼이름1 = 데이터 값1 , 컬럼이름2 = 데이터 값2, ……. WHERE 데이터가 있는 컬럼이름 = 데이터 값 ( WHERE절은 데이터를 입력 할 행을 나타낸다. )
▶ 3.3 데이터 삽입 ( 3 ) 예 • UPDATE 상품 SET 소코드 = 'S2', 색상코드 = 'C2', 사이즈 = 'M', 판매단가 = 45000, 재고수량= '20' WHERE 상품코드 = 'P2'; 상품 테이블에 상품코드가 ‘P2’인 행에 나머지 컬럼에 데이터를 입력. 입력된 데이터 값
▶ 3.4 데이터 값 변경하기 • UPDATE 테이블이름 SET 변경할 데이터의 컬러이름 = 변경되어 입력될 값 WHERE 다른 컬럼이름 = 다른 컬럼이름의 값; ( 변경될 데이터와 같은 행에 있는 값 ) • 예 ) 상품코드가 'P2'인 행의 사이즈 컬럼의 값을 'S'로 변경 - UPDATE 상품 SET 사이즈 = 'S' WHERE 상품코드 = 'P2'; 변경된 데이터 값 (사이즈 M S)
▶ 3.6 테이블 추가 설명 • IDENTITY : 레코드가 하나씩 추가 될 때마다 자동으로 값을 계산해서 입력 NULL값 X, DEFALUT값 X, 열에 값을 주지 않으면 1씩 증가 • PRIMARY KEY : NULL값이 올 수 없고 UNIQUE 하다. • NOT NULL : NULL 값이 올 수 없다. • UNIQUE : 동일한 열에 동일한 값이 두 개 이상 올 수 없다는 제약 조건 • CHECK 절 : 해당 열이 가질 수 있는 값의 범위를 지정 • DEFAULT : 해당 열에 값이 입력되지 않으면 자동으로 주어진 값으로 해당 • FOREIGN KEY : 외래 키를 지정하여 참조되는 테이블에 수정, 삭제가 발생하면 관련 테이블의 동작을 제한하여 참조 무결성을 지키도록 하는 제약조건
DML (Data Manipulation Language) • 데이터 정의어로 정의된 데이터베이스 스키마 내의 데이터를 조작하는데 사용된다. • 사용자는 데이터 조작어를 사용하여 데이터를 검색하고, 삽입하고, 삭제하고, 수정한다. • SELECT : 테이블에서 기존의 레코드를 검색 • INSERT : 테이블에서 새로운 레코드를 삽입 • DELETE : 테이블에서 특정레코드를 삭제 • UPDATE : 테이블에서 특정레코드의 필드값을 수정
▶ 1. SELECT문 • SELECT문은 여섯 개의 절로 이루어지지만 이중에서 SELECT절과 FROM절만 필수적이고 나머지는 선택사항이다. - SELECT 구문 - • SELECT DISTINCT 필드1, 필드2, ......필드N FROM 테이블1, 테이블2, .....테이블N WHERE 조건식 (중첩질의가능) GROUP BY 필드1, 필드2, ......필드N HAVING 조건식 ORDER BY 필드1, 필드2... 필드N (ASC, DESC); ✔ SELECT 절 : 질의 결과에 포함하려는 필드들을 열거한다. ✔ FROM 절 : 질의 작업에 사용 될 테이블들을 열거한다. ✔ WHERE 절 : 특정 조건을 주고 조건에 만족하는 레코드만 검색하는 경우 ✔ GROUP BY 절 : 특정 필드를 기준으로 동일한 값끼리 그룹으로 묶어 요약된 결과를 검색 할 수 있게 하는 기능. ✔ HAVING 절 : GROUP BY의해 묶어진 그룹에서 조건을 주어 검색하고자 할 때 사용하는 기능 ✔ ORDER BY 절 : 오름차순, 내림차순
▶ 2. SELECT문 ( ORDER BY 절 ) • 재고수량이 낮은 순으로 오름차순 정렬 SELECT 상품코드, 색상코드, 사이즈, 재고수량 FROM 상품 ORDER BY 재고수량
▶ 3. SELECT문 ( ORDER BY 절 ) • 재고수량 내림차순 정렬 ( DESC ) SELECT 상품코드, 재고수량 FROM 상품 ORDER BY 재고수량 DESC
▶ 4. SELECT문 ( DISTINCT ) • 사이즈 종류별로( 동일한 값 ) 하나만 보여주기 SELECT DISTINCT 사이즈 FROM 상품
▶ 5. SELECT문 ( 조건검색 1 ) • 판매단가가 50000원보다 큰 것을 '상품코드', '색상코드', '사이즈', '판매단가'로 검색 SELECT 상품코드, 색상코드, 사이즈, 판매단가 FROM 상품 WHERE 판매단가 > 50000
▶ 6. SELECT문 ( 조건검색 2 ) • 재고수량이 '15'인 것 을 검색 SELECT 상품코드, 소코드, 재고수량 FROM 상품 WHERE 재고수량 = '15'
▶ 7. SELECT문 ( 조건검색 3 ) • 사이즈가 'S'가 아닌 것을 ‘상품코드’, ‘사이즈’, ‘재고수량’으로 검색 SELECT 상품코드, 사이즈, 재고수량 FROM 상품 WHERE 사이즈 <> 'S'
▶ 8. SELECT문 ( 조건검색 4 ) • '공급업체' 테이블에서 담당자가 '2'이고 계약금액이 500000만원 이하인 '업체코드', '업체명', '담당자', '계약업종', '계약금액' 검색 SELECT 상품코드, 색상코드, 사이즈, 판매단가 FROM 상품 WHERE 판매단가 <= 70000 AND 사이즈 = 'M'
▶ 9. SELECT문 ( 조건검색 5 ) • 판매단가가 50000원 에서 80000원 사이에 속하지 않는 모든 상품 정보를 검색. SELECT * FROM 상품 WHERE NOT(판매단가 >= 50000 AND 판매단가 <= 80000) ;
▶ 10. SELECT문 ( 조건검색 6 ) • 상품 테이블에서 사이즈 컬럼의 데이터에 'L'이 들어가있는 ‘상품코드’와 ‘사이즈’를 검색 SELECT 상품코드, 사이즈 FROM 상품 WHERE 사이즈 LIKE '%L%'
▶ 11. SELECT문 ( 조건검색 7 ) • 판매단가를 10%인상한 값을 '판매단가인상'이란 이름으로 검색 SELECT 상품코드, 판매단가, 판매단가*1.1 AS 판매단가인상 FROM 상품
▶ 12. SELECT문 ( 조건검색 8 ) • 모든 상품의 판매단가를 ‘2.5%’인상하되 10000단위 까지 반올림하여 '상품코드', '판매단가','판매단가인상'을 출력 SELECT 상품코드, 판매단가, ROUND(판매단가 *1.025, -4) AS 판매단가인상 FROM 상품
▶ 13. SELECT문 ( 조건검색 9 ) • 소코드 'S2'에 해당하는 상품은 모두 몇 개 인지 검색 SELECT COUNT(*) FROM 상품 WHERE 소코드 = 'S2'
▶ 14. SELECT문 ( 조건검색 9 ) • 소코드 별 "평균판매단가" SELECT 소코드, AVG(판매단가) FROM 상품 GROUP BY 소코드
▶ 15. SELECT문 ( 조건검색 10 ) • 행 집단을 선택하기 위해 사용 (having절) • 상품별 판매단가를 소코드 별로 그룹지어 합계를 계산하고 판매단가가 50000원 이상인 결과만을 검색 SELECT 소코드 , SUM(판매단가) FROM 상품 GROUP BY 소코드 HAVING SUM(판매단가) > 50000