230 likes | 371 Views
Oracle SQL*PLUS. Database Systems Labs. TA: 이종욱 , 유개원. Welcome to DB World. Lab Class Library 501, Fri 9:00 – 10:40 Teacher Assistants 이종욱 , 유개원 {julee, gwyou}@postech.ac.kr IDS Lab. (279-5878) Database Systems Lab Homepage http://ids.postech.ac.kr/dblab2010/. Lab Schedule.
E N D
Oracle SQL*PLUS Database Systems Labs TA: 이종욱, 유개원
Welcome to DB World • Lab Class • Library 501, Fri 9:00 – 10:40 • Teacher Assistants • 이종욱, 유개원 {julee, gwyou}@postech.ac.kr • IDS Lab. (279-5878) • Database Systems Lab Homepage • http://ids.postech.ac.kr/dblab2010/
Lab Schedule • Introduction • Basic DML • Constraints • Group Functions • Join • Nested Queries • Views • Triggers • Sequences • Indexes • User-defined Functions + Introduction of Minibase or other term projects (This schedule is tentative, and may be sufficiently changeable.)
Introduction • SQL • Structured Query Language • 관계형 DB를 처리하기 위해 고안된표준 언어 (ISO) • 기 능 • Data Definition Language (DDL) Statements • CREATE, ALTER, DROP, RENAME, TRUNCATE • Data Manipulation Language (DML) Statements • INSERT, UPDATE, DELETE • Data Control Language (DCL) Statements • GRANT, REVOKE • Transaction Control (TC) Statements • COMMIT, ROLLBACK, SAVEPOINT
Introduction • 실습 환경 • Oracle Database 10g Express Edition Release 2 • http://www.oracle.com/technology/software/products/database/xe/index.html • SQL*PLUS? • Text 기반의 Oracle RDBMS Interface
SQL*PLUS: Login • ssh lightpurple.postech.ac.kr (port 22) • Username: stu2010 • Password: stu2010 • Type ‘sqlplus’ • ID/PW: Your Hemos ID.
SQL*PLUS: Basic • SQL buffer • SQL 명령이 저장되는 메모리 공간 • 기본 용법 • 명령문을 입력하고 Enter를 치면 현재 Line이 표시되면서 buffer 입력 상태가 된다. • Buffer입력 상태를 끝내려면 • 마지막 명령문의 끝, 또는 마지막의 빈 Line에 ‘;’ 입력
SQL*PLUS: 편집 명령 • R[UN] • Buffer의 내용 실행 • L[IST] • Buffer의 내용 출력 (‘*’로 표시된 Line이 현재Line) • A[PPEND] text • 현재 Line의 마지막에 text를 추가한다. • C[HANGE] /old/new/ • 현재 Line의 old를 new로 바꾼다. • C[HANGE] /text/ • 현재 Line의 text를 지운다. • CL[EAR] BUFFER • SQL Buffer의 내용을 지운다.
SQL*PLUS: 기타 명령 • HELP INDEX • Help Page를 출력 • Select table_name from user_tables; • 현재 사용자의 모든 테이블을 출력 • DESC tablename • 해당 table의 schema를 보여준다.
Writing SQL Statement • SQL문은 대소문자를 구별하지 않는다. • SQL Keyword는 대문자로, 그 외의 것은 소문자로 하는 것이 일반적이다. • SQL문은 하나 이상의 라인이 될 수 있다. • 키워드(keyword)는 약어를 쓰거나 두 라인으로 나누어 쓸 수 없다. • 탭이나 들여쓰기를 이용하여 가독성(readability)을 높인다.
Naming Rules • Table name과 Column name은 반드시 Alphabet으로 시작하며 30자 까지 가능 • 이름은 A-Z, a-z, 0-9, _(under score), $, # 만을 포함
Oracle Data Type • CHAR(L) • 고정길이 문자열. 최대 4000 Byte • VARCHAR2(L) • 가변길이 문자열. 최대 4000 Byte • NUMBER • 숫자(38자리 표현) • BLOB / CLOB • 각각 Binary/Text 자료를 4GB까지 저장 • DATE / TIMESTAMP • 날짜 / ms 단위까지의 시각
SQL: DDL • Relation을 생성/수정/제거하는 명령어 • CREATE TABLE, ALTER TABLE, DROP TABLE, RENAME TO • CREATE TABLE CREATE TABLE table_name ( column_name data_type [constraint], …, column_name data_type [constraint]) e.g., NOT NULL
SQL: DDL • DROP TABLE • DROP TABLE table_name • RENAME TO • RENAME table_name TO new_table_name • ALTER • ALTER TABLE table_name ADD column_name data_type • ALTER TABLE table_name DROP COLUMN column_name • ALTER TABLE table_name MODIFY column_name data_type
SQL: DML • INSERT • INSERT INTO table_name [(column[, …])]VALUES (value[,…]) • Column을 생략하거나 Values에 NULL Keyword를 줌으로써 NULL의 입력이 가능하다. • DELETE • DELETE FROM table_name [WHERE condition]
SQL: DML • UPDATE • UPDATE table_name SET column=value[,…][WHERE condition] • SELECT • SELECT column[,…] FROM table_name [WHERE condition] • SELECT * FROM table_name [WHERE condition]
SQL: SQL Function • COUNT • Tuple의 개수를 구한다. • (eg) SELECT COUNT(*) AS cnt FROM table_name • Q: NULL은 어떻게 될까? • SUM • Column 값의 합계를 구한다. • (eg) SELECT SUM(column_name) FROM table_name • 응용 • SELECT SUM(c_name)/COUNT(c_name) FROM table_name • SELECT SUM(c_name)/COUNT(*) FROM table_name
SQL *PLUS 파일 명령어 - SPOOL • SQL *PLUS에서 수행되는 모든 내용을 저장. • 형식 : SPOOL 파일명 • 확장자 생략시 .lst 형식으로 저장 됨. • 작업을 끝낼 때는 SPOOL OFF 함. (안하면 저장 안 됨.)
Practice • 1. 다음 Schema를 갖는 ‘Shopping’ Table을 생성하세요. (결과확인 : desc shopping) • product VARCHAR2(20) • amount NUMBER • price NUMBER • v_date DATE
Practice • 2. 다음의 데이터를 입력하세요.
Practice • 3. 맥주의 수량을 10으로 수정하세요. • 4. 품목명과 각 품목의 비용을 함께 출력하세요. • 5. 전체 비용을 출력하세요. • 6. 오늘 날짜를 기준으로 유통기한이 지난 항목을 삭제하세요.
Appendix - SQL*PLUS: 편집 명령 • I[NPUT] • 다음 Line으로 Buffer 입력 상태가 된다. • I[NPUT] text • 다음 Line에 text를 입력한다. • L[IST] n • n번 Line의 내용을 출력한다. • 현재 Line이 n으로 바뀐다.\ • L[IST] m n • m부터 n번 Line의 내용을 출력한다. • 현재 Line이 n으로 바뀐다.
Appendix - Oracle Data Type • varchar2(n) : 가변길이 문자 데이터 (1~4000byte) • char(n) : 고정 길이 문자 데이터 (1~2000byte) • number(p, s) : 전체 p자리 중 소수점 이하 s자리 (p:1~38, s:-84~127) • date : 7byte(bc4712년 1월1일부터 ad9999년 12월 31일) • long :가변길이 문자 데이터 (1~2Gbyte) • clob : 단일 바이트 가변 길이 문자 데이터 (1~4Gbyte) • raw(n) : n byte의 원시 이진 데이터 (1~2000) • long raw : 가변 길이 원시 이진 데이터 (1~2Gbyte) • blob : 가변 길이 이진 데이터 (1~4Gbyte) • bfile : 가변 길이 외부 파일에 저장된 이진 데이터 (1~4Gbyte)