테이블 타입 (스토리지 엔진) 선택
의 MyISAM, InnoDB의, BDB, MERGE, 예, NDB 클러스터, ARCHIVE, CSV, BLACKHOLE, FEDERATED 및 이노와 BDB 보안 테이블을 제공하는 다른 것들을 포함하여 MySQL의 스토리지 엔진 지원은, 다른 스토리지 엔진은 비 트랜잭션 안전 테이블입니다.
현재 기본 스토리지 엔진보기
show variables like 'table_type';
SHOW ENGINES;
당신이 만들 때 테이블은 테이블 키워드 엔진을 추가하여 새로운 스토리지 엔진을 설정할 수 있습니다
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
적절한 스토리지 엔진을 선택
이노
제공 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;
문의 힘은 자동 증가 컬럼의 초기 값은 기본값은 1부터 시작 설정합니다.
당신은 하나 이상의 기록하고 성장 컬럼의 자동 복귀가 사용하는 첫 번째 레코드가 삽입되는 경우 LAST_INSERT_ID ()가, 마지막으로 사용한 삽입 기록 스레드의 현재 값을 조회 할 수 있습니다.
select LAST_INSERT_ID();
INSERT into autoincre_demo(name) VALUES('5'),('6'),('7')
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;
3. 저장
데이터 유형
CHAR 和 VARCHAR
CREATE TABLE vc1(v VARCHAR(4), c CHAR(4));
insert into vc1 VALUES('ab ','ab ');
select concat(v,'+'),concat(c,'+') from vc1;
CHAR는 고정 길이이기 때문에, 처리 속도는 훨씬 신속 VARCHAR보다하지만 단점은 저장 공간의 낭비
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;
당신은 쿼리 "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;
CREATE table test(c1 float(10,2), c2 decimal(10,2));
insert into test values(131072.32,131072.32);
select * from test;
날짜 유형 선택
문자 집합
show character set;
현재 문자 집합 및 정렬 서버를 조회 :
show variables like 'character_set_server';
새로운 문자 집합에 새 데이터베이스를 만듭니다 :
create database databasename default charset gbk;