본문 바로가기

무언가 만들기 위한 지식/Database

CREATE, USE, DESC

데이터베이스(DB)는 테이블과 그에 관련된 SQL구성 요소들을 담고 있는 저장소이다.
웹상에서 필요할때마다 이 DB에서 정보를 요청하고 받거나 보내는데 이를 바로 쿼리-Query(질의)한다라고 한다. 좀 나중에 자세히 배워볼 쿼리문이 당신을 기다리고 있다. 아마 각 스크립트언어 마다 쿼리문이 조금씩 다를 것이다. PHP가 공짜니까 아무래도 그것을 다룰듯 싶다^^;

일단 기본적인 개념은 무지 간단하다. 우리가 세상에서 흔하디 흔하게 사용하는 표가 그것이다.
아마 이것을 관심들여 본 사람이라면 엑셀이나 엑세스정도? 아니면 적어도 한글및 워드는 사용해 보았을 것이다.
그곳의 표, 즉 테이블을 기준으로 자료가 저장된다. 수많은 테이블의 연결된 것이 DB이다. 그안에는 생성,삭제, 추가, 수정 등등등 많은 명령어가 당신을 기다리고 있다. 자 쉬운 것부터 시작해 보자.~

이 테이블을 설계하기 정말 까다로운(?) 아니 고부가치(?)라는 의미는 이런 설계에 있다. 뭐든 무식하게 주어진 것을 짜기는 할말하지만 DB만 하더라도 이 구조를 나누기란 그닥 단순하지만은 않다. field=column 즉 목록을 공통된 것과 공통되지 않는 것을 나눠야 하고 적당한 목록으로 분류 하여야 한다. 이런 설계분야는 아마 여기서 다루기는 무거울 주제일 것이므로 패스, 나중에 여건이되면 언급할 예정이다.
아무튼 테이블을 만들때는 어떤 방식과 무엇을 기준으로 만들것인지를 생각해야 한다. 특히 field부분에 대하여 다르고 같은 부분을 생각한후 나눠야 한다.

아까부터 계속 field 및 column이라고 씨부렸는데, 그것이 뭐냐하면 세로를 말한다.
이를 그림으로 말하자면


다음과 같다.

한국말과 같이 섞어 쓴다면 행=low=record, 열=column=field이다.
이것은 DB뿐만이 아니라 컴퓨터 쪽에서 무지하게 중요하면서도 당연한(?) 개념이다.
이것저것 자격증 공부만해도 지겹게 나오므로 혹시나 몰랐다면 알아두자...^^
위 표에서 보면 색이 칠해진 부분이 1 low인 것이다. 즉 1행이다. 이는 레코드라고도 불리우며 field들의 집합니다.
C언어를 보다보면 레코드가 워드들의 집합이었나..? 집합으로 나오는데 그 개념이랑 비슷하다고 보면 된다.
field들은 말그대로 분야이다. 한 레코드마다 다양한 필드(분야)가 있다. 예를 들어 한 사람이 있다면 그 사람의 세부 정보는 field(=column)이고 그 사람은 record(=low)이다.

이개념을 토대로 직접 테이블을 작성해 보자.
일단 처음 콜솔창에 들어가서 다음을 입력하자.

<CREATE DATABASE shinlucky;>


다음과 같이 생성이 되었다고 나온다. 이는 테이블을 만들기전에 DATABASE를 설정해 주는 것이다.
개념상 TABLE보다 DATABASE가 상위 단계라고 생각하면 된다. 한 DATABASE안에는 여러가지의 TABLE이 존재한다. 그러므로 TABLE을 생성하기 위해서는 DATABASE를 생성해야하고 이를 활성화 시켜주어야 한다.

다음을 입력해보자.

<USE shinlucky;>


다음은 shinlucky라는 DATABASE를 활성화 시키겠다는 선언이다. 이 선언을 해야지 해당 DATABASE로 접근하여 작업을 수행할 수 있다.

※ 참고로 SQL의 언어규칙중 한가지는 명령어는 대문자 , 변수는 소문자로 사용한다. 그렇게 함으로써 둘을 구분하기 편하게 된다. 즉 가독성이 좋아진다. 또한 변수의 경우 중첩된 단어의 경우 언더바를 이용한다. (JAVA다 다른 명명 규칙은 대부분 두번째 단어는 대문자로 한다. 클래스는 대문자 함수는 소문자+대문자등등등)

다음은 본격적으로 테이블을 만들어 보자.

테이블을 만드는 명령어는 CREATE TABEL 명이다. 위에서 데이터베이스를 생성하기 위해서는 CREATE DATABASE를 사용하였는데 이번ㅇ는 CREATE TABEL을 사용하면 된다.

간단하게 테이블을 만들어보자. 테이블을 만들기 위해서는 당연하지만 필드(열=column)를 미리 설정해 주어야 한다. low(행,record)의 경우에는 사람이 추가될 경우 간단하게 추가되지만 열은 그렇지 않다.(물론 된다.)
행의 경우 열을 기준으로 정보가 입력되고 하나의 레코드가 입력되기때문에 테이블생성시는 당연하게 필드가 정해주어야 한다. 자그럼 만들어 보자.

<CREATE TABLE shin444(name VARCHAR(10), age INT, gender CHAR(1));>


위 를 가독성 있도록 함수처럼 사용한 것이다. 어떻게 보면 C나 기타언어의 함수선언과 비슷하다.
약간 다른점은 변수명(필드명)이 먼저나오가 다음으로 자료형이 나온다. VARCHAR(10),INT,CHAR(1)은 자료형 중에 하나이다. 다음장에서 설명할 것이다.
콘솔창에서 엔터를 치면 ->와 같은 것이나오고 ";"세미콜론을 누르면 한 명령어줄이 종료된다.
길게 늘려써도 상관없고 위와같이 가독성을 높게하여 봐도 상관 없다. 맨 위에는 에러나온 모습이다. column 즉 field선언을 하지 않고 CREATE를 하면 에러가 나오는 것을 볼 수 있다.

만들었으면 확인해보고 싶을 것이다. DESC는 describe의 약자이다. 다음을 쳐보자.
단 DESC는 테이블의 내용을 보는 것이 아니라 테이블의 형식을 확인 하는 것이다.

<DESC shin444>


다음과 같이 field에 따른 테이블의 기본 정보가 보인다. DESC로 데이터베이스는 볼 수가 없다.(해본결과 ㅠ.ㅜ)

(나중에 해보니 show databases 를이용하면된다.)

그럼 이제 테이블의 설정과 확인이 끝났다. 이제 값을 집어넣는 방법과 삭제가 궁금할 것이다.
잠시 쉬었다가 확인해보자 ㅋ~!

'무언가 만들기 위한 지식 > Database' 카테고리의 다른 글

My-SQL DataType(자료형)  (1) 2010.04.06
CREATE TABLE 옵션 NULL, DEFAULT  (0) 2010.04.06
DROP, INSERT, SELECT  (0) 2010.04.06
DB의 시작.  (0) 2010.02.18
SQL 설치  (0) 2008.06.29