CS/Database
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/9TYk7/btrn4rPeutL/NFnXZvh53o7XRK1Vrr7ut1/img.png)
![](https://tistory1.daumcdn.net/tistory/4410912/skin/images/no-image.jpg)
이상 현상이란? 테이블을 설계할 때 잘못 설계하여 데이터를 삭제,수정,삽입할 때 논리적으로 오류가 생기는 것 대부분 이상현상이 발생하는 데이터의 중복성때문인데 이를 제거하는 과정이 정규화 1. 삽입 이상 자료를 삽입할 때 의도하지 않은 자료까지 삽입해야만 자료를 테이블에 추가가 가능한 현상입니다. 강의를 아직 수강하지 않은 새로운 학생을 삽입할 경우 강의코드 속성에는 null값이 들어가야 하는 문제가 생깁니다. 2. 갱신 이상 중복된 데이터 중 일부만 수정되어 데이터 모순이 일어나는 이상입니다. 강의코드가 "AAC3"인 서준호의 전화번호를 수정할 경우, 3번째 튜플의 데이터만 수정될 것입니다. 그러면 3,4번째 튜플은 같은 사용자의 데이터 인데도 불구하고 전화번호가 다르게 됩니다. 3. 삭제 이상 어떤 ..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/wFas8/btrn14mCxbc/fgYh0K2RUfpVol8u0CAJGK/img.png)
![](https://tistory1.daumcdn.net/tistory/4410912/skin/images/no-image.jpg)
트랜잭션이란? DBMS에서 하나의 최소한의 작업 단위이다. 여러 사람이 데이터베이스를 동시에 사용하더라도 데이터에 문제가 없어야 한다. 원자성, 일관성, 격리성, 지속성 = ACID가 지켜져야 함. ex) 입출금 시스템 ACID 특성 원자성(Atomicity) : 트랜잭션이 수행하는 연산들을 모두 정상적으로 처리하거나 모두 처리하지 않아야 한다는 all-or-nothing 방식 일관성(Consistency) : 데이터베이스의 데이터는 일관된 상태를 유지해야 한다. ( = 미리 정의된 규칙에만 수정이 가능해 숫자 컬럼에 문자열값 X) //트랜잭션의 결과가 제약 조건을 해치면안된다. 격리성(Isolation) : 하나의 트랜잭션이 완료될 때까지 다른 트랜잭션이 간섭하지 못하도록 하여 각각의 트랜잭션이 독립적..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/z8n30/btrnN1bULes/wH3BNfQjyXVncrG9JOJloK/img.png)
![](https://tistory1.daumcdn.net/tistory/4410912/skin/images/no-image.jpg)
DB란 데이터베이스란 여러 사람이 공유해 사용할 목적으로 통합, 관리하는 데이터의 집합이다. DBMS란? DataBase Management System의 약자로 데이터베이스를 관리하는 시스템이다. 사용자와 DB사이에서 사용자의 요구에 따라 데이터를 생성해주고 DB를 관리해주는 소프트웨어이다. 테이블 간에 관계가 없다. 데이터에 대한 많은 보안을 제공하지 않고 정규화를 수행할 수 없어 데이터는 높은 중복성을 가질 수 있다. ex) Sybase, dase , Microsoft Access RDB(Relational DataBase) RDB는 관계형 데이터 모델에 기초를 둔 데이터 베이스 테이블 간에 관계가있음. RDBMS RDB를 생성하고 수정하고 관리할 수 있는 소프트웨어이다. 테이블이 서로 연관되어 있..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/bncI8e/btrdnjURMxz/gaczQdWXyFRJ2TCab0P5qk/img.png)
![](https://tistory1.daumcdn.net/tistory/4410912/skin/images/no-image.jpg)
의사컬럼이란? 의사컬럼이란 테이블의 컬럼처럼 동작하지만 실제로 테이블에 저장되지는 않는 컬럼을 말한다. SELECT문에서는 사용할 수 있지만 INSERT, UPDATE, DELETE 할 수는 없다. 1. ROWNUM ROWNUM은 쿼리에서 반환되는 각 로우들에 대한 순서 값을 나타내는 의사컬럼이다. [입력] SELECT ROWNUM, employee_id FROM employees; [출력] ROWNUM EMPLOYEE_ID 1 100 2 101 3 102 2. ROWID 테이블에 데이터가 많으면 SELECT만 해도 결과가 나올 때까지 시간이 많이 소요된다. 이 떄 ROWNUM을 사용해서 특정 범위만 추출한다면 시간을 절약할 수 있다. ROWID는 테이블에 저장된 각 로우가 저장된 주소 값을 가리키는 의..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/byMfxH/btrdpMB6UzT/GcwiIq5Z8hJti3rAHC1FA0/img.png)
![](https://tistory1.daumcdn.net/tistory/4410912/skin/images/no-image.jpg)
SELECT문이란? 가장 기본적인 SQL문으로 테이블이나 뷰에 있는 데이터를 조회할 때 사용하는 문장이다. SQL문 중 사용빈도로 볼 때 가장 많이 사용하는 것이 SELECT문이며, 기본 구문은 다음과 같다. SELECT * 혹은 컬럼 FROM [스키마.]테이블명 혹은 [스키마.]뷰명 WHERE 조건 ORDER BY 컬럼; 데이터를 조회한다는 것은 어디에서(WHERE), 어떤 데이터(WHAT)를 가져올 것인지로 구분할 수 있다. 이떄 '어디에서'(테이블 혹은 뷰에서)에 해당하는 내용을 FROM절에서, '어떤 데이터'에 해당하는 내용을 SELECT절에 기술해 준다. 그리고 '어떤 데이터'는 다시 어떠한 조건에 맞는 데이터인지를 식별해야 하는데,, 이 조건을 기술하는 부분이 바로 WHERE절이다. 예를 들어..
![](https://tistory1.daumcdn.net/tistory/4410912/skin/images/no-image.jpg)
1. SELECT count(*) = 집계 count(컬럼명) ROWNUM ROWNUM() over( 정렬 ) 2. ORDER BY ORDER BY (컬럼명) (ASC -오름차순 기본) ORDER BY (컬럼명) DESC - 내림차순 ORDER BY NAME, DATETIME DESC - 여러개 정렬 3. GROUP BY SELECT [GROUP BY 절에 지정된 컬럼1] [GROUP BY별로 집계할 값] FROM [테이블 명] GROUP BY [ 그룹으로 묶을 컬럼 값 ] HAVING [조건 추가] ; 4. WHERE WHERE (컬럼명) = '문자' WHERE (컬럼명) = 숫자 1) 비교연산자 사용 = , >= ,