글수 11
출처 : http://blog.naver.com/uxtrazom?Redirect=Log&logNo=140004793912
SQL/PLUS command
※ EDIT SQL STATEMENT
|
command |
약어 command |
목적 |
|
APPEND text |
A text |
한 라인의 끝에 text를 추가 |
|
CHANGE /old/new |
C /old/new |
한 라인의 old부분을 new로 교체 |
|
CHANGE /text |
C /text |
라인에서 text부분을 삭제 |
|
CLEAR BUFFER |
CL BUFF |
모든 라인들을 삭제 |
|
DEL |
|
한 라인 삭제 |
|
INPUT |
I |
버퍼에 한 라인 이상을 추가 |
|
INPUT text |
I text |
text로 구성되는 라인을 버퍼에 추가 |
|
LIST |
L |
SQL 버퍼안의 모든 라인을 list |
|
LIST n |
L n or n |
n번째 라인을 list |
|
LIST * |
L * |
현재 라인을 list |
|
LIST LAST |
L LAST |
마지막 라인을 list |
|
LIST m n |
L m n |
m부터 n까지의 라인들을 list |
|
RUN |
|
버퍼안의 내용을 실행 |
|
SAVE filename |
|
버퍼의 내용을 filename으로 저장 |
|
GET filename |
|
filename을 버퍼로 가져옴 |
|
START filename |
@filename |
filename의 내용을 실행 |
▶ filename은 .sql의 형태 이어야 함.
※ ORACLE 데이터베이스에 대한 데이터 보기
■ Oracle 데이터베이스에 대한 데이터, 즉, 테이블 이름, 칼럼이름, 사용자 이름, 데이터베이스 오브젝트의 구조 등을 보기를 원할 때. => Data Dictionary에 대한 질의를 통해 가능
● Oracle database내에 있는 테이블들 1) User Tables : 사용자에 의해 만들어지고 유지되는 테이블의 집합. 2) Data Dictionary : Oracle Server에 의해 만들어 지고 유지되는 테이블들의 집합
■ DESCRIBE
- TABLE의 구조를 보기위한 명령
▷ 형식 DESC table_name
▷ 예제 SQL> DESC student
■ 현재 사용가능한 모든 table보기
- tab 이라는 테이블에서 현재 사용자가 사용가능한 모든 테이블들을 볼수 있음.
▷ 예제
SQL> SELECT * from tab; TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- TT TABLE
■ 모든 사용자 object 보기
- user_objects 테이블에서 볼 수 있음.
SQL> DESCRIBE user_objects
명칭 널? 유형 ------------------------------- -------- ---- OBJECT_NAME VARCHAR2(128) OBJECT_ID NUMBER OBJECT_TYPE VARCHAR2(13) CREATED DATE LAST_DDL_TIME DATE TIMESTAMP VARCHAR2(75) STATUS VARCHAR2(7)
● user_objects에 대한 질의 가능 Select object_name From user_objects where object_type='TABLE';
SQL(Structured Query Language)
1. SQL 데이터 정의문(DDL)
● SQL이 처리하는 대상 : 릴레이션=> 테이블 테이블 => 기본 테이블(base table), 뷰(view), 임시 테이블(temporary table)
■ 기본 테이블의 생성(CREATE TABLE)
● Not NULL ● Primary Key ● UNIQUE ● REFERENCES
▷ 형식
CREATE TABLE table_name ( attr1 datatype [IS NULL], attr2 datatype [IS NULL], ... constraint description );
▷ 예제
CREATE TABLE STUDENT ( NAME VARCHAR(10), HAKBUN NUMBER(8), DEPT VARCHAR(20), ADDRESS VARCHAR(30), EDAY DATE, PRIMARY KEY(HAKBUN) );
■ 기본 테이블의 변경(ALTER TABLE) ● 기존의 테이블을 변경
ALTER TABLE STUDENT ADD HighSchool VARCHAR(60);
ALTER TABLE STUDENT MODIFY ( NAME VARCHAR2(20));
DROP TABLE STUDENT; ● NOT NULL을 사용할 수 없음
■ 데이터 타입 - CHAR(n) - VARCHAR2(n) - NUMBER(n,f) - LONG - DATE
■ 문자형(Character) 데이터 타입 ▶ Char와 Varchar2 Datatype은 Alphanumeric Data로 저장. ▶ Database Character set은 Database를 생성할때 만들어지며 변경할 수 없다.
▷ CHAR(n) - 고정길이 문자열 저장 - 테이블 생성시 컬럼의 길이를 지정해 줄 수 있으며 - 그 컬럼의 모든 값들은 지정한 길이를 가지고 저장된다. - 삽입(INSERT)시 값이 그 컬럼의 길이 보다 적으면 공백이 채워져 저장되고, 크면 오라클은 에러를 발생시킨다. - DEFAULT 길이 : 1 byte - 최대길이 : 255byte
▷ VARCHAR2(n) - 가변길이 문자열 저장 - 실제 입력된 데이타만 저장하므로 기억장소 절약하며 일반적으로 대부분의 문 자열 저장에 사용되며 가장 많이 사용된다. - DEFAULT 길이 : 1 byte - 최대길이 : 2000 byte
▷ Varchar(n) - Varchar2 Datatype과 현재는 동일함. - 향후 오라클에서는 다른 용도로 사용계획.(varchar2를 사용하는 것이 향후에 유리
■ 숫자형(Number) 데이터 타입 ▶ Fixed 또는 Floating-point number로 저장. ▶ 임의 크기의 숫자를 저장할 수 있으며 ▶ 정밀도(precision)를 지정하지 않는 경우 열은 제공된 대로 값을 저장. ▶ Scale이 지정되지 않으면 0임. ▶ 입력시에 무결성 검사 ▶ NUMBER, DECIMAL, INTEGER, REAL, DOUBLE PRECISION을 지원 ▶ 수치자료의 모든 형식은 오라클 수치 형식으로 동일하게 저장
▷ NUMBER(n) - 정수, 실수와 같은 숫자형 자료를 저장 - 정확도 : 38 자리 - 범위 : 1.0 * 10E-130 ~ 999 * 10E125 - 형식 : 컬럼이름 NUMBER (정확도[,스케일)] - 스케일과 정확도의 사용 NUMBER 필드를 기술한 때에는 최대 자리수와 소수점의 위치를 기술하는 것이 좋다. 이것은 입력자료에 대한 별도의 무결성 체크를 제공한다. 값이 최대 정확도를 초과하면 에러가 발생하고, 값이 최대 스케일을 초과하면 반 올림된다. column_name NUMBER (precision, scale) - 음의 스케일 스케일이 음수라면 그것은 반올림할 자리를 의미한다. 예로써 (10,-2)는 100 자리로 반올림하여 저장한다. - 정확도 보다 큰 스케일 잘 사용되지 않지만 가능하다. 이경우 정확도는 소수점 뒤에 나오는 최대 자리수가 된다. 예를 들어 (4,5)인 경우 소수점 뒤에 적어도 하나의 0 이 나 와야 한다. - 지수형 표기 : 123456 1.23456E+5 , 0.0987 9.87E-2
▷ INTEGER - 정수형 - 최대 38자리를 저장할 수 있다. - 형식 : [+|-] digit[digit...] [K/M] - 유의사항 : K는 1024, M은 1048547로 곱해진다K와 M은 INTEGER 수식에서 어디에서든 사용할 수 있다
■ 날짜형(DATE) 데이터 타입 ▶ 날짜와 시간에 대한 정보를 저장 ▶ 저장되는 정보는 세기.년.월.일.시.분.초 이며 7 byte를 차지한다 ▶ 시간 자료는 24시간 형식으로 저장된다 ▶ DATE 필드에 대한 디폴트 날짜 : 그날의 A.M. 12:00:00 ▶ 표준 오라클 DATE 형식은 DD-Mon-YY 이나 한글화로 인해 YY/MM/DD 등으로 표준 형식을 변경할 수 있다
▷ DATE 계산 - DATE 데이타 타입의 자료는 곱셈이나 나눗셈 연산은 할 수 없음. - 덧셈과 나눗셈은 가능하다. - example) SYSDATE+1은 내일이며 SYSDATE-7은 한주전이다 또한 EMP 테이블의 HIREDATE에서 SYSDATE를 빼면 입사후 지금까지의 날수를 얻을 수 있다.
▷ SYSDATE - 함수는 현상태의 날짜와 시간을 구해준다 - example) SELECT SYSDATE FROM DUAL;
▷ 오라클은 DATE 데이타 타입의 연산을 위해 다양한 함수를 제공 - ADD MONTHS : DATE 데이터 타입자료의 월 부분을 더하거나 뺄 수 있다. - MONTH BETWEEN : 두개의 날짜 사이의 달수를 계산한다. - TO_DATE 함수로 표시 형식을 바꿀 수 있으며 DATE 항목에 시간을 입력하려면 TO_DATE 함수를 이용해야 한다 - example) SELECT TO DATE('13-NOV-85 10:56 A.M.', 'DD-Mon-YY HH:MI A.M.') FROM DUAL; - SQL의 TRUNC 함수로 시간 표시 부분을 무시하고 날짜들을 비교할 수 있음. - 율리우스 력(Julian Dates) 오라클은 BC. 4712년 1월 1일을 기준으로 계산하는 율리우스력을 지원한다. - example) SELECT TO_CHAR(TO_DATE('-1-JAN-89'),'J') FROM DUAL; ■ LONG 데이타 타입 - 가변적인 길이의 문자열을 2 GigaBytes 까지 저장. - 긴 텍스트 문지열을 저장하기 위해 사용. - LONG 컬럼은 뷰 정의에 대한 텍스트를 저장하기 위해 데이타 사전안에서 사용되고 있다. - SELECT 리스트, UPDATE 문장의 SET 절, INSERT 문장의 VALUE 절 등에서 LONG 컬럼을 사용할 수 있다. - 한 테이블에서 하나의 LONG 컬럼만이 허용된다. LONG 컬럼은 사용상 부가적으 로 약간의 제한이 있다.
■ RAW 와 LOGN RAW 데이타 타입 - 2 진 자료나 2 진 스트링에 대해 사용되며 문자열, 부동 소수점 자료, 그래픽 이미지, 디지타이즈 음향 등을 저장한다. - 가변적인 길이의 2 진 데이타를 RAW는 2000 byte 까지, LONG RAW는 2 GigaByte 까지 저장한다. - 이 데이타타입을 표시할 때는 16 진 문자로써 표시한다.
■ ROWID - ROWID는 데이타베이스의 모든행과 연관된 의사 컬럼으로 그 행의 주소. - 그 주소는 예약어인 ROWID로 질의하여 16진수 형태로 나타낼 수 있다. - ROWID는 3 부분을 리턴하며 이 정보를 이용하여 각 행의 저장 위치 결정에 필요한 모든 것을 알 수 있으며 그 각각은 아래와 같다. 1 번째 부분 : 데이타베이스 파일 안의 블럭 위치 2 번째 부분 : 블럭안의 행 위치 (첫행은 0) 3 번째 부분 : 데이타베이스를 구성하는 파일 번호 (최초 파일은 1)
- INDEX 등에서 ROWID 값을 저장하기 위해서는 6 bytes가 필요하다. - example) SQL> SELECT ROWID FROM emp; ROWID ------------------ 00000003.0000.0007 00000003.0001.0007 00000003.0002.0007
3 rows selected. ■ NULL 값 - 한 행의 특정컬럼의 값이 없으면 그 값은 NULL이라고 함. - 테이블 생성시 NOT NULL로 이 게시물을..




요즘 오라클다루나 보군 ㅎㅎ. 기본적인거 잘 정리됐네