MySQL의 스토리지 엔진, 데이터 유형 및 문자 집합

테이블 타입 (스토리지 엔진) 선택

의 MyISAM, InnoDB의, BDB, MERGE, 예, NDB 클러스터, ARCHIVE, CSV, BLACKHOLE, FEDERATED 및 이노와 BDB 보안 테이블을 제공하는 다른 것들을 포함하여 MySQL의 스토리지 엔진 지원은, 다른 스토리지 엔진은 비 트랜잭션 안전 테이블입니다.

현재 기본 스토리지 엔진보기

show variables like 'table_type';
SHOW ENGINES;

화상 20,200,215,185,337,576

당신이 만들 때 테이블은 테이블 키워드 엔진을 추가하여 새로운 스토리지 엔진을 설정할 수 있습니다

CREATE TABLE ai(
    i bigint(20) NOT NULL AUTO_INCREMENT,
    PRIMARY KEY(i)
)ENGINE=MyISAM DEFAULT CHARSET=gbk;

CREATE TABLE country(
    country_id samllint unsigned not null auto_increment,
    country varchar(30) not null,
    last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)engine=InnoDB DEFAULT CHARSET=gbk;

스토리지 엔진을 변경

ALTER TABLE ai engine = INNODB
show create table ai 

결과는 다음과 같이 디스플레이가 이노 엔진으로 변경된다

CREATE TABLE `ai` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `bin` bit(1) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

화상 20,200,215,201,434,381

적절한 스토리지 엔진을 선택

화상 20,200,215,202,855,775

이노

제공 InnoDB 스토리지 엔진이 커밋, 롤백, 안전한 트랜잭션 처리의 응급 복구 기능을 제공합니다.

1 자동 성장한다 행
CREATE table autoincre_demo
(i smallint not null auto_increment,
 name varchar(10), PRIMARY key(i)
)engine=innodb;


insert into autoincre_demo values(1,'1'),(0,'2'),(null,'3')

select * from autoincre_demo;

화상 20,200,215,210,634,744

문의 힘은 자동 증가 컬럼의 초기 값은 기본값은 1부터 시작 설정합니다.

당신은 하나 이상의 기록하고 성장 컬럼의 자동 복귀가 사용하는 첫 번째 레코드가 삽입되는 경우 LAST_INSERT_ID ()가, 마지막으로 사용한 삽입 기록 스레드의 현재 값을 조회 할 수 있습니다.

화상 20,200,215,210,723,014

select LAST_INSERT_ID();
INSERT into autoincre_demo(name) VALUES('5'),('6'),('7')

화상 20,200,215,211,825,305

InnoDB 테이블의 경우, 열은 자동으로 색인 증가해야합니다. 이 복합 인덱스 인 경우에는 지수의 첫 번째 열에 있어야한다.

2. 외래 키 제약 조건
CREATE TABLE `country` (
  `country_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
  `country` varchar(50) NOT NULL,
  `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`country_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
create table city(
    city_id smallint unsigned not null auto_increment,
    city varchar(50) not null,
    country_id smallint unsigned not null,
    last_update timestamp not null default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
    PRIMARY key(city_id),
    key idx_fx_country_id(country_id),
    constraint 'fk_city_country' foreign key(country_id) references country(country_id) on DELETE restrict on update CASCADE
)engine=INNODB default charset=utf8;

image-20200215213610423

3. 저장

image-20200215205124523

데이터 유형

CHAR 和 VARCHAR

image-20200215214005502

CREATE TABLE vc1(v VARCHAR(4), c CHAR(4));
insert into vc1 VALUES('ab  ','ab   ');
select concat(v,'+'),concat(c,'+') from vc1;

image-20200215224701226

CHAR는 고정 길이이기 때문에, 처리 속도는 훨씬 신속 VARCHAR보다하지만 단점은 저장 공간의 낭비

image-20200215225035876

TEXT 및 BLOB

둘 사이의 가장 큰 차이점은 사진과 같은 이진 BLOB 데이터를 저장하는 데 사용할 수 있습니다, 그리고 TEXT 할 수있는 유일한 문자 데이터를 저장.

테이블의 동작을 최적화하려면

insert into table1 VALUES(1,repeat('haha',20));
insert into table1 VALUES(2,repeat('haha',20));
insert into table1 VALUES(3,repeat('haha',10));

insert into table1 select * from table1;
insert into table1 select * from table1;

optimize table table1;

합성 색인 텍스트 필드의 사용을 증가하기위한 조치를 조회

create table table2(id varchar(100),context blob,hash_value varchar(40));
insert into table2 values(1,repeat('beijing',2),md5(context));
insert into table2 values(2,repeat('beijing1',2),md5(context));
insert into table2 values(3,repeat('beijing2',2),md5(context));
select * from table2;

image-20200215234628415

당신은 쿼리 "beijing2의 beijing2"을 원하는 경우 레코드는 해시 값으로 조회 할 수 있습니다.

select * from table2 where hash_value=md5(repeat('beijng1',2))

부동 소수점 및 고정 소수점

데이터의 정확성은 실제 정확성은 열에 삽입된다 넘으면 필드는 부동 소수점으로 정의 할 때, 상기 소수 부분을 나타 내기 위해 일반적으로 사용되는 부동 소수점 값을, 값은 실제 정의 정밀도 값을 삽입 반올림한다.

CREATE table table3(f float(8,1));
insert into table3 VALUES(1.23456);
SELECT * from table3;

image-20200216000022563

CREATE table test(c1 float(10,2), c2 decimal(10,2));
insert into test values(131072.32,131072.32);
select * from test;

image-20200216000405273

image-20200216000521039

날짜 유형 선택

image-20200215235521850

문자 집합

image-20200216120753726

show character set;

image-20200216122151309

현재 문자 집합 및 정렬 서버를 조회 :

show variables like 'character_set_server';

image-20200216121209691

새로운 문자 집합에 새 데이터베이스를 만듭니다 :

create database databasename default charset gbk;

추천

출처www.cnblogs.com/zhichun/p/12316352.html