식별자는 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;
'공부기록 > MySQL' 카테고리의 다른 글
3월 29일 (1) DB - DML INSERT, DELETE (0) | 2023.03.29 |
---|---|
3월 28일 (2) DB - My SQL DDL 테이블 제약 조건, 삭제, 수정 (0) | 2023.03.28 |
3월 27일 (2) DB - MySQL 사용 (0) | 2023.03.27 |
3월 27일 (1) DB - 논리적 설계, E-R다이어그램, 테이블 명세서 (0) | 2023.03.27 |
3월 24일 (2) DB - 데이터베이스 설계 (0) | 2023.03.24 |