DataBase (12) 썸네일형 리스트형 view 1. view 데이터베이스를 다룰 때, 복잡한 쿼리문을 매번 사용하게 될 경우, 불편함이 수반되고 생산성도 저하된다. 이때 복잡한 쿼리문을 통해 얻어진 결과를 뷰를 통해 생성해 놓으면, 뷰를 통해 그 결과를 얻을 수 있다. 사실 뷰는 복잡한 쿼리문의 결과 그 자체를 갖고 있는 것이 아니다. 뷰는 해당 쿼리문을 갖고 있는 것이다. 그리고 뷰를 실행하면 뷰가 갖고 있는 쿼리문이 실행되어 결과를 가져오는 것이다. use test_db; create table test_table1000( data1 int, data2 int not null, constraint pk1 primary key (data1) ); create table test_table2000( data1 int not null, data3 in.. sequence, limit 1. sequence 컬럼에 로우를 추가할 때, 로우에 증가하는 값이 자동으로 저장되는 것을 시퀀스라고 한다. 이 시퀀스는 데이터베이스 마다 사용법이 다르므로 주의해야한다. mysql은 auto_increment 키워드를 설정해주면 시퀀스를 구현할 수 있다. 시퀀스를 구현할 때 주의할 점은, 데이터를 insert 할 때 auto_increment를 설정한 컬럼은 제외해야한다. create table test_table100( data1 int auto_increment, data2 int not null, data3 int not null, constraint pk1 primary key(data1) ); insert into test_table100 (data2, data3) values (100, 2.. constraint 1. constraint 컬럼에 저장될 데이터의 조건을 설정해주는 것이 제약조건(constraint)이다. 제약조건이 설정되면, 조건에 위배되는 데이터가 저장될 수 없으므로 데이터의 무결성을 보장할 수 있다. primary key 컬럼에 중복된 데이터를 저장할 수 없음. null 값을 허용하지 않음. 주로 로우의 구분을 위한 유일한 값을 저장하는 컬럼에 사용. 기본키 foreign key 특정 테이블(해당 테이블, 다른 테이블)의 기본키 컬럼에 저장되어 있는 값만 저장할 수 있도록 함. 지정된 테이블의 기본키 컬럼을 참조하고, 그 참조된 컬럼에 저장된 값만 저장할 수 있음. null 값을 허용함. 참조키, 외래키 not null null 값을 허용하지 않음. 쿼리문을 통해 반드시 값이 지정되어야 함. u.. transaction 1. transaction 데이터베이스에서 데이터 처리의 한 단위를 트랜젝션이라고 부른다. 대부분의 데이터베이스는 데이터를 저장, 수정, 삭제하는 등의 작업을 물리적인 하드디스크에 저장된 데이터에 반영하지 않는다. 개발자의 실수로 잘못된 명령문을 실행하였을 때 되돌릴 수 있어야 하기 때문이다. 이러한 안전장치로 커밋이라는 절차가 존재하며, 커밋이라는 작업 전에는 실행한 명령문이 메모리 상에서만 적용되고 물리적인 하드디스크에 저장된 데이터에는 반영되지 않는다. 데이터 작업을 위한 명령문 입력부터 커밋까지를 하나의 트랜젝션이라고 부른다. 2. rollback 데이터 저장, 수정, 삭제 등의 작업을 하고 난 뒤, 원래의 데이터로 되돌리는 작업을 의미한다. 커밋 후에는 rollback 작업을 해도 원래의 데이터.. 데이터베이스 관리 1. 데이터베이스 생성 데이터베이스는 create database 구문을 통해 생성할 수 있다. create database 데이터베이스명 character set = 'utf8' collate = 'utf8_general_ci'; create database test_db character set = 'utf8' collate = 'utf8_general_ci'; 2. 테이블 생성 테이블 생성은 create table 구문을 통해 생성할 수 있다. create table 테이블명 (컬럼명 자료형 제약조건, 컬럼명 자료형 제약조건 .... ); 자료형 의미 비고 char(n) 고정길이 문자열 속도가 빠르다. 그러나 최대길이 지정 후 최대 공간을 무조건 할당 하기 때문에, 불필요한 공간을 차지할 수 있음... set 1. set set은 집합연산을 말한다. 두 개의 select문을 통해 가져오는 결과들에 대해 합집합, 교집합, 차집합의 연산을 하여 데이터를 가져올 수 있게 한다. 집합연산을 위해서는 두 select문을 통해 가져오는 컬럼이 동일해야한다! 합집합: union(중복되는 데이터는 제외), union all(중복되는 데이터를 모두 가져옴) 교집합: join문을 이용한다. 차집합: 두 select문에서 중복되는 부분을 제거하고, 첫번째 select 문의 결과만 가져온다. 서브쿼리문을 이용. -- 합집합 select emp_no from titles where title = 'Senior staff' union select emp_no from titles where title = 'staff'; select .. 서브 쿼리문 1. 서브쿼리문 쿼리문 안에 또 다른 쿼리문이 있는 것을 서브쿼리문이라고 한다. 조건문 등을 작성할 때, 값을 직접 지정하지 못할 경우, 서브쿼리문을 통해 값을 구하고 조건문을 완성한다. 서브쿼리문을 사용해야하는 상황 중 여러 경우는 join문으로도 해결 가능하다. 서브쿼리문, join문 중 정답은 없으므로 상황에 따라 자유롭게 사용할 수 있도록 경험이 필요할 것 같다. -- 현재 받는 급여액의 평균보다 많이 받는 사원들의 사원번호, 급여액을 가져온다. select emp_no, salary from salaries where salary > (select avg(salary) from salaries where to_date = '9999-01-01') and to_date = '9999-01-01';.. join문 1. join 문 데이터베이스의 데이터 중복을 최소화하기 위해서는 필연적으로 테이블을 여러개로 분리 시켜야한다. 분리된 여러 테이블에 존재하는 데이터들을 하나의 결과로 가져오기 위해서는 join문을 사용해야한다. select 테이블1.컬럼1, 테이블1.컬럼2, 테이블2.컬럼3 from 테이블1, 테이블2 join문을 사용할 때에는 사용되는 두 테이블의 공통된 컬럼에 대해서 동일한 데이터만을 가져오라는 조건문을 반드시 달아줘야한다. 이때 공통된 컬럼이라 함은, 컬럼명이 아닌 컬럼의 데이터가 같은 의미인 것이다. -- 각 사원들의 사원번호, 근무 부서 번호, 근무 부서 이름을 가져온다. 사원번호를 기준으로 오름차순 정렬한다. select a2.emp_no, a2.dept_no, a1.dept_no, a1.d.. 이전 1 2 다음