본문 바로가기

Learning

제약조건의 추가 및 수정 클래스 테이블 생성 1 2 3 4 CREATE TABLE class ( cno VARCHAR2(2), cname VARCHAR2(50) ); cs 테이블에 새 행을 입력 1 2 3 INSERT INTO class VALUES ('01','데이터베이스'); INSERT INTO class VALUES ('02','자바'); SELECT * FROM class; cs 학생 테이블 생성 1 2 3 4 5 CREATE TABLE student( sno VARCHAR2(4), sname VARCHAR2(50), cno VARCHAR(2) ); cs 학생 테이블에 새 행을 입력 1 2 3 4 5 INSERT INTO student VALUES ('0414','홍길동','01'); INSERT INTO student.. 더보기
제약조건 (constraints) 제약조건: 테이블 단위에서 데이터의 무결성을 보장해주는 규칙. 테이블에 데이터가 입력, 수정, 삭제되거나 테이블이 삭제, 변경될 경우 잘못된 트랜잭션이 수행되지 않도록 결함을 유발할 가능성이 있는 작업을 방지하는 역할을 담당. 무결성: 정보가 원 그대로 변형되지 않고 전달되는 성질. 원래의 정보 또는 신호가 전송/저장/변환 중에 또는 그 후에도 동일함을 유지하는 것 오라클에서 제공되는 제약조건 NOT NULL: 열이 NULL값을 포함할 수 없음 UNIQUE KEY (UK)-고유키: 테이블의 모든 행에서 고유한 값을 갖는 열 또는 열조합을 지정 PRIMARY KEY (PK)-기본키: 해당 열은 반드시 존재하고 유일해야 함. NOT NULL, UK제약 조건 결합한 형태 FOREIGN KEY (FK)-외래키:.. 더보기
테이블 만들고 삭제하기 CREATE: 테이블 만들기 1 2 3 4 CREATE TABLE ex_date( --테이블 이름 ex_id NUMBER(2), --열의 이름, 데이터 타입 start_date DATE DEFAULT sysdate); --디폴트는 입력 안될시 디폴트 뒤의 값으로 cs 1 2 3 4 5 6 7 8 INSERT INTO ex_date(ex_id) VALUES (1); INSERT INTO ex_date(ex_id) VALUES (2); INSERT INTO ex_date(ex_id) VALUES (3); commit; SELECT * FROM ex_date; cs 1 DESC ex_date; cs 널?은 제약조건을 말하는데 현재는 없는 상태라서 비워져 있음 DROP: 테이블 삭제하기. 테이블 전체를 삭제, .. 더보기
오라클 SQL의 데이터타입 문자형 char 와 varchar2: char는 고정 길이 데이터 타입. 다 채우지 않았을 경우 공백이 있고, varchar2는 가변 길이 데이터 타입. 다 채우지 않았을 경우 공백이 없음. comp 테이블을 만들고 char_col 과 varchar_col 열 만들기. 데이터타입은 CHAR(4), VARCHAR2(4) 1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE comp ( char_col CHAR(4), varchar_col VARCHAR2(4)); INSERT INTO comp VALUES ('AA', 'AA'); INSERT INTO comp VALUES ('AAA', 'AAA'); INSERT INTO comp VALUES ('AAAA', 'AAAA'); commit; SEL.. 더보기
데이터 조작어(DML) - DELETE (데이터의 삭제) DELETE: 데이터의 삭제 71번~75번 부서번호 삭제 1 2 3 DELETE FROM departments WHERE department_id BETWEEN 71 AND 75; commit; Colored by Color Scripter cs 직원 테이블 id 1,2 삭제 1 2 3 DELETE FROM employees WHERE employee_id IN (1,2); commit; cs 데이터 전체를 삭제: rollback 가능 (데이터만 삭제되고 테이블은 남아있음) 1 2 DELETE FROM copy_departments; rollback; cs TRUNCATE TABLE: 전체 삭제인데 rollback이 안됨 1 2 TRUNCATE TABLE copy_departments; rollback;.. 더보기
데이터 조작어(DML) - UPDATE (데이터의 갱신 UPDATE: 테이블에 있는 행의 내용을 갱신하는 명령어 1 2 3 UPDATE 테이블 SET 컬럼=값 [, 컬럼=값,...] [WHERE 조건]; cs 업데이트 사용시 where 절에 항상 기본키를 활용한다. 1 2 3 4 5 6 7 8 CREATE TABLE copy_emp AS SELECT * FROM employees; UPDATE copy_emp SET salary = 24100 WHERE employee_id = 100; COMMIT; cs 의도치 않게 이름이 같은 사람들이 업데이트됨 (Steven이 두명이므로 기본키로 조건을 거는게 좋다) 1 2 3 4 UPDATE copy_emp SET salary = 24100 WHERE first_name = 'Steven'; COMMIT; cs Whe.. 더보기
데이터 조작어(DML) - INSERT 데이터의 입력 DML: 데이터베이스에 데이터를 입력, 수정, 삭제하는 명령어 INSERT: 테이블에 새로운 행을 입력하는 명령어 실행전 열과 제약조건을 확인 (DESC+테이블. DESC:describe의 약자) 1 DESC departments; cs 전체 열을 다 입력하는 방법 1 1 2 3 INSERT INTO departments (department_id, department_name, manager_id, location_id) VALUES (71, '개발부 1', 100, 1700); cs 입력되었는지 확인 1 2 SELECT * FROM departments; cs COMMIT으로 저장 1 COMMIT; cs 열의 이름이 없는 경우 전체 열을 다 입력해야 함 1 2 INSERT INTO department.. 더보기
트랜잭션 데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위. 반드시 동시에 실행(COMMIT)되거나 취소(ROLLBACK)됨 COMMIT: 모든 DML작업을 수행한 후 작업을 완료할 때 반드시 필요. COMMIT명령을 수행해야지만 실제 하드디스크에 저장 ROLLBACK: 트랜잭션의 실행을 취소하였음을 알리는 연산자. 트랜잭션이 수행한 결과를 원래의 상태로 원상 복귀시킴. ROLLBACK을 실행하면 DML작업에 의해서 변경된 정보를 이전 정보로 환원. SAVEPOINT: 현재 트랜잭션 내에 저장점을 만듦. ROLLBACK TO SAVEPOINT_name명령으로 SAVEPOINT를 지정해놓은 지점으로 되돌아감. 더보기
집합연산자 (UNION, INTERSECT, MINUS) 집합 A(1,2,3), B(3,4,5)가 있다고 가정 UNION ALL : (1,2,3,3,4,5) 합집합. 중복을 포함한 결과의 합 검색 UNION: (1,2,3,4,5) 합집합. 중복을 제거한 결과의 합을 검색 INTERSECT: (3) 교집합. 양쪽 모두에서 포함된 행을 검색 MINUS: (1,2) 차집합. 첫 번째 검색 결과에서 두 번째 검색 결과를 제외한 나머지를 검색 1 2 3 4 SELECT 문 [UNION | UNION ALL | INTERSECT | MINUS] SELECT 문 [ORDER BY 컬럼 [ASC/CESC]; cs UNION: employees 테이블의 employee_id, job_id와 job_history 테이블의 employee_id, job_id를 중복을 제외하고 합.. 더보기
서브쿼리 - 다중열 여러 개의 컬럼을 검색하는 서브 쿼리 1 2 3 SELECT [DISTINCT] 컬럼, 컬럼... FROM 테이블 WHERE (컬럼1, 컬럼2,...) IN (SELECT 컬럼1, 컬럼2,... FROM 테이블); cs first_name이 'Bruce'인 직원의 manager_id와 job_id가 같은 직원들을 조회. 단 first_name이 Bruce인 직원 정보는 제외 (first_name이 Bruce인 직원의 manager_id는 103, job_id는 IT_PROG) 1 2 3 4 5 6 SELECT employee_id, first_name, job_id, salary, manager_id FROM employees WHERE (manager_id, job_id) IN (SELECT manag.. 더보기