02. SQL 데이터베이스 기초 명령어

1. SELECT 명령

1
SELECT * FROM 테이블명 

2. SELECT * FROM 테이블명 실행

FROM 사이에는 스페이스를 넣어 구분한다. 예를 들어 sample 테이블의 모든 데이터를 조회한다면 아래와 같이 SELECT 명령을 입력해야 한다.

1
SELECT * FROM sample;

주의

만약 SELECT*FROMsample;과 같이 붙여서 입력하면 에러가 발생한다.
입력이 끝나면 명령의 마지막을 나타내는 세미콜론(;)을 넣은 뒤 Enter키를 누른다. Enter 키를 누르면 입력한 SQL 명령이 서버에 전달되며 서버는 이를 실행한 후 결과를 반환한다.

3. SELECT 명령 구문

SELECT는 DML(Database Manipulation Language)에 속하는 명령으로 SQL에서 자주 사용된다.
SELECT 명령으로 데이터베이스의 데이터를 읽어올 수 있다. SELECT 명령은 질의쿼리라 불리기도 한다.

지금까지 실행한 SQL 명령을 다시 한 번 살펴보자.

SELECT : 먼저 맨 앞의 SELECT는 SQL 명령의 한 종류로 ‘SELECT 명령을 실행하세요’ 라는 의미이다.
\ : 애스터리스크(*)는 '모든 열(column)'을 의미하는 메타문자이다. (해당 테이블에 *라는 이름의 열이 존재하는 것이 아니다)

FROM : FROM은 처리 대상 테이블을 지정하는 키워드이다.

SQL 명령은 키워드에 의해 라는 단위로 나눌 수 있다. 위의 ‘SELECT * FROM sample’ 에서는 크게 SELECT 구와 FROM 구로 나눌 수 있다.

4. 예약어와 데이터베이스 객체명

앞의 SELECT 구문에서 sample 테이블의 내용을 확인했었다. 혹시라도 다른 테이블의 내용을 보고 싶은 경우에는 FROM 뒤의 테이블명을 재지정하면 된다.

SELECT * FROM: 예약어
sample : 테이블명

SELECTFROM이 구를 결정하는 키워드이자 예약어이다. sample은 테이블 이름으로, 예제 데이터베이스의 이름이다.
데이터베이스에는 테이블 외에 다양한 데이터를 저장하거나 관리하는 '어떤 것’을 만들 수 있다. 이것을 데이터베이스 객체라고 부르는데, 예를 들면 '뷰(view)'가 그에 해당한다.
데이터베이스 객체는 이름을 붙여 관리한다. 같은 이름으로 다른 데이터베이스 객체는 만들 수 없다. (이런 경우 ‘이미 테이블이 정의되어 있다’ 라는 에러가 발생한다)
통상적으로 데이터베이스 객체명에는 예약어와 동일한 이름을 사용할 수 없다. 가령 'SELECT’라는 이름의 테이블을 만들 수 없다. 이것이 예약어의 유래이다.

5. 대소문자 구별

예약어와 데이터베이스 객체명은 대소문자를 구별하지 않는다.

SQL 명령과 달리 많은 데이터베이스 제품들은 데이터의 대소문자를 구별한다. 단, 설정에 따라 구별하지 않는 경우도 있다. 이 책에서는 알아보기 쉽도록 예약어는 대문자로, 데이터베이스 객체명은 소문자로 표기한다.

5.1. 실행한 결과 = 테이블

SELECT 명령을 실행하면 표 형식의 데이터가 출력된다. 표 형식의 데이터는 행(레코드)와 열(컬럼/필드)로 구성된다. 행은 모두 동일한 형태로 되어 있으며 옆으로 '열(컬럼/필드)'이 나열되는데, 열마다 이름이 지정되어 있다. 각각의 행과 열이 만나는 부분을 '셀’이라고 부른다. 셀에는 하나의 데이터 값이 저장되어 있다.

열은 하나의 자료형만 가질 수 있다. 그리고 수치형의 열에 문자형의 데이터를 저장할 수 없다. 데이터를 자료형으로 분류할 수 있다. 그리고 열은 하나의 자료형만 가질 수 있다.

5.2. 값이 없는 데이터 = NULL

SELECT의 결과를 잘 살펴보면 셀의 값이 NULL로 표시된 부분이 있다. NULL은 특별한 데이터 값으로 아무것도 저장되어 있지 않은 상태를 의미한다. 다시 말해, NULL이라는 데이터가 저장되어 있는 것이 아닌,
'아무 것도 저장되어 있지 않은 상태’라는 뜻이다. NULL은 SQL에서 대단히 중요한 개념으로, 자세한 것은 뒤에서 설명한다. NULL은 데이터가 들어있지 않은 것을 의미하는 특별한 값이다