* DBMS 내에 있는 많은 데이터를 검색하기 위하여 SELECT 문을 사용한다.
가장 간단하게 검색하는 방법은 내용을 보기를 원하는 각 투플의 속성을 명시하여 테이블별로
검색할수있다. 또한, 조건을 WHERE 문에 첨가하여 조건을 만족하는 데이터의 내용을 조회할 수 있다.
조건을 사용하여 검색하고자 할 경우, “SELECT 속성_리스트 FROM 테이블명 WHERE 조건”을 사용한다.
* SELECT문을 사용하여 조건을 작성하는 방법에 대하여 학습하였다. 검색조건을 정확히 모르거나,
부분적으로 일치하는 데이터를 검색하고자 할 경우, LIKE를 사용하였고,
속성의 값이 NULL 값과 일치하는지 확인하기 위하여 IS NULL, 일치하지 않는지 확인하기 위하여
IS NOT NULL을 사용하였다.
이와 같은 조건문은 일반적인 프로그래밍 언어에서는 제공되지 않는 형식으로 SQL 문을 사용할 때만
사용되고, 원하는 데이터를 검색할 때 유용하게 사용된다.
검색 조건을 정확히 모르거나 부분적으로 일치하는 데이터를 검색하는 경우에 LIKE를 사용한다.
속성의 값이 입력되지 않아 NULL로 저장된 경우, NULL과 같은지를 비교하기 위하여 IS NULL을 사용하고, NULL과 다른지를 비교하기 위하여 IS NOT NULL을 사용한다.
* 검색한 결과 테이블의 내용을 사용자가 원하는 순서로 출력하기 위하여 ORDER BY 키워드를 사용하고, 오름차순으로 정렬하기 위하여 ASC, 내림차순으로 정렬하기 위하여 DESC를 사용한다.
또한, 데이터에 대하여 집계함수를 사용하여 속성 값의 개수, 합계, 평균, 최댓값, 최솟값의 계산을 수행할 수 있다.
ORDER BY 키워드는 결과 테이블의 내용을 사용자가 원하는 순서로 출력하기 위하여 사용한다.
집계함수는 속성 값의 개수, 합계, 평균, 최댓값, 최솟값을 계산하기 위하여 사용한다.
* 특정 속성의 값이 같은 투플을 모아 그룹을 만들어 검색하는 방법과 그룹에 대하여 조건을 주가하는 방법에 대하여 살펴보았다.
또한, 조건을 추가할 때에 집계함수를 사용하는 방법도 살펴 보았다.
이러한 그룹별 검색 방법을 이용하면, 데이터베이스로부터 데이터를 검색한 후에 사용할 때,
특별한 작업을 수행하지 않고 바로 사용할 수도 있어서 아주 편리한 기능입니다.
GROUP BY 키워드를 사용하여 특정 속성의 값이 같은 투플을 모아 그룹을 만들어 검색할 수 있다.
GROUP BY를 사용하여 그룹을 만들 때, HAVING 키워드를 사용하여 조건을 명시할 수 있고,
조건에 집계함수를 사용할 수 있다.
* 여러 개의 테이블을 연결하여 데이터를 검색하는 조인 검색에 대하여 살펴보았다.
이 조인 검색은 외래키의 특성인 부모 테이블과 자식 테이블의 관계를 이용한 것으로 하나의 질의문에서 부모 테이블과 자식 테이블의 내용을 같이 검색함으로써 쉽게 결과를 얻을 수 있었다.
또한, MySQL에서 사용하는 데이터 타입에 대하여 살펴보았는데, 속성의 도메인을 만들 때
유용하게 사용될 수 있다.
여러 개의 테이블을 연결해주는 속성인 조인 속성을 이용하여 원하는 데이터를 여러 테이블로부터
검색할 수 있다. 조인 속성은 외래키를 사용하며, 반드시 사용되는 속성 값의 도메인은 같아야 한다
* 질의문의 결과 테이블을 이용하여 다시 검색하는 방법이 부속질의문을 사용한 검색방법 이다.
부속 질의문을 사용하여 먼저 질의하고, 결과 테이블이 반환되면, 상위질의문에서 다시 검색 조건을
사용하여 검색하게 된다.
또한, 속성의 날짜와 숫자에 대한 데이터 타입을 이용하여 속성 값에 적당한 도메인을 지정할 수 있다.
상위 질의문과 부속 질의문은 질의문이 다른 질의문을 내포하는 질의문이다.
이런 질의문 구조를 이용하면 일반 질의문에서 만들기 어려운 조건을 쉽게 만들 수 있다.
숫자와 날짜 데이터 타입은 여러 개 존재하며 사용하고자 하는 데이터의 크기에 따라 적당한
데이터 타입을 선언하여 사용하여야 한다.
* 검색 후 결과 데이블의 투플의 수를 제한하는 방법을 살펴보았다. 또한, 검색 결과를
파일에 저장하는 방법으로 질의문 내에서 파일을 지정하는 방법과 시스템 프롬프트상에서 질의하여
결과를 파일에 저장하는 방법에 대하여 살펴 보았다.
목적에 맞게 이러한 방법들을 유용하게 사용할 수 있을 것 이다.
질의문을 만들 때 다수의 테이블이 포함될 경우, 테이블에 대한 별명을 만들면 보다
질의문의 길이를 줄일 수 있다.
출력 테이블에 표시되는 각 열의 제목을 이해하기 쉽게 하기 위하여 별명을 만들면,
보다 효율적인 질의문을 작성할 수 있다.
검색 결과의 투플의 수를 제한하기 위하여 LIMIT 키워드를 사용한다.
검색 결과를 파일에 저장하기 위하여 질의문에 명시할 수도 있고, 시스템 프롬프트 상에서 질의를
수행하고 결과를 저장할 수 도 있다.
* 데이터를 테이블에 삽입하는 방법은 매우 간단하다. 투플을 직접 삽입하는 방법과 부속 질의문을
사용하여 투플을 삽입할 수 있다.
데이터베이스에 데이터를 삽입하는 과정은 사용자 입장에서는 간단하지만, DBMS는
무결성 제약 조건을 위배하는지 확인한 후에 삽입과정을 거치게 된다.
데이터베이스의 장점인 데이터 중복성을 피하고, 무결성인 데이터를 유지하기 위한 작업은
실제로 DBMS내에서 수행되지만, 기본적인 데이터는 사용자가 만들어 제공하여야 한다.
삽입 명령어인 INSERT를 사용하여 데이터를 삽입할 때, 입력하는 데이터가 정의된 테이블에 적합한지
검토하는 것이 최소한의 사용자가 하여야 할 작업 이다.
데이터를 테이블에 삽입하기 위하여 INSERT 키워드를 사용한다.
데이터를 테이블에 삽입하는 방법으로 투플을 직접 삽입하는 방법과 부속 질의문을 이용해
투플을 삽입하는 방법이 있다.
* 데이터를 수정하고 삭제할 때, 여러 가지 주의사항이 있다. 특히, 중요한 것은 한번 수정되거나
삭제된 데이터는 복구할 수 없고, 조건에 맞아 선택된 모든 투플이 한번에 적용된다. 따라서,
수정 및 삭제를 원하는 투플만 선택될 수 있도록 조건을 반드시 만들어 주어야 한다.
데이터를 수정은 복구 될 수 없고, 선택된 모든 투플이 동시에 적용된다.
삭제된 데이터는 복구가 안되며, 다른 테이블에서 참조하는 테이블의 데이터는 삭제에 제한이 있다.
* SQL에서 제공하는 내장함수의 종류에 대하여 살펴 보았다. 내장함수를 사용할 수 있는 곳은
SELECT절, WHERE절과 UPDATE의 SET 절에서만 사용할 수 있다.
그 의미는 데이터 검색과 수정시에만 사용된다는 것 이다. 데이터 검색시 내장함수를 이용하여
원하는 데이터를 쉽게 검색할 수 있다면, 보다 효율적으로 데이터베이스를 이용할 수 있을 것 이다.
SQL에는 데이터베이스를 편리하게 사용하기 위하여 내장함수를 제공한다.
데이터 타입은 연산자에 따라 자동으로 변환되기도 하지만, 명시적으로 변환하여 사용하는 것이 좋다.
내장함수는 데이터 검색과 수정을 위하여 사용한다.
* MySQL에서 제공하는 날짜, 시간 및 수학과 관련된 내장함수를 살펴 보았다. 기본적으로 제공하는
정보로부터 사용자에게 필요한 정보만을 추출하거나 변경하는 기능이 있었다.
예제에서는 간단한 사용법만 예로 들었지만, 실제로 질의하여 원하는 결과를 받을 때, 내장 함수를 통하여 원하는 형태로 변경하여 사용할 수 있다.
날짜와 시간의 데이터를 사용하고자 하는 목적에 따라 일부 정보를 추출하기 위하여 날짜와 시간
내장함수를 사용한다.
기본적인 수학적인 기능은 데이터 검색시 사용하기 위하여, 수학 내장함수를 사용한다.
* MySQL에서는 많은 문자열 함수를 제공하고 있다. 대부분의 문자열 함수는 유효한 데이터 값을 바꾸지 않고, 위치 검색이나 표시 변환등의 기능을 제공하고 있다.
실제로 내장함수가 사용되는 용도의 대부분은 SELECT 절과 WHERE절이므로, 데이터 자체를 변환하는 것은 필요 없기 때문에 제공하는 기능도 출력을 위한 변환 정도다.
이러한 기능을 잘 이용하면, 검색한 데이터를 쉽게 사용할 수 있을 것 이다. 또한, 데이터 자체가
문자열과 숫자의 구분이 명확하지 않게 사용되기 때문에, 특별한 타입 변환은 필요하지 않을 수 있지만, 명확하게 데이터 타입을 지정하여 변환하는 것도 필요한 작업이다.
문자열 내장 함수는 문자열을 비교하여 검색하기 위한 내장 함수와 검색된 데이터내의 문자열을 처리하는 내장함수로 구분할 수 있다.
DBMS는 자동적으로 데이터 타입을 변환하는 기능을 가지고 있지만, 명시적으로 변환하기 위한 내장함수를 제공한다.