요 며칠간 도커서버구축에 시간을 너무 쏟아서 일요일 밤이 돼서야 저번주 목요일에 배웠던 내용에 대해서 상기도 시킬 겸
정리를 해 보려고 한다.
일단 이틀 동안 내가 한 일은 개인 서버 위에 도커를 설치하여 oracle서버를 올려서
사용하고 있다.
그렇게 되었을 때 학원에서는 DB를 쓸 때마다 가상머신을 돌려야 했지만
나 자신과 현재 스터디 멤버에 한해서는 실시간으로. DB를 공유 및 사용이 가능하다.
그럼 이제 서버도 갖췄고 학원에서 배운 내용을 정리해 보겠다.
일단 오라클 DB의 기본문법은
DDM, DML, DCL로 나뉘는데 이번에 배운 것은 DML(Data Manipulation Language)이다.
DML은 데이터 조작이 라는 의미로 DML에는 SELECT, UPDATE, DELETE, INSERT가 있다.
일단 Select의 예시를 보면
SELECT * From order by idx asc;
idx라는 고유번호를 불러오는 코드인데
코드를 불러오기 위해서는 일단 table을 만들어 줄 필요가 있을 것이다.
create table 테이블명 (
name varchar(10),
idx number not null
);
이런 식으로 테이블을 만들고
INSERT INTO 테이블명 (name, idx) values (test, 5);
두 번째 명령어인 INSERT를 이용하여 테이블의 칼럼에 값을 저장해 준다.
즉 순서대로 보면
create table 테이블명 (
name varchar(10),
idx number not null
);
INSERT INTO 테이블명 (name, idx) values (test, 5);
SELECT * From order by idx asc;
이런 순으로 적게 될 것이다.
세 번째는 UPDATE이다. 업데이트는 단순히 지정된 값을 수정하는 명령어이다. 예시를 보면
update 테이블명 set name="수정할 값", idx= 5;
이렇게 순서대로 값을 수정하면 된다.
마지막은 DELETE이다.
이건
DELETE 테이블명 where idx = 6;
이런 식으로 원하는 값을 찾는 where을 이용하여 값을 검색해서 삭제시켜 준다.
이제 알아봐야 할 것은 제약조건이다.
아까 위에서 적은 코드를 보면
create table 테이블명 (
name varchar(10) 제약조건,
idx number not null(제약조건)
);
INSERT INTO 테이블명 (name, idx) values (test, 5);
SELECT * From order by idx asc;
이렇게 자료형 옆에 제약조건을 넣어줄 수 있다.
예를 들어 반드시 값은 중복되서는 안된다라는 조건을 걸고 싶을 때는 unique라는 조건을 부여하면 될 것이다.
이렇듯이 테이블의 칼럼에 조건을 부여하는 것이 제약조건이다.
일단 첫 번째는 primary key이다.
이건 Not null + Unique의 기능을 가지고 있다.
즉 빈칸이 있어서는 안 되고 값이 중복되어서도 안된다는 뜻이다.
주고 PK라고 부르며 테이블당 하나만 정의가 가능하다는 특징이 있다.
마지막으로 자동으로 INDEX가 생성되어, 값을 검색할 때 편하게 사용할 수 있다.
두 번째는 Unique이다.
이건 위에서도 설명했듯이 값이 중복될 수가 없다는 특징이 있다.
세 번째는 not null이다.
이건 빈 값을 넣을 수 없다는 단순하지만 은근히 중요한 특징을 가지고 있다.
네 번째는 default이다.
이 제약조건은 글자 그대로 기본값을 의미한다.
즉 아주 것을 입력하지 않아도 자동으로 설정해 놓은 기본값으로 입력되는 제약조건이다.
날짜나 레코드 고유번호등에서 유용하게 쓰일 것이다.
다섯 번째는 foreign key이다.
이건 주로 외래키 혹은 외부키라고 주로 불리며 FK라고도 한다.
FK가 정의된 테이블을 자식 테이블이라고 한다.
참조되는 테이블 즉, PK가 있는 테이블을 부모 테이블이라고 하며
부모 테이블의 PK칼럼에 존재하는 데이터만 자식 테이블에 입력할 수 있다.
간단히 말한다면 이미 있는 값만 등록할 수 있다는 뜻이다.
마지막은 sequence이다.
이건 예외조건이라기보다는 sequence라는 것을 따로 만들어서 고유번호를 주는 느낌이다.
만약 각각의 데이터에 고유번호를 주고 싶다면 이것을 사용해야 할 것이다.
create sequence 시퀀스 이름
start with 시작값
maxvalue ~까지
increment by 증감값
nocycle
nocache;
이런 식으로 시퀀스를 만들 수 있다.
이것을 자바로 만든다면
for(int i = 0; i < 10; i++){
}
이 코드와 같은 맥락으로 보면 편할 것이다.
오늘은 일요일이다. 쉬는 날이기도 하니 스터디팀이 모여서 앞으로의 방향과 현재 공부하면서 구현 중인
멀티챗의 로그인기능에 대해서 논의하고 왔다.
아직 소켓에 대한 완벽한 이해를 하기까지는 조금 더 시간이 걸릴 것 같지만 지금 나 자신이 하는 공부와
앞으로 팀에서 사용될 공용인터페이스를 서버에서 구현하면서 서버구축과 관리의 실전경험을 쌓을 수 있어서
뿌듯함도 있다.
자바도 어렵고 linux 나 도커도 어렵지만 재미있다는 마음 하나만으로 힘든 것도 버텨지는 것 같다.
이 도커에 올려놓은 oracle서버에도 많은 문제가 있을 것이다. 방어벽설정도 아직 미숙하고
맹점이 많을 것이다. 이것을 보안하는 내용도 이 블로그에 올려보도록 하고 싶다.
정말 몇 개월 뒤에 이 스터디에서 프로젝트를 하거나 학원에서 프로젝트를 하게 되더라도
뒤처지는 것 없이 잘 따라갈 수 있도록 앞으로도 더욱 분발해 봐야겠다.
그럼 오늘은 여기서 마치겠다.
'오라클 DB' 카테고리의 다른 글
오라클DB 기초 - join (0) | 2023.04.23 |
---|