[Database] database 오라클 01
시작하기
0. 들어가기전에
아래의 오라클 XE 11.2 버전 다운로드 해서 오라클을 설치한다. 오라클XE11g로 설치해야 골치아픈 일이 없다. https://www.oracle.com/database/technologies/xe-prior-release-downloads.html
1. 실무SQL문
테이블 만들기 테이블은 데이터를 담기 위한 표 같은 것이다. 예를 들어 다음과 같은 테이블을 만들면
CREATE TABLE auth_repository (
id int NOT NULL,
auth_code varchar(10) NOT NULL,
auth_name varchar(30) NOT NULL,
PRIMARY KEY (id)
);
아래와 같은 표가 생성이 된다.
not null은 비어있으면 안되는, 꼭 입력해야하는 값을 말한다. 특히 pk는 고유의 값으로 필수 입력값이다.
CREATE는 저렇게 데이터가 들어가 표를 생성한다. 그러나 아직 데이터는 없는, 텅텅 빈 책꽂이일 뿐이다. 데이터를 넣으려면 INSERT 문을 날려 자리에 맞게 데이터를 넣어야한다. insert 명령어로 데이터를 넣는 SQL문을 아래와 같이 적으면
INSERT INTO auth_repository (id, auth_code, auth_name) VALUES (‘remove’, ‘C010321’, ‘삭제’);
위 표에 다음과 같이 데이터가 들어간다.
1.1. SELECT
이 데이터를 불러오려면 SELECT 문을 쓰면 된다.
SELECT * FROM auth_repository;
라고 쓰면 테이블 auth_repository에 있는 모든 데이터를 불러온다. * 는 모든 것을 뜻한다. * 자리에 id만 쓰면 id 값만, id, auth_code를 쓰면 id와 auth_code 값들을 불러온다. 여기서 정렬을 하려면 ODER BY를 붙인다.
SELECT id, auth_code, auth_name FROM auth_repository ODER BY id DESC;
DESC는 내림차순, ASC는 오름차순이다. 정렬 기준 값을 두개를 줄 수 있는데 ODER BY id DESC, auth_code ASC라고 하면 id를 내림차순으로 정렬하고 같은 id 내에서 auth_code 값을 오름차순으로 정렬하라는 의미이다. SELECT 뒤에 자주 쓰는 WHERE 절을 붙여 조건을 달 수 있다.
SELECT * FROM auth_repository WHERE id = ‘삭제’;
LIKE를 써서 특정 문자가 들어간 정보를 불러올 수 있다.
SELECT * FROM auth_repository WHERE id LIKE ‘%제%’;
1.2. INSERT,UPDATE,DELECT
auth_repository 테이블은 컬럼값(표에서 id, auth_code, auth_name같은 값을 컬럼이라 한다)이 적으므로 dummy_table을 만들어본다.
CREATE TABLE dummy_table(
did int not null,
dname varchar(30),
jab varchar(50),
reg_date date,
reg_id varchar(20),
upd_date date,
upd_id varchar(20),
del_yn varchar(1)
);
commit;
앞에서 설명했지만 이렇게 만든 테이블에 데이터를 넣으려면 INSERT 문을 사용해야한다. INSERT문은 기본 구조가 INSERT INTO 테이블 이름 (컬럼 값1, 컬럼 값 2…) VALUES (값1, 값2…)이다. 위의 테이블에 데이터를 넣을 INSERT 문을 예로 들만 아래와 같다.
insert into dummy_table (did, dname, jab, reg_date, reg_id, del_yn) values (1, '신명현', '개발자', sysdate, 'bongbong3', 'N');
SQL문은 대문자 소문자를 같게 인식한다. 이렇게 INSERT 문을 쓰고 반드시 COMMIT을 해줘야 데이터가 들어간다. 반대로 말하자면 COMMIT을 하지 않으면 언제든지 되돌릴 수 있다. 되돌리는 명령어는 ROLLBACK 이다.
이렇게 INSERT 문으로 입력한 데이터를 수정할 때가 있다. UPDATE 문을 쓰면 데이터를 수정할 수 있다. UPDATE 문은 UPDATE 테이블 이름 SET 변경할 커럼명 = 값 WHERE 조건이다.
UPDATE dummy_table SET dname = ‘쿠팡’ WHERE did = 1;
did = 1인 데이터의 dname을 쿠팡으로 바꾸라는 UPDATE 문이다. 이때도 COMMIT;을 해줘야 데이터 수정이 확정된다. 그리고 테이블에 컬럼 del_yn이 있었다. 이 del_yn의 값을 UPDATE 함으로써 주로 삭제한다.
UPDATE dummy_table SET del_yn = 'Y' WHERE did = 1;
그러면 다음과 같은 SELECT 문에 did가 1인 값은 조회되지 않는다.
SELECT * FROM dummy_table WHERE del_yn = ‘Y’;
실제 데이터를 삭제하는 것은 DELETE 문이지만 실무에서는 사건 사고가 많이 나기 때문에 DELETE문을 아예 권한을 안주기도 한다. DELETE 문은 간단한 구조로 DELETE FROM 테이블 명 WHERE 삭제하고자하는 데이터 조건 이다. 예를 들어 dummy_table에 dname 삼성인 데이터를 넣었고 삼성 데이터를 지우고자 한다면 다음과 같다.
DELETE FROM dummy_table WHERE dname = '삼성';
COMMIT을 하기 전에 데이터를 살릴 기회가 있다. ROLLBACK 하면 삭제된 데이터도 살아난다. 그러나 COMMIT을 하면 ROLLBACK을 해도 삭제된 데이터는 돌아오지 않는다.
2. 데이터베이스 스키마 컬럼 로우
에서 데이터베이스의 테이블을 표같다고 말했는데 그 표를 다시 가져와 보자
여기서 세로 줄을 열이라고 하는데 컬럼이라고 한다. 데이터 속성을 뜻한다.
그리고 INSERT하면 데이터가 들어오는 가로줄이 행, 로우라고 한다. 개별 데이터를 뜻한다.
데이터 유형으로는 INT, VARCHAR2, DATE가 있다.
크게 DATABASE가 있고 그 안에 DATABASE MANAGEMENT SYSTEM이 있다. 그리고 그 안에 DB가 있다.
DATABASE>DATASE MANAGEMENT SYSTEM
다시말하면 DATABASE가 있고 그 안에 SCHEMA가 있고 스키마는 TABLE이 모여 이루고 있다. 그리고 그 TABLE은 COLUMN과 ROW로 이루어져 있다.
DATABASE(Oracle)>SCHEMA>TABLE>COLUMN, ROW