[03] 오라클 자료형
[오라클 자료형]
1. char(n):고정길이 문자 데이터 처리
- name char(10) NOT NULL
- 1바이트의 문자열이 할당 되더라도 10바이트를 전부 사용한다.
처리속도가 가장 빠른 문자 타입. 하지만 메모리 낭비가 가장 심함.
따라서 쓰이는 곳은 코드표,우편번호,주민번호등 길이가 일정한 컬럼에만 사용된다.
용량이 남는 경우 공백으로 채워진다.
따라서 검색시 문제가 될 수 있음으로 설계된 크기를 전부 사용하는 것을 권장함.
"happy "
zipcode char(7)
jumin char(13)
2. varchar, varchar2:가변길이 문자 데이터 처리
- name varchar(10) NOT NULL
- 1바이트를 사용하면 나머지 9바이트는 재사용 가능. 용량을 많이 절약할 수 있다.
하지만 사용된 사이즈를 계산해야 함으로 속도가 느린 문자 타입.
주로 길이가 심하게 변하는 게시판의 제목등에 많이 사용된다.
"happy"
3. number(n), number(p,s): 숫자를 10^-38 ~ 10^38,
p는 전체 자리수, s는 소수점 이하의 자리 수
. kor number(5) NOT NULL: -99999 ~ +99999
숫자 5자리를 저장할 수 있다.
. varchar와 같은 가변길이 타입을 지원한다.
. kor number(3) -999~+999
. aver number(5,2)
4. Date: 날짜형
. regdt date not null
--------------------------------------
* 테이블(table)의 구조
- 자유게시판 (제목,내용,작성자,작성일,조회수)
- 회원 (이름,아이디,비번,주소,핸드폰,이메일)
- 성적 (학번,이름,국어,영어,수학,총점,평균)
- 데이터를 저장하고자 하는 기본 구성 단위
- 테이블 table : 데이터베이스의 구성요소. 엔티티(entity)
- 칼럼 column, 필드field, 열
- 레코드 record, row 행
- 테이블명, 칼럼명의 한글이름은 절대 불가
- SQL문 대소문자 구분 안함.
* 테이블 생성 형식
create table 테이블명(
칼럼명1 자료형1 조건1
,칼럼명2 자료형2 조건2
,칼럼명3 자료형3 조건3
);
* 테이블 삭제
drop table 테이블명;
drop table tb_sungjuk;
------------------------------
* 성적테이블 설계
create table tb_sungjuk(
hakno char(5) not null --학번
,uname varchar(10) not null -- 이름
,kor number(3) not null
,eng number(3) not null
,mat number(3) not null
,tot number(3) default 0 --기본값 0
,aver number(5,2) default 0
,regdt date not null --등록일
);
* 레코드 조회 및 검색
select 칼럼명1,칼럼명2,칼럼명n~ from 테이블명 where 조건절
select hakno,uname,kor,eng,mat
from tb_sungjuk;
select *
from tb_sungjuk;
* 레코드 추가 및 삽입
insert into 테이블명(칼럼명1,칼럼명2,칼럼명n~)
values (값1, 값2, 값n~)
insert into 테이블명
values (학번값1, 이름값2, 국어점수값3, 영어점수값4, 수학점수값5
,총점값5,평균값6,등록일값6)
추가하고자 하는 칼럼명이 생략이 되면
모든칼럼에 값을 칼럼명 순서대로 입력해야 한다.
* sysdate : 현재 DB서버의 날짜(년월일시분초)값을 읽어올수 있다.
insert into tb_sungjuk(hakno,uname,kor,eng,mat,regdt)
values('g1001','홍길동',40,50,70,sysdate);
insert into tb_sungjuk(hakno,uname,kor,eng,mat,regdt)
values('g1002','개나리',60,50,80,sysdate);
insert into tb_sungjuk(hakno,uname,kor,eng,mat,regdt)
values('g1003','무궁화',90,60,70,sysdate);
insert into tb_sungjuk(hakno,uname,kor,eng,mat,regdt)
values('g1004','봉선화',100,55,70,sysdate);
insert into tb_sungjuk(hakno,uname,kor,eng,mat,regdt)
values('g1005','진달래',30,90,80,sysdate);
* 레코드 수정
update 테이블명
set 칼럼명1=값1,칼럼명2=값2,칼럼명n=값n~
update tb_sungjuk
set tot=kor+eng+mat, aver=tot/3;
* 레코드 삭제
delete from 테이블명
delete from tb_sungjuk;
* 날짜형 형변환
SELECT TO_CHAR(regdt, 'YYYY-MM-DD')
from tb_sungjuk
SELECT TO_CHAR(regdt, 'YYYY-MM-DD HH:MI:SS')
from tb_sungjuk
* where 조건절
레코드 전체가 대상이 아니라 조건에 만족하는 레코드만 대상으로 한정하고 싶을때
where 조건절을 사용한다
* 연산자
산술연산자:
비교연산자: > < >= <= <>서로 같지 않다 서로같다=
논리연산자: and(&&) or(||) not(!)
* 국어점수가 70점이상 레코드 검색
select hakno,uname,kor
from tb_sungjuk
where kor>=70
* 국어점수 50점이하, 수학점수 50점이하, 영어점수 50점이하
select *
from tb_sungjuk
where kor<=50 and mat<=50 and eng<=50