서론
이제부터는 실제로 SQL 명령을 실행하면서 배워보겠다.
우선은 SQL 명령의 Hello World라 할 수 있는 'SELECT * FROM 테이블명'
을 실행해보자.
1. 'SELECT * FROM 테이블명' 실행
SELECT * FROM sample_table;
SELECT
와 *
그리고 FROM
사이에는 스페이스
를 넣어 구분한다.
FROM 과 sample_table
사이에도 스페이스가 필요하다.
입력이 끝나면 명령의 마지막을 나타내는 세미콜론(;)
을 넣은 뒤 Enter 키를 누른다.
Enter 키를 누르면 입력한 SQL 명령이 서버에 전달되며 서버는 이를 실행한 후 결과를 반환한다.
2. SELECT 명령 구문
위에서 실행한 SQL 명령은 SELECT
명령이다.
SELECT는 DML
에 속하는 명령으로 SQL에서 자주 사용된다.
SELECT 명령으로 데이터베이스의 데이터를 읽어올 수 있다.
SQL 명령을 다시 한 번 살펴보자.
SELECT * FROM sample_table;
먼저, 맨 앞의 SELECT
는 SQL 명령의 한 종류로 'SELECT 명령을 실행하세요'라는 의미이다.
그 다음의 애스터리스크(*)
는 '모든 열'
을 의미하는 메타문자이다.
위 SQL 명령을 실행하면 sample_table의 모든 데이터를 읽어온다.
테이블에는 보통 한 개 이상의 열이 있는데, 이들을 일일이 지정하지 않고도 *
을 사용하면 간단하게 모든 열을 지정할 수 있다.
그 다음의 FROM
은 처리 대상 테이블
을 지정하는 키워드이다.
FROM 뒤에 테이블명
을 지정한다.
SQL 명령은 키워드에 의해 '구'
라는 단위로 나눌 수 있다.
위 명령의 경우 SELECT 구
와 FROM 구
로 나눌 수 있다.
SELECT 명령은 보통 여러 개의 구로 구성된다.
어떤 구가 있는지는 추후 자세하게 설명하겠다.
3. 예약어와 데이터베이스 객체명
SELECT * FROM sample_table;
위 SQL 명령에서 SELECT
와 FROM
은 구를 결정하는 키워드
이자 예약어
이다.
데이터베이스에는 테이블 외에 다양한 데이터를 저장하거나 관리하는 '어떤 것'을 만들 수 있다.
이것을 '데이터베이스 객체'
라 부르는데, 예를 들면 '뷰(view)'
가 그에 해당한다.
데이터베이스 객체는 이름
을 붙여 관리한다.
같은 이름
으로 다른 데이터베이스 객체는 만들 수 없다.
예를 들면, sample_1
이 기존 데이터베이스 내에 존재하는 테이블이라고 할 때, sample_1
이라는 동일한 이름으로 새로운 데이터베이스 객체(테이블, 뷰 등)를 만들 수 없다.
이런 경우 '이미 테이블이 정의되어 있다'라는 에러가 발생한다.
또한 통상적으로 데이터베이스 객체명에는 예약어
와 동일한 이름을 사용할 수 없다.
예를 들면 'SELECT'
라는 이름의 테이블은 만들 수 없다.
예약어와 데이터베이스 객체명은 대소문자
를 구별하지 않는다.
다음은 그 예를 나타낸 것으로, 모두 동일하게 동작한다.
select * from sample_table;
Select * From Sample_Table;
SELECT * FROM SAMPLE_TABLE;
4. Hello World를 실행한 결과 = 테이블
SELECT 명령을 실행하면 표 형식의 데이터
가 출력된다.
표 형식의 데이터는 '행(레코드)'
과 '열(컬럼/필드)'
로 구성된다.
열마다 이름이 지정되어 있으며 출력된 테이블의 한 칸을 '셀'
이라고 부른다.
셀에는 하나의 데이터 값이 저장되어 있다.
숫자만으로 구성된 데이터를 '수치형'
데이터라고 한다.
수치형 데이터는 오른쪽 정렬로 표시된다.
임의의 문자로 구성된 테이블은 '문자열형'
데이터라 부른다.
문자형은 왼쪽으로 정렬되어 표시된다.
날짜와 시각을 나타내는 데이터는 '날짜시간형'
데이터라고 하며 왼쪽으로 정렬되어 표시된다.
한 개의 열은 하나의 자료형
만 가질 수 있고, 또 저장할 수 있다.
수치형 데이터를 문자열형 열에 저장하려고 하는 등의 명령은 에러가 발생한다.
5. 값이 없는 데이터 = NULL
NULL
은 특별한 데이터 값으로 '아무것도 저장되어 있지 않은 상태'
를 의미한다.
NULL은 SQL에서 중요한 개념으로, 자세한 것은 차차 설명하도록 하겠다.