5강. 테이블 구조 참조하기
DESC 명령 학습하기
이전 시간의 SELECT 명령어 실행하기
mysql> SELECT * FROM sample21;
// 실행 결과
// +------+-----------+------------+---------------------------+
// | no | name | birthday | address |
// +------+-----------+------------+---------------------------+
// | 1 | 박준용 | 1976-10-18 | 대구광역시 수성구 |
// | 2 | 김재진 | NULL | 대구광역시 동구 |
// | 3 | 홍길동 | NULL | 서울특별시 마포구 |
// +------+-----------+------------+---------------------------+
// 3 rows in set (0.00 sec)
1. DESC 명령어
: DESC 는 Descirption을 줄인 명령어로, DESC 명령어로 테이블에 어떤 열이 정의되어 있는지 알 수 있다.(DESC 는 SQL 명령어가 아니다.)
DESC 실행.
mysql> DESC sample21;
//실행결과
// +----------+-------------+------+-----+---------+-------+
// | Field | Type | Null | Key | Default | Extra |
// +----------+-------------+------+-----+---------+-------+
// | no | int(11) | YES | | NULL | |
// | name | varchar(20) | YES | | NULL | |
// | birthday | date | YES | | NULL | |
// | address | varchar(40) | YES | | NULL | |
// +----------+-------------+------+-----+---------+-------+
// 4 rows in set (0.00 sec)
=> 맨 앞의 Field는 열 이름이 표시된다.( no, name, birthday, address )
=> Type 은 해당 열의 ‘자료형’을 나타낸다. int는 Integer(정수)를 의미한다. 괄호 안의 숫자는 최대 길이를 나타내는데, 예를 들어 int(11)은 ‘11자리의 정수값을 저장할 수 있는 자료형’이라는 의미이다.
=> Null 은 NULL 값을 허용할 것인지 아닌지를 나타내는 제약사항으로 Yes로 지정하면 NULL값을 허용하게 된다.
=> Key는 해당 열이 ‘키’로 지정되어 있는지를 나타낸다.
=> Default는 그 열에 주어진 ‘기본값’ 즉, 생략했을 경우 적용되는 값이다. 테이블에 행을 추가할 때 열의 데이터값을 생략하면 이 기본값으로 채워진다.( 위의 경우는 생략됐을 경우 모두 NULL 로 초기화된다. )
DESC 명령으로 테이블 구조를 참조할 수 있다.
2. 자료형
테이블은 하나 이상의 열로 구성되며 DESC 명령으로 그 구조를 참조할 수 있다는 것을 알았다. 열에는 몇 가지 속성을 지정할 수 있는데 그 중 가장 중요한 속성은 ‘자료형’ 이다. 자료형 몇 가지를 알아보자.
-
INTEGER 형
: ‘INTEGER 형’은 수치형의 하나로 정수값을 저장할 수 있는 자료형이다. 소수점은 포함할 수 없다. -
CHAR 형
: ‘CHAR 형’은 문자열형의 하나로 문자열을 저장할 수 있는 자료형이다. 문자열형에는 열의 최대 길이를 지정해야 한다. CHAR(10)으로 지정했을 경우 최대 10문자로 된 문자열을 저장할 수 있으며 11문자 이상의 문자열은 저장할 수 없다. 또, CHAR은 언제나 고정된 길이로 데이터가 저장되기 때문에, CHAR(10)은 10으로 고정된 길이다. 따라서 CHAR을 ‘고정 길이 문자열’ 자료형이라고 한다. 만약 최대 길이보다 작은 문자열을 저장할 경우 공백문자로 나머지를 채운 후 저장하게 된다. -
VARCHAR 형
: ‘VARCHAR 형’ 역시 ‘CHAR 형’처럼 문자열을 저장할 수 있는 문자열이다. 최대 길이를 저장하는 점은 CHAR 형과 같다. 하지만 CHAR 과 달리 데이터 크기에 맞춰 저장공간의 크기도 변경된다. 따라서 VARCHAR 형은 ‘가변 길이 문자열’ 자료형이라고 한다. 예를 들어 VARCHAR(5)이지만 데이터크기가 3이라면 크기는 3이된다. 그리고 아직 SQL입문이라 확실하지 않지만 내생각엔 데이터의 크기가 5를 초과한 문자열일지라도 가변 길이 문자열 자료형이기때문에 저장할 수 있지 않을까 생각한다. (자바에서 ArrayList도 처음 선언한 길이보다 초과하는 경우에도 계속 원소를 추가할 수 있기 때문에..) -
DATE 형
: ‘DATE 형’은 날짜값을 저장할 수 있는 자료형이다. 날짜값이란 ‘2013년 3월 23일’과 같이 연월일의 데이터를 저장할 수 있는 형이다. -
TIME 형
: ‘TIME 형’은 시간값을 저장할 수 있는 자료형이다. 시간값이란 ‘12시 30분 20초’ 와 같이 시분초의 데이터를 저장할 수 있는 형이다.
가변 깅이 문자열과 고정 길이 문자열
고정 길이 문자열
CHAR(5) // 고정 길이 문자열
A | B | C | - | - |
---|---|---|---|---|
1 | 2 | 3 | 4 | 5 |
=> 데이터 길이 고정. 문자열 ABC는 길이가 3이지만 CHAR형은 여전히 길이가 5로 고정되어있다.
가변 길이 문자열
VARCHAR(5) // 가변 길이 문자열
A | B | C | |
---|---|---|---|
1 | 2 | 3 | 4 |
=> 데이터 길이 가변. 문자열 ABC는 길이가 3이라서 데이터 길이는 4이다. 아마 Null문자(\0)가 포함되어서 +1 추가 되어 4인건가 추측해본다. 공부를 더 하면 나오겠지!
문자열형에는 고정 길이와 가변 길이가 있다.