본문으로 바로가기
7. 올바른 데이터베이스 사용하기

- 지금부터 사용하고자 하는 데이터베이스의 이름이 무엇인가?

ex. mysql > use dbname;

- 또는 아예 로그인 시 사용할 데이터베이스의 이름까지 함꼐 입력하는 방법도 있음

ex. mysql -D dbname -h hostname -u username -p

- 입력한 데이터베이스 사용 성공 : Database changed

                                       실패 : ERROR 1046(3D000) : No Database selected


7-1) 데이터베이스 테이블 만들기

- 테이블 만들때 create table 명령어 주로 사용

ex. CREATE TABLE tablename(colums)

- colums : 이 테이블의 열일 될 항목들이 들어감(항목이 여러개 일 떄는 ','로 구분)


7-2) 기타 키워드들의 의미

- NOt NULL은 이 테이블의 모든 행이 반드시 값을 가져야 함을 의미. 이런 키워드가 없으면 이 필드는 공백이 (null)이 될 수 있음

- AITO_INCREMENT는 정수형의 열에서 사용할 수 있는 ysql의 특징적인 기능.

  이 필드에 아무 값도 없는 채로 테이블에 한 행의 데이터를 입력한다면 mysql이 지금까지의 숫자중 가장 큰 것보다 1만큼 증가한 수를

  자동으로 입력.

- 열의 이름 뒤에 나오는 PRIMARY KEY : 이 열이 테이블의 기본 키라는 뜻.

   기본 키는 지정된 열 안의 값들은 모두 유일해야 함. 기본키가 두개 일 경우 다음과 같이 사용

ex. primary key(orderid, isbn)

- integer : 정수 데이터 형의 뒤에 붙는 UNSIGNED라는 키워드는 이 열에 들어가는 데이터는 항상 0이상의 양수여야함을 뜻함


7-3) 열의 행에 대하여

- 문자열 데이터 : varchar와 char

  varchar는 공간 낭비가 적지만 char보다 처리 속도가 느림.

  char는 50글자 이내의 데이터가 들어간다.

- 실수형 float : 몇자리의 숫자를 보여줄지와 그 중 몇자리가 소스점 아래 자리인지 명시

- date : 날짜

- TINYINT UNSINGED : 0~255사이의 정수를 가짐

- text : 뉴스기사 등 길이가 긴 문장을 저장할 떄 주로 쓰이는 데이터 형


7-4) SHOW와 DESCRIBE로 데이터베이스 살펴보기

- show tables; : 다음과 같은 명령어를 실행하면 선택한 데이터베이스 안에있는 테이블의 목록을 볼 수 있다.

- describe books; : 그리고, 그 중 한 테이블의 자세한 정보를 보고싶을때 describe를 사용한다.


7-5) 인덱스 만들기

- 키가 아닌 다른 열을 사용하여 쿼리를 많이 쓴다면 성능을 개선시키기 위해 그 열에 기반한 인덱스를 추가 할 수 있다

- 명령어 : CREATE INDEX

ex. CREATE [UNIQUE|FULLTEXT] INDEX index_name

     ON table_name (index_column_name [(length)] [ASC|DESC], ...])

- 옵션인 length 필드르 사용하여 필드의 앞에서부터 일정 자리 수만큼만 인덱스로 사용할 수 있다.

- 인덱스를 오름차순(ASC) 혹은 내림차순(DESC)로 정령 할 수 있다. (기본은 ASC)


8. MYSQL 식별자

- mysql에서 사용되는 식별자는 데이터베이스, 테이블, 열 그리고 인덱스와 별칭이 있다.

- mysql에서의 데이터베이스를 파일 시스템에서의 디렉토리와 같다하면 테이블은 디렉터리안의 파일.

- 데이터를 가지고 있는 파일과 디렉터리의 위치는 mysqladmin명령어로 확인 할 수 있다

   ex.  >mysqladmin -h host -u root -p variables

- mysql에서 여러가지 경우에 따라 붙이는 이름들의 조건에 대한 정리는 다음과 같다

 종류

최대길이

 대소문자 구분

사용할 수 있는 문자들

 데이터베이스  64  운영체제에서와 같음

 '/', '\', '.'을 제외하고 운영체제의 디렉터리 이름에서 사용하는 모든 문자

 테이블  64  운영체제에서와 같음
 '/', '\', '.'을 제외하고 운영체제의 디렉터리 이름에서 사용하는 모든 문자
 열  64  없음  모든 문자
 인덱스  64  없음  모든 문자
 별칭  255  없음  모든 문자

- 위와 같이 흔치 않은 문자를 쓸 경우에는 '`'를 써주어야한다.

   ex. create database `create databease`;


9. 열의 데이터 형 (P.297)

- 열이 가질 수 있는 데이터 형 : 숫자, 날짜와 시간, 문자


9-1) 숫자 데이터형

- 정수형, 실수형

- 실수형에서는 정수부분과 소수부분 숫자의 개수를 각각 지정할 수 있음

- 이 소수부분의 쓸수 있는 최대값은 30과 소수점과 하나의 정수수분읠 제외한 나머지 중 작은 값이다.

- 정수형에서 ZEROFILL이라는 것도 사용 가능. 데이터를 화면에 출력할 때, 앞에 0이 덧붙인다는 뜻임

  (따라서 자동적으로 ZEROFILL이라는 것은 UNSIGEND임)


9-2) 날짜와 데이터형

- DATE : 날짜. YYYY-MM-DD형식

- TIME : 시간. HH:MM:SS형식

- DATETIME : 날짜와 시간. YYYY-MM-DD HH:MM:SS형식

- TIMESTAMP : 데이터의 최종 변경 시각을 지정하는데 유용

- YEAR : 연도. 2또는 4로 표기(예를들어 13년으로 할지 2003년으로 할지)


9-3) 문자열 데이터 형

- 첫번째, 일반적인 문자 : CHAR(고정된 길이의 문자), VARCHAR(가변 길이의 문자)

- CARH : 지정된 열에 데이터가 입력될 때 실제 데이터 길이가 지정된 범위에 미치지 못하면 특별한 문자가 나머지 부족한 분량에 채워짐

- VARCHAR : CHAR와 반대로 데이터 길이에 맞게 가변적

- 두번째, TEXT, BLOB : 상대적으로 긴 길이의 문장이나 이진 데이터를 저장할 때 쓰임 

   (BLOB : binary large object, 이미지나 사운드 데이터들도 저장할 수 있음)

- 사실 TEXT가 대소문자를 구별한다는것만 제외하면 두개의 기능 은 동일

- 세번째, SET과 ENUm

- SET형으로 지정된 열에 들어가는 데이터는, 미리 정의 해놓은 집합 안의 원소들로만 구성되어야함.

  ( 집합에는 원소가 64개 들어갈수 있음 )

- ENUM : SET과 비슷하게 미리 정의된 집합안의 원소에 있는 값만 데이터로 저장. SET 형으로 선언되어 있으면 집한 안의 여러 원소가

  데이터에 들어가는 데 반해 ENUM은 하나만 들어가거나 NULL이어야한다는 차이가 있음.