<Character 형식>
CHAR[(size[BYTE|CHAR])]
VARCHAR2(size[BYTE|CHAR])
NCHAR[(size)]
NVARCHAR2(size)
영어는 한 문자당 1BYTE를 사용하지만 한글은 3BYTE를 사용하기에 만약 사람이라는 단어를 저장하려면 6BYTE의 사이즈가 필요하다.
LONG : 2GB까지 표시
CLOB : 대용량 텍스트 데이터 타입(최대 4GB)
NCLOB : 대용량 텍스트 유니코드 데이터 타입(최대 4GB)
<Numeric 형식>
1~22 BYTES 필요 / p : 1~38 / s : -84~127
- NUMBER(4) :최대 4자로 이루어진 숫자
- NUMBER(6, 2) :소수점 2자리를 포함하는 최대 6자리(소수점 둘째 자리에서 반올림)
- NUMBER(6, -2) :소수점 -2자리에서 반올림하는 최대 6자리의 숫자
- NUMBER : NUMBER(38,*)
- NUMBER(*, 5) : NUMBER(38,5)
<Date 형식>
ALTER TABLE MEMBER MODIFY ID NVARCHAR2(50); -- 수정
ALTER TABLE MEMBER DROP COLUMN AGE; -- 삭제
ALTER TABLE MEMBER ADD EMAIL VARCHAR2(200); -- 추가
INSERT INTO MEMBER(ID, PWD) VALUES('newlec', '111');
INSERT INTO MEMBER(ID, PWD) VALUES('dragon', '112');
SELECT ID AS USER_ID, PWD FROM MEMBER
-- ID를 USER_ID로서 표시된다.
-- AS는 생략해도 된다.
<트랜잭션>
LOCK -- 그동안 다른 세션이 건드리지 못하도록 LOCK
update -- 현재 세션을 위한 임시저장소에서 테스트
update
UNLOCK
commit
- 보류중인 모든 데이터 변경사항을 영구적으로 적용, 현재 트랙잭션 종료
rollback
- 보류중인 모든 데이터 변경사항을 폐기. 현재 트랜잭션 종료, 직전 커밋 직후의 단계로 회귀
<산술 연산자>
+, -, *, /
SELECT 1+'3' FROM DUAL;
문자열 더하기 연산자 : ||
ex) 모든 회원의 이름을 조회하시오. 단 이름은 ID를 붙여서 나타내시오
SELECT NAME || '('||ID||')' NAME FROM MEMBER;
<비교 연산자>
=, !=,^=, <>(같지않다), >, <, >=, <=, IS NULL, IS NOT NULL
SELECT * FROM NOTICE WHERE WRITER_ID = 'new';
SELECT * FROM NOTICE WHERE HIT > 3;
SELECT * FROM NOTICE WHERE CCONTENT IS NULL;
<관계 연산자>
NOT , AND, OR, BETWEEN, IN
-- 아래 세줄은 모두 같은 쿼리
SELECT * FROM NOTICE WHERE HIT=0 OR HIT=1 OR HIT=2;
SELECT * FROM NOTICE WHERE 0<=HIT AND HIT <=2;
SELECT * FROM NOTICE WHERE HIT BETWEEN 0 AND 2;
SELECT * FROM NOTICE WHERE HIT=0 OR HIT=1 OR HIT=2;
SELECT * FROM NOTICE WHERE HIT IN (0, 2, 7);
<패턴 연산자>
LIKE, %, _(자리수 한정)
-- 회원 중에서 '박'씨 성을 조회하시오.
SELECT * FROM MEMBER WHERE NAME LIKE '박%';
-- 회원 중에서 '박'씨이고 이름이 외자인 회원을 조회하시오.
SELECT * FROM MEMBER WHERE NAME LIKE '박_';
-- 회원 중에서 '박'씨 성을 제외한 회원을 조회하시오.
SELECT * FROM MEMBER WHERE NAME NOT LIKE '박%';
-- 회원 중에서 이름에 '도'자가 들어간 회원을 조회하시오.
SELECT * FROM MEMBER WHERE NAME LIKE '%도%';