Daily coding
Oracle day 1 - 기본 문법 및 자료형 본문
Oracle : Database
sql 한줄 주석문은 // 이 아니고 --
&&
/*
범위 주석문
*/
* 기본 문법
1. 테이블 생성 및 자료형의 선언
CREATE TABLE 테이블이름 (
컬럼명1 변수자료형 (크기[단위]),
컬럼명2 변수자료형 (크기[단위]),
);
---- 예시
CREATE TABLE TB_CHAR(
COL_CHAR1 CHAR(10 BYTE) ,
COL_CHAR2 CHAR( 10 CHAR),
COL_CHAR3 CHAR(10)
);
- 크기[단위]는 사용하지 않는 변수도 있음 ( INTEGER .. )
2. 테이블에 데이터 입력 : 테이블 생성 후 입력할 수 있음
INSERT INTO 테이블이름 (컬럼명1, 컬럼명2)
VALUES ( 변수1값, 변수2값 ) ;
---- 예시
INSERT into TB_CHAR ( COL_CHAR1, COL_CHAR2 )
values ( 'ABC', 'ABC' );
* 자료형
java oracle
-- int Integer, NUMBER
-- String VARCHAR2, CHAR
-- double NUMBER( 정수의 자리수 , 소수의 자리수 )
-- Date DATE
3. 자료형의 조회
SELECT 함수/변수명/*... FROM 테이블명 ;
---- 예시
SELECT * FROM tb_char ;
-- * : 해당 테이블의 모든 데이터 조회
- SELECT는 SQL 문법 중에서도 다양한 형태가 있으므로 따로 정리하도록 함
문자 자료형
* 문자열 형식은 무조건 ' '(작은 따옴표)만 가능하다
1. CHAR
create table TB_CHAR(
COL_CHAR1 CHAR(10 BYTE) , -- String COL_CHAR1(크기);
COL_CHAR2 CHAR( 10 CHAR), -- char : 문자열
COL_CHAR3 CHAR(10)
);
* 테이블에 데이터 추가하기
INSERT into TB_CHAR( COL_CHAR1,COL_CHAR2,COL_CHAR3)
values ('ABC', 'ABC','ABC');
-- 영문자 1문자 당 크기 : 1 BYTE
SELECT * FROM tb_char ;
INSERT into TB_CHAR( COL_CHAR1,COL_CHAR2,COL_CHAR3)
values ('가', '가','가');
-- 한글의 1문자 당 크기 : 3 BYTE
INSERT into TB_CHAR( COL_CHAR1,COL_CHAR2,COL_CHAR3)
values ('가나', '가나','가나');
INSERT into TB_CHAR( COL_CHAR1,COL_CHAR2,COL_CHAR3)
values ('가나다', '가나다','가나다');
lengthb : byte크기를 알려주는 명령어
SELECT col_char1, col_char2, col_char3,
LENGTHB(col_char1), LENGTHB(col_char2), LENGTHB(col_char3)
FROM tb_char ;
-- 위의 쿼리문의 결과는 모두 다르다
COL_CHAR1 : CHAR(10 BYTE)
COL_CHAR2 : CHAR( 10 CHAR)
COL_CHAR3 : CHAR(10)
길이값(용량)
CHAR : 10 BYTE 00000 00000
ABC -> ABC00 00000 --> 낭비되는 영역존재
CHAR( 10 CHAR)
가(3 BYTE) + 9 BYTE = 12
가나 (6 BYTE) + 8 BYTE = 8 + 6 = 14
가나다(9BYTE) 7 + 9 = 16
* CHAR형은 지정한 크기보다 작은 데이터를 받아도 줄어들지 않기 때문에 데이터 낭비가 생길 수 있다.
* 따라서, 사용하는 것은 VERCHAR2
2. VERCHAR 2
-- verchar2는 사용할 영역보다 크게 용량을 지정해도 사용한 만큼만 차지한다
create Table TB_VARCHAR(
COL1 VARCHAR2 (10 BYTE ),
COL2 VARCHAR2(10 char),
COL3 VARCHAR2 (10)
);
Insert INTO TB_VARCHAR(COL1, COL2, COL3)
VALUES ('ABC', 'ABC','ABC');
Insert INTO TB_VARCHAR(COL1, COL2, COL3)
VALUES ('가나', '가나','가나');
SELECT COL1, COL2, COL3,
LENGTHB(COL1), LENGTHB(COL2), LENGTHB(COL3)
From tb_varchar;
< 결과 >
3. LONG
- LONG : 최대 2 GB까지 저장 가능한 문자
- TABLE 당 1개만 사용가능
CREATE TABLE TB_LONG(
COL_LONG1 LONG
-- COL_LONG2 LONG
);
-- 위의 코드의 주석을 해제하면 에러가 난다.
-- 롱타입은 하나의 컬럼만 사용이 가능하기 때문
INSERT INTO TB_LONG(COL_LONG1)
VALUES ('ABC');
SELECT COL_LONG1 FROM tb_long;
-- LONG은 LENGTHB 사용이 불가능하다
-- 아래의 코드는 실행이 안됨.
SELECT COL_LONG1,LENGTHB(COL_LONG1)
FROM TB_LONG;
숫자 자료형 ( 정수형 , 정수실수형 )
1. INTEGER
- 숫자 (정수만 가능) : INTEGER,
- 바이트 수 적는 곳 없음
CREATE TABLE TB_INTEGER(
COL1 INTEGER,
COL2 INTEGER
);
INSERT INTO TB_INTEGER(COL1, COL2)
VALUES (123,456);
SELECT * FROM TB_INTEGER;
< 결과 >
2. NUMBER
CREATE TABLE TB_NUMBER(
COL_NUMBER1 NUMBER, -- 정수, 소수부 모두
COL_NUMBER2 NUMBER(5), -- 정수(5자리까지, 그이후 넣을 수 없음)
COL_NUMBER3 NUMBER(5,2), -- 정수 5자리, 소수부 2자리
COL_NUMBER4 NUMBER(*,2) -- 정수(모두출력), 소수 2자리
);
INSERT INTO TB_NUMBER(COL_NUMBER1,COL_NUMBER2,COL_NUMBER3,COL_NUMBER4)
VALUES (1234.5678, 12345, 123.456, 12345.56);
SELECT * FROM TB_NUMBER;
날짜 자료형 DATE
-- 연도, 월, 일, (시, 분, 초)
CREATE TABLE TB_DATE(
COL_DATE1 DATE,
COL_DATE2 DATE
);
INSERT INTO TB_DATE(COL_DATE1, COL_DATE2)
VALUES ( SYSDATE , SYSDATE-1 );
-- SYSDATE : 현재 날짜와 시간을 얻어옴
-- 연산자를 사용할 수 있다. (위의 코드는 현재 날짜 -1일 (어제) 날짜가 저장)
INSERT INTO TB_DATE(COL_DATE1, COL_DATE2)
VALUES (SYSDATE, TO_DATE('2019-12-25 11:55:55', 'YYYY-MM-DD HH:MI:SS'));
-- 분 단위는 MI, 월은 MM
-- TO_DATE( ) : 문자열을 날짜형식으로 바꾸는 함수
-- 위의 코드는 시간이 테이블에 표시되지 않지만 시간은 모두 들어가 있음
INSERT INTO TB_DATE(COL_DATE1, COL_DATE2)
VALUES ('19/12/15', '19/12/16');
-- 시간은 설정해주지 않으면 현재 시간으로 입력된다.
INSERT INTO TB_DATE(COL_DATE1, COL_DATE2)
VALUES ( SYSDATE , TO_DATE( '20191225112233' , 'YYYYMMDDHHMISS' ));
-- TO_DATE() 함수는 입력 문자열형식을 마음대로 할수 있다
( 대신 뒤에 파라미터에 형식이 같도록 적어준다)
SELECT * FROM TB_DATE;
-- VERCHAR2 ( 문자열 ) --> DATE (문자열, 날짜형태) 로 바꿀 때 쓰는 함수 : TO_DATE
-- DATE (날짜형식) --> VERCHAR2 (문자열)로 바꿀 때 쓰는 함수 : TO_CHAR
테이블 지우기
DROP TABLE :
DROP TABLE TB_CHAR;
DROP TABLE TB_VARCHAR;
DROP TABLE TB_LONG;
DROP TABLE TB_NUMBER;
DROP TABLE TB_INTEGER;
DROP TABLE TB_DATE;
'DB > Oracle' 카테고리의 다른 글
Oracle day 3 - Select와 Join (0) | 2019.12.15 |
---|---|
Oracle day 2 - DML : Select & Where 문제+풀이 (0) | 2019.12.12 |
Oracle day 2 - DML : Select & Where (0) | 2019.12.12 |
Oracle day 2 - DML : Select (0) | 2019.12.12 |
Oracle day 1 - Standard function 오라클 함수 (0) | 2019.12.11 |