이번에는 Select 명령을 이용한 데이터 검색에 대해 설명해 보겠습니다.
이제부터 모든것은 Mysql을 기준으로 설명하겠습니다.
Select 명령
SQL에서는 아래와 같이 기본적인 구조의 Select 명령어를 사용할 수 있습니다.
“SELECT * FROM 테이블명;"
이 구조를 가지고 계속 설명을 하겠습니다.
위 명령문을 가지고 mysql에서 실행시 테이블명에 해당하는 테이블에서 데이터를 검색하여 결과를 보여줍니다.
[그림 1. 명령어 실행 화면]
명령어들은 우리가 흔히 ‘질의' 또는 ‘쿼리'라고 부릅니다. 앞으로는 쿼리라는 명칭으로 통일하겠습니다. 그러면 위 그림에서 실행한 쿼리를 한번 살펴 보겠습니다.
예약어 | 테이블명 | |||
SELECT | * | FROM | exam01 | ; |
쿼리의 종류 | 모든 컬럼 | ~테이블로부터 | 테이블 명 | 쿼리의 마지막 |
[표 1. select 쿼리 구조]
SELECT는 SQL 명령 중 하나로 SELECT 쿼리를 실행하겠다는 의미입니다.
애스터리스크(*) 는 테이블의 모든 컬럼을 의미하는 메타 문자입니다.
FROM은 처리 대상 테이블을 지정하는 키워드입니다.
조회할 테이블 명을 입력합니다.
세미콜론 (;) 중요합니다. 쿼리의 마지막에 꼭 들어가야하며 세미콜론이 없이 쿼리를 실행할 경우 쿼리 작성 중으로 인식하여 실행이 되지 않거나 다른 쿼리와 구분이 되지 않아 에러가 발생할 수 있습니다.
SELECT 와 FROM은 데이터베이스의 예약어입니다.
또한 데이터베이스 객체는 이름을 붙여서 관리를 합니다. 예를 들어보면 [그림 1]에서 보는 것처럼 exam01이라는 테이블이 데이터베이스에 존재합니다. 여기서 동일한 이름의 테이블을 생성하면 ‘이미 테이블이 정의되어 있다.’는 에러가 발생합니다.
통상적으로 데이터베이스 객체명에는 예약어나 동일한 이름을 사용할 수 없습니다.
SQL에서는 예약어와 데이터베이스 객체명을 대소문자를 구별하지 않습니다. 예를 들면 아래의 표와 같은데 모두 동일하게 결과를 보여주는 쿼리입니다.
select * from exam01; | 소문자로만 작성 |
Select * From Exam01; | 대소문자 혼용 |
SELECT * FROM EXAM01; | 대문자로만 작성 |
[표 2. 쿼리의 대소문자 구별]
하지만 SQL 명령과 달리 많은 데이터베이스 제품들이 대소문자를 구별합니다.
지금 실습하기로한 Mysql 에서도 제가 지금 확인해보니 소문자로만 작성 했을 때 잘 작동하지만
테이블 명을 대문자나 대소문자를 혼용했을 경우 에러가 발생했습니다. 예약어는 대소문자 관계 없이 잘 작동했습니다. 실습에 사용한 버전은 Mysql 5.7입니다.
지금까지 쿼리의 구조와 사용에 대한 설명을 했습니다. 다음으로 실행한 결과 화면에 대한 이야기를 해보겠습니다.
첨부했던 이미지가 이제는 안보인것 같으니 아래 표로 결과를 한번 그려보겠습니다.
열(컬럼/필드) | ||||
id | name | birthday | address | 컬럼명 |
1 | 김일빵 | 1999-03-01 | 서울시 구로구 | 행(레코드) |
2 | 김이빵 | NULL | 서울시 금천구 | |
3 | 김삼빵 | NULL | 서울시 마포구 |
[표 3. 쿼리의 실행 결과]
SELECT 쿼리 실행 시 위의 [표 3]과 같이 테이블의 조회 결과를 표형식의 데이터로 출력합니다. 요약하면 테이블은 행과 열로 구성된 표 형식의 데이터라는 것입니다.
여기서 설명할 것은 열은 하나의 자료형만 가질 수 있고 데이터는 자료형으로 분류할 수 있다는 것입니다. 또한 데이터에서 NULL로 표시된 부분이 있습니다. NULL은 데이터가 들어있지 않는 것을 의미하는 특별한 값입니다.
'IT > Database' 카테고리의 다른 글
03.01. 정렬과 연산 - 정렬 (0) | 2017.02.17 |
---|---|
02.04. 테이블에서 테이터 검색 - 검색 조건 조합 및 패턴 매칭 (0) | 2017.02.16 |
02.03. 테이블에서 데이터 검색 - 검색 조건 지정 (1) | 2017.02.15 |
02.02. 테이블에서 데이터 검색 - 테이블 구조 참조 (0) | 2017.02.14 |
01. 데이터베이스와 SQL (0) | 2017.02.13 |