# 데이터베이스/오라클

SQL문의 기초, create table, insert into, update set, delete from

dev-jjong 2013. 3. 18. 21:14

SQL문의 기초

 

RDBMS : 여러 개의 테이블로 자료를 분산 저장 후 query로 자료 저장 및 검색
테이블 생성 : 기본 저장 단위이며 행과 열로 구성된다.
대문자로 쓰지만 소문자로 써도 된다.대문자가 좋다.

 

 

create table 테이블명(칼럼명 자료형, 제약조건)
자료형 : number, char, varchar2, date, timestamp, clob(5000자 이상글), blob,....
숫자, 문자가변_속도는, 문자고정(10)자리 확보_메모리는 5000자 밑으로, 날짜, 시간

 

create table test(no number(5) primary key, --primary key는 무조건 not null
name varchar2(10) not null,  --/자료 반드시 넣어라
tel varchar2(15),
inwon number,  --22자리 잡는다 써주면 메모리 절감
addr varchar2(30));

desc test; --구조 확인

 

 

--자료 추가
insert into 테이블명(칼럼명...) values(입력자료...)
delete from test where no=5;

insert into test(no, name, tel, inwon, addr) values(1, '인사과', '02-111-1111', 5, '숭인동111');
insert into test(no, name, tel, inwon, addr)values(2, '영업과', '02-1111-1222', 10, '역삼1동111');


insert into test values(2, '영업과', '02-1111-1222', 10, '역삼1동111');  -- (no, name, tel, inwon, addr) 같으면 생략 가능


insert into test(no,name)values(3,'자재과');


insert into test(no, tel, addr, name) values (4,'02-222-1515','묘동123','자내2과');


insert into test values(5,'자재2과');  -- 에러 : 컬럼값 없다.
insert into test(no, name) values(4,'자재2과');  --pk 에러 : 중복 불가
insert into test(no, tel) values(5,'02-333-1155');  --에러 : name 은 not null
insert into test(no, name) values(5,'자재3과는 우리 회사에서 가장 잘 나가는 부서');  --에러 : varchar2 값 보다 크다
insert into test(no, name, inwon) values(6,'자재3과','7명');  --에러 넘버값에 문자값을 넣었다.
insert into test(no, name, inwon) values(6,'자재3과','7');  --정상 실행


select * from test order by no asc;

 

--자료 수정
update 테이블명 set 수정칼럼명 = 수정값,.... where 조건
update test set inwon=123 where no=1;
update test set inwon=8, addr = '강남구 신사동 5'  where no=1;  --복수 개 수정
update test set addr=null where no=1;
update test set inwon=null where no=1;


update test set name=null where no=1;  --에러 name은 not null;
update test set no=null where no=1;


select * from test order by no asc;

 


--자료 삭제
delete from 테이블명 where 조건
delete from test where no=1;


delete from test;  -- 레코드 전체 삭제 : rollback(처리 취소)이 가능
truncate table test;  -- 레코드 전체 삭제 : auto commit 발생, rollback이 불가능

 


select * from test order by no asc;


drop table test;  --테이블 제거