본문 바로가기

Study/데이터 베이스

[DBMS 강의 - 15] 데이터 삽입 심화 (SELECT INTO, INSERT SELECT) SELECT INTO - 새로운 테이블을 만들고 해당 조회 결과를 테이블에 행으로 삽입한다. - SELECT INTO 문을 실행하려면 CREAT TABLE 권한이 있어야 한다. - 사용 구문은 다음과 같다. SELECT INTO new_table FROM { } [, ...n] WHERE - new_table : 데이터베이스 내에 존재하지 않는 새로운 이름이어야 한다. - select_list : 열 이름 또는 열 별칭을 사용해야 한다. - search_condition : 만약 해당 조건이 실패하면(FALSE) 데이터 없이 테이블 구조만 만들어진다. - 개념도는 다음과 같다. 왼쪽 테이블에서 name, reg_.. 더보기
[DBMS 강의 - 14] 데이터 수정 (UPDATE, DELETE) UPDATE - 테이블의 하나 이상의 열을 갱신하는 명령문이다. - 사용 구문은 다음과 같다. UPDATE table name SET column1 = value1 [ , column2 = value2, ... ] [ WHERE search_condition ] - column = value : 해당 그룹은 필요한 만큼 반복될 수 있다. (여러개 사용시 ',' 로 구분한다) - WHERE 절은 생략될 수도 있지만, 이 경우 모든 행이 일관적으로 갱신되기 때문에 주의가 필요하다. - UPDATE 문의 작동 원리를 그림으로 표현하면 다음과 같다. UPDATE문을 사용한 쿼리는 다음과 같은 종류가 있다. 우선 TableDft에 저장된 현재 정보들을 조회한다. 이후에 location 열이 서울시 이면 이를 부산.. 더보기
[DBMS 강의 - 13] 데이터 삽입 (INSERT) INSERT - 테이블에 한 행을 삽입하는 명령문이다. - 사용 구문은 다음과 같다. INSERT [ INTO ] table_name ( column_list ) VALUES ( value list ) [ , ..n ] - INTO : SQL 종류에 따라 생략을 할 수도 있으나 가급적 호환성을 위하여 써버릇 하는 것이 좋다. - column list : 쉼표로 구분된 하나 이상의 열 목록을 가리킨다. - value list : 각각의 값은 같은 위치의 열에 할당되며, 쉼표로 구분된 하나 이상의 값 목록을 가리킨다. 쉼표로 구분되어 반복될 수 있다. (즉, 하나의 INSERT 문으로 여러 행을 삽입할 수 있다) - INSERT 문의 작동 원리를 그림으로 나타내면 다음과 같다. INSERT 문을 사용한 SQ.. 더보기
[DBMS 강의 - 12] 집계 연산자 ROLLUP 연산자 - GROUP BY 절의 일부로 사용되어, 집계 값을 요약하는데 사용된다. - 사용 구문은 다음과 같다. GROUP BY ROLLUP ( simple_group_by_item [ , ...n ] ) - simple_group_by_item : 단순 GROUP BY 집계 행뿐만 아니라, 우측에서 좌측으로 집계 값들을 요약한 추가적인 행을 만들어 준다. - ROLLUP으로 요약된 행의 해당 열 값은 NULL이 된다. - 순서는 ROLLUP 결과와 결과 집합의 행 수에 영향을 미친다. - 개념도는 다음과 같다. 위의 개념도를 쿼리를 이용하여 구현하면 다음과 같다. simple_group_by_item 들인 buyer_id, product_id에 대해 우측(product_id)에서 좌측(bu.. 더보기
[DBMS 강의 - 11] GROUP BY / HAVING 때로는 데이터를 그룹화해서 값을 집계할 필요가 있는 경우가 많다. 예를 들면 모 회사의 시도별(서울시,세종시,강원도,충청도 등) 대리점들의 매출합산을 구하는 경우이다. 위와 같은 데이터를 조회할때는 GROUP BY절과 (SELECT의 WHERE 처럼) GROUP BY절의 행을 제약하는 HAVING 절을 배워야 한다. GROUP BY - 특정 열들을 그룹화하고 집계/요약하기 위하여 SELECT문에 포함하여 사용한다. - 사용 구문은 다음과 같다. GROUP BY simple_group_by_item [ , ...n ] - simple_group_by_item : 그룹화할 열 또는 열을 참조하는 연산식이다. - SELECT 문의 열 목록에 있는 집계식이 아닌 모든 열은 simple_group_by_item에.. 더보기
[DBMS 강의 - 10] 함수 DBMS를 사용하여 DB에 있는 데이터 그 자체를 조회하는 경우도 있지만, 때로는 데이터의 개수, 합계, 평균, 최대값, 최소값 등을 집계할 필요도 있다. 이런 경우 편리하게 사용할 수 있는 함수가 몇 가지 있다. COUNT 함수 - COUNT 함수는 행의 개수를 돌려준다. - 사용 구문은 다음과 같다. COUNT ( { * | [ [ ALL | DISTINCT ] expression ] } ) - (*) : 행 전체의 개수를 돌려준다. 열에 NULL이 포함된 행들 또한 포함된다. - expression : test, ntext, image를 제외한 형식의 식으로, 집계 함수와 하위 질의는 허용되지 않으며, 대부분의 경우에는 열 이름이 온다. - ALL : NULL이 아닌 값을 가지는 모든 express.. 더보기
[DBMS 강의 - 09] 유니온 유니온 - 둘 이상의 SELECT 문들의 결과 집합을 합성해서 하나의 결과 집합으로 만들어주는 연산자이다. - 복잡한 단일 SELECT 문보다 유니온 연산자를 이용하여 여러 개의 단순한 SELECT 문으로 분리하는 것이 때로는 더 효율적일 수도 있다. - 사용 구문은 다음과 같다. select_statment { UNION [ALL] select_statment } [ , ...n] - select_statment : 열들의 개수가 일치해야 되고, 대응되는 열들의 데이터 형식은 서로 호환성이 있어야 한다. (반드시 같을 필요는 없음) 최종적인 결과 집합의 열 제목은 첫 번째 select_statment의 것을 따르므로,첫 번째 select_statment의 열에는 반드시 열 이름을 부여해야 한다. - 기.. 더보기
[DBMS 강의 - 08] 하위 쿼리 단순 하위 쿼리 - 하위 쿼리(subquery)란 다른 명령문 (SELECT, INSERT, UPDATE, DELETE)에 포함된 SELECT문이며, 단순 하위 쿼리란 상관 하위 쿼리가 아닌 하위 쿼리를 가리킨다. - 하위 쿼리에 대해 유의할 사항은 다음과 같다. - 복잡한 쿼리를 일련의 논리적 절차로 분리하거나 다른 쿼리의 결과에 의존하는 쿼리를 만들 때 사용한다. - 하위 쿼리는 반드시 ( ) 로 둘러싸야 한다. - 하위 쿼리가 단일 값이나 값 목록을 돌려줄 경우, 이를 연산식이 오는 곳에 사용할 수 있다. 또한 하위 쿼리를 테이블이 오는 곳에 사용할 수도 있다. - 특수한 데이터 형식 (T-SQL의 text/image)의 여릉ㄹ 추출하는 하위 쿼리는 만들 수 없다. 라인 3의 하위 쿼리는 (SELE.. 더보기
[DBMS 강의 - 07] 테이블 조회_3 조인 * 굉장히 중요한 개념이지만 초보자가 보기에는 복잡한 측면이 있기 때문에 꼼꼼하게 읽을 필요가 있는 부분. - 조인이란, n 개 이상의 테이블들을 합성한 후, 여기서 자신이 원하는 정보를 추출하는 일련의 연산을 말한다. - 관계가 없는 테이블끼리의 조인도 가능하지만 비효율적이다. - 대부분의 경우에는 관계가 있는 테이블끼리 조인을 수행하고 이를 통해 통합적인 정보를 제공한다. - 너무 많은 테이블끼리의 조인은 성능이 떨어진다. - 조인에는 다양한 종류(크로스, 내부, 자연, 외부, 자체 등)가 있다. - 조인은 사실 한 테이블 내에 모든 정보를 가지고 있으면 되지만 DB의 정규화를 하게 되면 데이터가 분할되기 때문에 불가피한 과정이다 크로스 조인 - 상호 조인이라고 불리우기도 한다 - 두 테이블을 .. 더보기
[DBMS 강의 - 06] 테이블 조회_2 행 정렬 ( ORDER BY ) - 인덱스가 없다면 기본적으로 데이터는 행에 삽입된 순서대로 출력된다. - 행들을 특정 열(들)을 기준으로 정렬하고자 할 때 사용하는 연산자이다. - 사용 구문은 다음과 같다. ORDER BY { order_by_expression [ ASC | DESC ] } [, ... n] - order_by_expression : 정렬할 열을 지정한다. 열의 형식은 이름, 별칭, 연산식 등으로 지정할 수 있다. - order_by_expression 구문이 복수로 나올 때에는 첫 번째 것이 1차 정렬키, 두 번째 것이 2차, 다음이 3차.. 이런식으로 지정된다. - ASC | DESC : ASC는 오름차순, DESC는 내림차순 정렬이다. 기본값은 오름차 이기 때문에 ASC는 생략이.. 더보기
[DBMS 강의 - 05] 테이블 조회_1 SELECT - DB를 조회하는 가장 기본적인 명령문 - 데이터가 저장된 테이블에서 행과 열 전체 또는 일부를 추출해서 결과 집합(레코드 집합) 이라는 조회 결과를 보여줌 작동 원리 현재 아래와 같은 Customer 이라는 테이블이 있다. 위의 테이블에 나는 Title이 Mr.인 행들에 대하여 CustomerID, Title, Firstname, Phone 값만 추출하고 싶다. 추출후의 결과를 보면 다음과 같다. 이와 같이 SELECT 명령문은 해당 테이블 전체를 가져올 수도 있고 사용자가 원하는 특정 부분만을 추출할 수 있다. 열 제약 조건 모든 열 - 가장 단순한 형태의 SELECT 문이다. - '*' 문자를 사용한다. (해당 문자는 제약이 없다는 뜻으로 모든 열을 명시) USE AdventureWo.. 더보기
[DBMS 강의 - 04] 데이터 형식 데이터 형식 설명 용도 및 사용 예 CHAR(len) CHARACER(len) 고정 길이 문자열 주민등록번호 CHAR(14) VARCHAR(len) CHAR VARYING(len) CHARACTER VARYIN(len) 가변 길이 문자열 영문 이름 VARCHAR(30) NCHAR(len) NATIONAL CHAR(len) NATIONAL CHARACTER VARYING(len) 가변 길이 다국어 문자열 영문 이외 NCHAR VARYING(50) INTEGER INT 정수 큰 숫자 SMALLINT 작은 정수 작은 숫자 BIT(len) 고정 길이 비트열 0과 1을 표현 BIT(1) BIT VARYING(len) 가변 길이 비트열 비트 스트림 BIT(10) NUMERIC (precision, scale) DE.. 더보기
[DBMS 강의 - 03] SQL SQL Structured Query Language의 약자로, 관계형 DB의 데이터를 관리하고 자작하기 위한 언어라고 할 수 있다. 에쓰큐엘(S.Q.L)이라고도 말하고 역사적인 이유로 시퀄(Sequel) 이라고도 말한다. 기능 기능 설명 데이터 정의 저장된 데이터 및 저장된 데이터 항목들 사이의 관계를 구성하고 조직화할 수 있도록 해줌 데이터 추출 사용자 또는 응용 프로그램이 DB에 저장된 데이터를 추출하고 사용할 수 있도록 해줌 데이터 조작 사용자 또는 응용 프로그램이 DB에 이전에 저장된 데이터를 갱신, 삭제 또는 새로운 데이터를 삽입할 수 있도록 해줌 액세스 제어 사용자가 데이터를 추출, 삽입 및 갱신하는 것을 제한함으로써 허가되지 않은 사용자의 액세스를 방지할 수 있도록 해줌 데이터 공유 동시에.. 더보기
[DBMS 강의 - 02] 데이터베이스 종류 DB의 종류는 크게 비관계형과 관계형 DB로 나뉘어 진다. 현재는 대부분 관계형 DB 모델을 사용하고 있다. 비관계형을 사용하지 않는데에는 몇가지 이유가 있다. 우선 비관계형의 종류 부터 알아보자. 비관계형 데이터베이스 비관계형 DB의 대표적인 형태는 계층형과 망형 DB가 있다. 현재는 거의 사용하지 않지만 메인프레임 플랫폼에서는 코볼 프로그램과 연동하여 사용하기도 한다. 계층형 데이터베이스 - 데이터가 트리 형태로 계층적으로 저장되는 형태이다. - 가장 오래된 DBMS이다. - 각 계층 구조는 물리적인 포인터로 연결되며, 종속적이다. - 초기 구축 후 변경하기 어렵기 때문에 유연성이 떨어진다. - 검색 알고리즘이 비효율적일 수 있다. 망형 데이터베이스 - 계층형의 트리 형태를 망 형태로 확장한 것이다... 더보기
[DBMS 강의 - 01] DBMS DBMS DataBase Management System의 약자로 데이터의 집합인 데이터베이스(이하 DB)를 운영하는 S/W를 의미한다. 정확하게는 DBMS와 DB는 구별해야 하지만 실제로는 혼용하는 경우가 많다. DBMS와 DB의 관계를 그림으로 나타내면 다음과 같다. 필요성 위에서 말해듯이 DBMS는 필수로 설치해야 할 S/W가 아니다. 그러나 DBMS는 상당히 많은 기능을 제공하기 때문에 DB는 무조건 DBMS가 있어야 한다는 인식이 널리 퍼지게 되었다. 그렇기 때문에 DB와 DBMS 용어를 혼용하여 사용하는 경우가 많다. DBMS의 필요성은 다음과 같다. - 데이터의 무결성 - 데이터의 중복 방지 - 데이터의 비일관성 방지 - 데이터의 공유도 개선 - 데이터의 표준화 - 보안 강화 - 프로그램 수.. 더보기