1️⃣ 원격 접속
# sqlplus 사용자아이디/사용자비밀번호@접속할IP주소:포트번호/SID
sqlplus system/0000@10.10.0.159:1521/xe
접속 완료
2️⃣ 데이터 베이스 확인
# show databases와 같음
select distinct(owner) from all_all_tables;
# show tables
select table_name from user_tables;
3️⃣ 테이블 생성
CREATE TABLE student
(
student_id NUMBER(5) NOT NULL PRIMARY KEY,
name VARCHAR2(20) NOT NULL,
age NUMBER(3),
created_at DATE DEFAULT SYSDATE
);
4️⃣ 테이블에 데이터 추가
INSERT INTO student (student_id, name) VALUES (1219, '허지롱이');
select * from student;
5️⃣ 데이터 수정하기
update student set age=12 where student_id=1219;
5️⃣ 외래키 설정하기
외래키를 지정할 테이블을 생성해줍니다.
create table class
(
class_id number(5) not null primary key,
name varchar(20) not null,
student_id number(5),
created_at date default sysdate
);
아래와 같이 class 테이블에 student_id를 외래키로 지정해줍니다. mysql에서와는 다르게 is_part_of_a를 작성해줘야한다.
alter table class
add constraint is_part_of_a
foreign key(student_id)
references student(student_id);
insert into class(class_id, name, student_id) values(1, '자료구조론', 1219);
student 테이블에 존재하지 않는 id로 insert 하려하면 아래와 같이 오류가 난다 !
# student 테이블에 존재하지 않는 student_id값 사용
insert into class(class_id, name, student_id) values(1, '실용 영어', 1);
6️⃣ JOIN문 사용하기
select c.name class_name, s.name student_name
from class c
join student s
on c.student_id = s.student_id;
7️⃣ 데이터 삭제하기
외래키를 가지고 있지 않은 student 부터 삭제하면 아래와 같이 오류가 난다.
고로 외래키를 가지고 있는 테이블의 데이터부터 삭제해야한다.
delete from class where student_id=1219;
delete from student where age=12;
8️⃣ DB 접근 Tool로 확인하기
지금까지 한 작업들을 영구적으로 저장하기 위해서는 커밋을 해줘야한다.
commit;
커밋을 마치고, DBeaver를 통해 데이터를 조회하면 리눅스 환경에서와 같은 상태로 확인할 수 있다.
그러나 만약 커밋을 하지 않았다면 데이터베이스의 상태는 작업 이전의 상태로 나타날 것이다. 커밋을 하지 않았기 때문에 트랜잭션의 변경 내용이 데이터베이스에 영향을 주지 않았기 때문이다.
'Server' 카테고리의 다른 글
리눅스 환경에 Oracle DB 설치하기 (0) | 2024.01.23 |
---|---|
[Postman] 전역 변수 설정 (0) | 2024.01.18 |
[Oracle] ORA-12541: TNS: no listener (0) | 2024.01.18 |
가상 환경(Windows)에서 Oracle Database에 원격 접속하기 (0) | 2024.01.18 |
Linux iptables로 특정 포트만 허용하기 (0) | 2024.01.16 |