본문 바로가기
공부기록/MySQL

3월 28일 (1) DB - My SQL DDL 자료형, 테이블 삽입

by project100 2023. 3. 28.

식별자는 MySQL을 설치한 운영체제에 따라 대소문자를 구분한다.

윈도는 대소문자를 구분하지 않는 운영체제다.

식별자 : 테이블명, 칼럼명 등

테이블에 저장된 '데이터'는 대소문자를 구별한다.(데이터의 타입에 따라 구별한다.)

 

자료형(Data Type)

 

1. 문자형(5.0.3 버전 이후 크기는 글자수를 나타낸다.) 원래는 바이트였는데 글자수로 바뀜

1) CHAR(n) : 고정길이, n은 글자수(최대 255자),

단점 : 쓰지 않는 공간의 나머지는 비어있는 상태여서 공간의 낭비가 있다.

장점 : 크기가 정해져 있기 때문에 처리 속도가 빠름, 퍼포먼스가 좋다.

2) VARCHAR(n) :  가변길이(최대 65536자), 많이 사용한다.

장점 : 공간의 낭비가 없다. 

단점 : 길이가 다 다르기 때문에 퍼포먼스가 떨어짐. 속도가 떨어짐

요즘에는 퍼포먼스가 비슷하기 때문에 공간의 낭비가 없는 VARCHAR를 더 많이 사용한다.

3) TEXT(n) : VARCHAR과 같으나 조회속도가 느림, 보통 크기 설정 없이 사용 구현되는 알고리즘이 달라서 속도가 느리다.

글자 크기를 정하고 사용할 때에는 1, 2를 많이 사용하고 글자 수를 지정하지 못할 때 사용

4) TINYTEXT(n) : 256자

5) MEDIUMTEXT(n) : 16777216자(1700만 자)

6) LONGTEXT(n) : 4294967296자(43억 자)

7) JSON : JSON 형태로 저장. 한 번에 저장하자

                예 {'name' : '홍길동', 'age' : 20} 

 

2. 숫자형() 자체를 잘 사용하지 않음

1) TINYINT(n) : 정수형, -128 ~ 127

2) SMALLINT(n) : -32768 ~32767

3) MEDIUMINT(n) : -8388608 ~ 8388607

4) INT(n) : -2147483548 ~ 2147483547 많이 사용한다.

5) BIGINT(n) : 무제한

6) FLOAT(n, d) : 실수, n - 전체길이, d -  소수점 이후, 부동 소수형

                           예) FLOAT(7, 2) -> 99999.99

7) DECIMAL(n, d) : 고정 소수형, 

8) DOUBLE(n, d) : 부동 소수형(문자열로 저장) 

 

3. 날짜형

1) DATE : 날짜(년, 월, 일) 형태, YYYY-MM-DD

2) TIME : 시간(시, 분, 초) 형태, HH:mm:SS

3) DATETIME : 날짜 + 시간(8byte), 1000-01-01부터 현재까지의 시간, 많이 사용한다.

4) TIMESTAMP : 1970-01-01부터(UTC) (4byte)

     UTC(Univeral Time Coordinated) - 협정 세계시 

5) YEAR : 연도만 저장하는 형태

 

4. 이진 데이터형

1) BINARY(n) & BYTE(n) : CHAR 형태의 이진 데이터, 대소문자 구분 없이 검색

2) VARBINARY(n) : VARCHAR 형태의 이진 데이터, 대소문자 구분 검색

3) TINYBLOB(n) : 파일 저장용, 256byte 파일만 따로 저장하는 파일 서버가 있으면 db와 파일의 개별 관리가 가능 

위지위그(WYSIWYG, What You See In What You Get) 보이는 대로 처리한다는 의미, 웹 에디터(네이버 스마트에디터)

글자, 이미지, 글자 형식으로 되어 있을 때 이미지를 텍스트화하여 저장하는 것

4) BLOB(n) : 65536byte

5) MEDIUMBLOB(n) : 16777216byte

6) LONGBLOB(n) : 4294967296byte

 

데이터베이스는 공간에 데이터가 계속 누적, 최적화시키는 것이 필요, 딱 맞게 짜여 있는 것이 필요..

 

제약조건(Constraint)

데이터의 무결성(정확성, 일관성, 유효성)을 지키기 위해, 데이터를 입력할 때 실행되는 검사규칙

CREAT 문이나 ALTER 문에서 사용

 

1. NOT NULL : 해당 칼럼에 NULL이 들어갈 수 없다.(필수 입력 칼럼)

2. UNIQUE : 해당 칼럼에 중복값을 허용하지 않는다. 유일한 값, 잘 사용하지 않음

3. PRIMARY KEY : 해당 칼럼을 기본키로 설정한다. (NOT NULL + UNIQUE의 합성)

1,2,3은 TYPE 다음에 쓰기만 하면 된다. NOT NULL과 같이 쓰지 않음.

 

4. FOREIGN KEY : 해당 칼럼을 외래키로 설정한다. 중복되고, NULL도 허용. 

키를 만들지 않아도 됨. 데이터베이스에서 모든 것을 처리하지 않아도 된다. 프로그램 쪽에서 막아줄 수도 있음.

처리속도를 높이기 위해서 데이터베이스로 사용하는 것임!

 

5. DEFAULT : 해당 칼럼에 기본값을 설정한다.  NOT NULL과 같이 쓰지 않고, 기본값 작성 '문자열'

6. CHECK : 칼럼에 대한 기타 제약조건을 설정한다.(프로그램 구현 시 처리하는 경우가 많다.)

조건식을 입력하여 작성

 

칼럼명 작성 시 권장규칙

첫 글자를 테이블이 연상될 수 있는 단어 또는 문자를 사용하자!

스네이크 케이스, 언더 바 사용하지 않는 것이 좋다. 오류날 가능성이 있음

 

 

COMMIT; - 입력최종 실행,

INSERT 작업 후 반드시 COMMIT을 실행해야 한다.

하지 않으면 프로그램을 다시 켰을 때 데이터가 사라짐

 

순서가 의미가 없기 때문에 문장을 하나씩 실행하는 것이 필요!

 

예)

데이터 삽입
INSERT INTO member
VALUE ('hong01', '1234', '홍길동', null, null, default, default); - 모든 칼럼에 대한 값을 다 적어줌
COMMIT; - 입력최종 실행



INSERT INTO member (mid, mpwd, mname) - 입력할 값만 작성
VALUE ('jun01', '1111', '전우치');
COMMIT;



테이블 내용 보기
SELECT * FROM member;