데이터 유형
MySQL은 데이터를 저장합니다. 데이터라면 데이터 유형을 지정하겠습니다. 특정 데이터 유형이 테이블 필드에 지정됩니다. 그러면 삽입된 데이터에는 해당 데이터 유형을 사용해야 합니다. 또한 데이터 유형의 길이 요구사항을 준수하십시오.
MySQL에서는 데이터 유형을 다음 유형으로 나눕니다.
숫자 유형(정수, 부동 소수점)
문자열 type
날짜 시간 유형
복합 유형
정수 유형
정수형의 길이는 실제와 다릅니다. 사용방법은 PHP Academy입니다.
MySQL은 데이터베이스에서 값을 검색할 때 값을 지정된 길이까지 늘릴 수 있도록 선택적 표시 너비 표시기 형태로 SQL 표준을 확장합니다. 예를 들어 필드 유형을 INT(6)로 지정하면
은 데이터베이스에서 검색할 때 6자리 미만의 값이 자동으로 공백으로 채워지도록 합니다. 너비 표시기를 사용해도 필드의 크기나 저장할 수 있는 값의 범위에는 영향을 미치지 않습니다.
참고:
테이블 필드를 생성할 때 부호 없는 작은 정수를 사용하여 성별을 나타낼 수 있습니다. 0은 여성을 나타내고 1은 남성을 나타냅니다. 알 수 없음을 나타내려면 2를 사용하십시오.
사람의 나이와 마찬가지로 테이블 필드를 생성할 때 부호 없는 정수를 사용할 수 있습니다. 실제 사용하는 나이에는
음수가 없기 때문입니다. 우리 사업에 저장해야 하는 최대 가치는 얼마입니까? 테이블을 생성할 때 이러한 값을 저장할 유형을 선택합니다.
부동 소수점형
참고:
부동 소수점은 부정확한 값이므로 부정확한 내용이 있을 수 있습니다.
그리고 소수점은 고정 소수점 수라고 합니다. MySQL에서는 기본적으로 문자열로 저장됩니다. 실제 사용 시 금액 및 화폐 정밀도에 대한 요구 사항이 상대적으로 높은 부동 소수점 숫자 저장이 있는 경우 소수(고정 소수점 숫자) 형식을 사용하는 것이 좋습니다.
문자 종류
*CHAR * 유형은 고정 길이 문자열에 사용되며 괄호 안에 크기 수정자를 사용하여 정의해야 합니다. 이 크기 수정자의 범위는 0-255입니다. 지정된 길이보다 큰 값은 잘리고, 지정된 길이보다 작은 값은 공백으로 채워집니다.
*VARCHAR * 이 크기를 값의 크기로 간주하여 길이가 부족하지 않은 경우 공백을 사용하여 보충하세요. 반면 VARCHAR 유형은 이를 최대값으로 처리하고 문자열을 저장하는 데 실제로 필요한 길이만 사용합니다.
유형은 공백으로 채워지지 않지만 표시기보다 긴 값은 계속 사용됩니다. 잘렸습니다.
VARCHAR 유형은 실제 내용에 따라 저장된 값의 길이를 동적으로 변경할 수 있으므로 필드에 필요한 문자 수가 확실하지 않은 경우 VARCHAR 유형을 사용하면 디스크 공간을 크게 절약하고 저장 효율성을 향상시킬 수 있습니다.
텍스트 유형 및 blob 유형 필드 길이 요구 사항이 255를 초과하는 경우 MySQL은 TEXT와 BLOB의 두 가지 유형을 제공합니다. 이들은 모두 저장된 데이터의 크기에 따라 서로 다른 하위 유형을 갖습니다. 이러한 대용량 데이터는 텍스트 블록이나 이미지, 사운드 파일과 같은 바이너리 데이터 유형을 저장하는 데 사용됩니다.
TEXT형과 BLOB형은 분류와 비교에 차이가 있습니다. BLOB 유형은 대소문자를 구분하지만 TEXT는 대소문자를 구분하지 않습니다. 다양한 BLOB 및 TEXT 하위 유형에는 크기 수정자가 사용되지 않습니다.
시간 종류
참고:
시간 유형은 웹 시스템에서 거의 사용되지 않습니다. int를 사용하여 시간을 저장하는 것을 좋아합니다. 삽입 시에는 이 방법이 계산에 더 편리하기 때문에 Unix 타임스탬프를 삽입합니다. 프런트엔드 비즈니스에서 날짜 유형 기능을 사용하여 Unix 타임스탬프를 사람들이 인식할 수 있는 시간으로 변환합니다. 실제 상황에 따라 위의 유형을 선택하실 수 있습니다데이터베이스 관리에서 조회를 용이하게 하기 위해 날짜/시간 유형을 사용하여 시간을 저장하는 분들도 계십니다.복합 유형
MySQL은 ENUM 유형 컬렉션에 나타나는 값을 합법적인 입력으로 간주하며, 그 외의 입력은 모두 실패합니다. 이는 빈 문자열이나 해당 숫자 인덱스 0이 포함된 행을 검색하면 잘못된 레코드의 위치를 쉽게 찾을 수 있음을 보여줍니다.
2.SET 유형 SET 유형은 ENUM 유형과 유사하지만 동일하지는 않습니다. SET 유형은 미리 정의된 컬렉션에서 원하는 수의 값을 얻을 수 있습니다. 그리고 ENUM 유형과 마찬가지로 SET 유형 필드에 미리 정의되지 않은 값을 삽입하려고 하면 MySQL이 빈 문자열을 삽입하게 됩니다. 합법적인 요소와 불법적인 요소가 모두 포함된 레코드를 삽입하면 MySQL은 합법적인 요소를 유지하고 불법적인 요소를 제거합니다.
SET 유형에는 최대 64개의 요소가 포함될 수 있습니다. SET 요소에서 값은 해당 요소를 나타내는 "비트"의 개별 시퀀스로 저장됩니다. 비트는 순서가 지정된 요소 컬렉션을 만드는 간단하고 효율적인 방법입니다.
또한 중복된 요소를 제거하므로 SET 유형에 두 개의 동일한 요소를 포함하는 것이 불가능합니다.
SET 유형 필드에서 잘못된 레코드를 찾으려면 빈 문자열이나 이진 값 0이 포함된 행을 찾으면 됩니다.
타입을 사용합니다
지금까지 정말 많은 타입을 배웠으니, 테이블문을 생성할 때 해당 타입을 사용하면 됩니다.
예:
CREATE TABLE IF NOT EXISTS 데모 (
id int(11) NOT NULL,
username varchar(50) NOT NULL,
password char( 32) NOT NULL,
content longtext NOT NULL,
createtime datetime NOT NULL,
sextinyint(4) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
필드 기타 속성 설정
UNSIGNED(unsigned) 정수 및 부동 소수점 유형에 주로 사용되며 unsigned를 사용합니다. 즉, 앞에 -(빼기 기호)가 없습니다.
더 긴 저장 자릿수. Tinyint 정수의 값 범위는 -128~127입니다. 부호 없는 사용 후 0~255 길이를 저장할 수 있습니다.
생성 시 정수 또는 부동 소수점 필드 문에 다음을 추가합니다.
unsigned
ZEROFILL(0 패딩) 0 ( 공백 아님)을 사용하여 출력 값을 보완할 수 있습니다. MySQL 데이터베이스가 음수 값을 저장하는 것을 방지하려면 이 수정자를 사용하십시오.
생성 시 다음을 추가하세요.
zerofill
default 기본 속성은 사용 가능한 값이 없을 때 상수가 값이 할당됩니다. MySQL은 함수 또는 표현식 값의 삽입을 허용하지 않으므로 이 값은 상수여야 합니다. 또한 이 속성은 BLOB 또는 TEXT 열과 함께 사용할 수 없습니다. 이 열에 NULL 속성이 지정된 경우 기본값이 지정되지 않으면 기본값은 NULL이 되고, 그렇지 않으면 기본값은 필드의 데이터 유형에 따라 달라집니다.
생성 시 정수 또는 부동 소수점 필드 설명을 따르세요.
기본 '값'
not null 열이 not null로 정의된 경우 해당 열에 Null 값을 삽입할 수 없습니다. 필요한 모든 값이 쿼리에 전달되었다는 기본적인 유효성 검사를 제공하므로 중요한 상황에서는 항상 not null 속성을 사용하는 것이 좋습니다.
생성할 때 정수 또는 부동 소수점 필드 문을 추가하세요.
not null
null 열에 null 속성을 지정하면 행의 다른 열이 채워졌는지 여부에 관계없이 열이 비어 있을 수 있습니다. null은 빈 문자열이나 0이 아닌 "없음"을 의미한다는 점을 기억하세요.
생성 시 정수 또는 부동 소수점 필드 문 뒤에 not null을 선언하지 마세요.
문자셋
문자셋이란
중국어, 일본어, 영어, 그리스어를 더 잘 인식하기 위해서입니다. 일반적으로 사용되는 기호는 인코딩되며, 이 인코딩이 문자 집합입니다.
문자 집합에 따라 텍스트가 저장되는 방식이 결정됩니다.
문자 집합은 컴퓨터의 인간 언어와 동일합니다.
예:
저는 영어를 하기 때문에 저장할 때 영문 텍스트를 사용해서 저장해야 합니다.
중국어로 말하고 영어 문자를 사용해서 저장한다면. 그러면 사람들은 그것을 읽거나 이해할 수 없습니다. 이것을 우리는 횡설수설이라고 부릅니다.
문자 세트가 너무 많아서 수십, 수백 개가 들어갈 정도거든요. 따라서 문자 세트에 대해 너무 많이 알 필요가 없으며 문자 세트가 사람이 볼 수 있는 문자로 컴파일되는 방법도 알 필요가 없습니다.
문자 집합에 대한 주요 지식
우리가 알아야 할 사항:
자주 사용하는 문자 집합
데이터베이스에서는 어떤 문자 집합을 사용하나요?
영어 문자 집합:
ASCII
ASCII 코드는 7비트 또는 8비트 이진수의 지정된 조합을 사용하여 128 또는 256개의 가능한 문자를 나타냅니다. 기본 ASCII 코드라고도 하는 표준 ASCII 코드는 7비트 이진수를 사용하여 모든 대문자와 소문자, 숫자 0~9, 구두점 및 미국 영어에 사용되는 특수 제어 문자를 나타냅니다.
그 중
0~31과 127(총 33개)은 제어 문자 또는 통신 전용 문자(나머지는 표시 가능한 문자)입니다. 예를 들어 제어 문자: LF(줄 바꿈), CR(캐리지 리턴) ), FF( 페이지 피드), DEL(삭제), BS(백스페이스), BEL(링) 등 통신 특수 문자: SOH(텍스트 헤드), EOT(텍스트 끝), ACK(확인) 등 .; ASCII 값은 8, 9, 10 및 13이며 각각 백스페이스, 탭, 줄 바꿈 및 캐리지 리턴 문자로 변환됩니다. 특정 그래픽 표시가 없지만 응용 프로그램에 따라 텍스트 표시에 다른 효과가 있습니다.
32~126(총 95개)은 문자(32는 공백)이고, 그 중 48~57은 0부터 9까지의 10개의 아라비아 숫자입니다.
숫자 65~90은 대문자 영문자 26자, 숫자 97~122는 영문 소문자 26자, 나머지는 구두점, 산술 기호 등입니다.
GBK
GBK는 이전 버전인 GB 2312 인코딩과 호환됩니다. 중화인민공화국이 규정한 한자 컴퓨터 인코딩 규격이다. 이전 버전은 GB2312입니다.
유니코드
유니코드(유니코드, 유니버설 코드, 유니코드) 유니코드는 세계의 모든 텍스트와 기호를 수용할 수 있는 국제기구에서 개발한 문자 인코딩 체계입니다. 교차 언어 및 교차 플랫폼 텍스트 변환 및 처리 요구 사항을 충족합니다.
UTF-8
은 유니코드용 가변 길이 문자 인코딩이자 범용 코드이기도 합니다. UNICODE는 ASCII보다 두 배의 공간을 차지하고 상위 바이트 0은 ASCII에 쓸모가 없기 때문입니다. 이러한 문제를 해결하기 위해 몇 가지 중간 형식의 문자 집합이 등장했는데 이를 Universal Transformation Format, 즉 UTF(Universal Transformation Format)
실제 작업에 사용하는 인코딩
중국어에서 흔히 사용되는 문자 집합은 utf-8과 GBK로 구분됩니다.
실제 사용된 것은 다음과 같습니다.
(그림 1)의 특성을 보면 MySQL 문자 집합이 세 부분으로 구성되어 있음을 알 수 있습니다.
1. 문자 집합
2. 언어
3. 마지막으로 bin은 이진 문자 집합을 나타내며, 다음 ci는 저장 및 정렬 시 대소문자를 구분하지 않는 문자를 나타냅니다.
참고:
mysql은 utf-8을 작성할 때 utf8을 작성합니다. 중간 수평선을 추가하지 마십시오.테이블엔진MySQL의 힘은 플러그인 스토리지 엔진을 사용하면 테이블의 특성에 따라 다양한 스토리지 엔진을 사용하여 최고의 성능을 얻을 수 있습니다.
충분히 친숙하고 특정 업무 경험이 있는 경우. 자체 서버에서 Alibaba 및 NetEase가 오픈소스로 제공하는 MySQL 엔진을 사용할 수도 있습니다.
다음 섹션 "데이터베이스 구조 정의문"에서 테이블을 생성하는 명령문을 배울 수 있습니다. mysql이 테이블을 생성할 때 해당 엔진을 지정할 수 있습니다.
mysql 명령에서 사용:
showengines
현재 서버에서 지원하는 모든 엔진을 확인합니다.
일반적으로 사용되는 몇 가지 엔진을 소개하고 덜 일반적으로 사용되는 몇 가지 엔진에 대해 알아봅니다. 앞으로는 실제 작업에서 개념을 모르는 일부 엔진을 보지 마십시오.
MyISAM
은 트랜잭션, 테이블 잠금(테이블 수준 잠금, 잠금은 전체 테이블을 잠김)을 지원하지 않으며 전체 텍스트 인덱스를 지원합니다. 빠르게 작동합니다. 책을 많이 읽는 기업에 자주 사용됩니다.
참고:
행 잠금: 다른 사람이 조작하지 못하도록 쓰기 및 업데이트 작업 중에 이 행을 잠급니다.
테이블 잠금: 쓰기 및 업데이트 작업 중에 다른 사람이 테이블을 조작하지 못하도록 테이블을 잠급니다.
트랜잭션: 데이터 작업 중 하나가 실패하면 동시에 여러 데이터를 작업합니다. 작업 이전으로 롤백할 수 있습니다. 은행, 전자상거래, 금융 및 기타 시스템에서 일반적으로 사용됩니다.
인덱스
인덱스는 참으로 유명한 이름 같은데, 솔직히 말하면, 그것은 우리 책의 최신 목차입니다.
목차를 사용하지 않고 신화사전을 사용하여 한자 "张"을 검색하는 경우 신화사전의 첫 페이지에서 마지막 페이지까지 이동해야 할 수 있으며, 이는 최대 두 시간. 사전이 두꺼울수록 시간이 더 많이 걸립니다. 이제 디렉토리를 사용하여 한자 "Zhang"을 찾습니다. Zhang의 첫 글자는 z이고, z로 시작하는 한자는 900페이지 이상부터 검색하는 데 1분밖에 걸리지 않습니다. 한자의 경우 이는 색인의 중요성을 나타냅니다.
색인은 열에 특정 값이 있는 행을 빠르게 찾는 데 사용됩니다.
인덱스를 사용하지 않으면 MySQL은 레코드 1에서 시작한 다음 관련 행을 찾을 때까지 전체 테이블을 읽어야 합니다. 테이블이 클수록 시간이 더 걸립니다. 테이블의 쿼리된 열에 인덱스가 있으면 MySQL은 모든 데이터를 볼 필요 없이 데이터 파일의 중간을 검색하는 지점에 빠르게 도달할 수 있습니다.
물론 인덱스를 너무 많이 작성하는 것은 쉽지 않습니다. 인덱스를 많이 작성할수록 수정 속도가 느려집니다. 수정된 데이터를 쓸 때 인덱스도 수정해야 하기 때문입니다.
MySQL 인덱스 유형
다음 섹션