> 데이터 베이스 > MySQL 튜토리얼 > mysql의 키, 기본 키, 고유 키 및 인덱스의 차이점에 대한 자세한 설명

mysql의 키, 기본 키, 고유 키 및 인덱스의 차이점에 대한 자세한 설명

藏色散人
풀어 주다: 2020-04-12 13:57:57
앞으로
3636명이 탐색했습니다.

1. 키와 기본 키의 차이점

CREATE TABLE wh_logrecord (
logrecord_id int(11) NOT NULL auto_increment,
user_name varchar(100) default NULL,
operation_time datetime default NULL,
logrecord_operation varchar(100) default NULL,
PRIMARY KEY (logrecord_id),
KEY wh_logrecord_user_name (user_name)
)
로그인 후 복사

권장: "mysql 비디오 튜토리얼"

분석:

KEY wh_logrecord_user_name (user_name)
로그인 후 복사

이 테이블의 user_name 필드와 wh_logrecord_user_name 테이블의 user_name 필드는 외래 키를 설정합니다

외래키는 괄호 밖에 설정됩니다 해당 테이블, 해당 필드는 괄호 안에 있습니다

마찬가지로 KEY 사용자(userid)가 있습니다

물론 키가 반드시 외래 키일 필요는 없습니다

요약:

Key 테이블의 필드에 대한 인덱스를 제한하는 인덱스 제약 조건은 기본 외부 고유 등을 통해 생성됩니다. 외래 키 연관에 사용되는 외래 키가 일반적으로 사용됩니다.

KEY forum (status,type,displayorder) # 是多列索引(键)
KEY tid (tid) # 是单列索引(键)。
로그인 후 복사

예를 들어 테이블을 생성할 때: KEY forum (status,type,displayorder)

select * from table group by status,type,displayorder

그리고 select *를 하면 자동으로 사용되나요? 상태별 테이블 그룹에서 이 인덱스가 유용합니까?

키 사용 : 주로 쿼리 속도를 높이는 데 사용됩니다.

2. KEY와 INDEX의 차이점

참고: 이 부분은 아직도 헷갈립니다.

KEY는 일반적으로 INDEX의 동의어입니다. PRIMARY KEY는 키워드 속성 PRIMARY KEY가 열 정의에 제공되는 경우에만 KEY로 지정할 수도 있습니다. 이는 다른 데이터베이스 시스템과의 호환성을 위해 수행됩니다. PRIMARY KEY는 고유한 KEY이며, 이때 모든 키 컬럼은 NOT NULL로 정의되어야 합니다. 이러한 열이 명시적으로 NOT NULL로 정의되지 않은 경우 MySQL은 이러한 열을 암시적으로 정의해야 합니다. 테이블에는 PRIMARY KEY가 하나만 있습니다.

MySQL에서 Index와 Key의 차이점

Key는 키 값으로, 기본 키(Primary Key), 외래 키(Foreign Key) 등 관계형 모델 이론의 일부입니다. ., 데이터 무결성 검사 및 고유성 제약 조건 등을 사용했습니다. 인덱스는 구현 수준에 있습니다. 예를 들어 테이블의 모든 열을 인덱스할 수 있습니다. 그런 다음 인덱스된 열이 SQL 문의 Where 조건에 있으면 빠른 데이터 위치를 얻을 수 있으므로 빠른 검색이 가능합니다. Unique Index는 Index의 한 종류일 뿐입니다. Unique Index를 설정한다는 것은 이 열의 데이터가 반복될 수 없다는 의미입니다. MySQL은 Unique Index 형식의 인덱스를 더욱 최적화할 수 있을 것 같습니다.

그래서 테이블을 디자인할 때 Key는 모델 레벨에만 있으면 되고, 쿼리 최적화가 필요한 경우 해당 컬럼을 Index화하면 됩니다.

또한 MySQL에서는 기본 키 열에 대해 고유 인덱스가 자동으로 설정되므로 해당 열에 대한 인덱스를 반복적으로 생성할 필요가 없습니다.

발견된 설명:

Note that “primary” is called PRIMARY KEY not INDEX.
KEY is something on the logical level, describes your table and database design (i.e. enforces referential integrity…)
INDEX is something on the physical level, helps improve access time for table operations.
Behind every PK there is (usually) unique index created (automatically).
로그인 후 복사

3. mysql에서 UNIQUE KEY와 PRIMARY KEY의 차이점은 무엇입니까?

1. 기본 키의 하나 이상의 열은 NULL이 아니어야 합니다. 열이 NULL인 경우 PRIMARY KEY를 추가하면 열이 자동으로 NOT NULL로 변경됩니다. UNIQUE KEY에는 열에 대한 이러한 요구 사항이 없습니다

2. 테이블은 하나의 PRIMARY KEY만 가질 수 있지만 UNIQUE KEY는 여러 개 있을 수 있습니다

3. 기본 키 및 고유 키 제약 조건은 참조 인덱스를 통해 구현됩니다. 삽입한 값은 모두 NULL이므로 인덱스 원칙에 따라 모든 NULL 값은 인덱스에 기록되지 않으므로 NULL 값을 모두 삽입할 때 중복이 있을 수 있으나 다른 중복 값은 불가능 삽입됩니다.

alter table t add constraint uk_t_1 unique (a,b);
insert into t (a ,b ) values (null,1);    # 不能重复
insert into t (a ,b ) values (null,null);#可以重复
로그인 후 복사

4. UNIQUE KEY 사용

CREATE TABLE `secure_vulnerability_warning` (
  `id` int(10) NOT NULL auto_increment,
  `date` date NOT NULL,
  `type` varchar(100) NOT NULL,
  `sub_type` varchar(100) NOT NULL,
  `domain_name` varchar(128) NOT NULL,
  `url` text NOT NULL,
  `parameters` text NOT NULL,
  `hash` varchar(100) NOT NULL,
  `deal` int(1) NOT NULL,
  `deal_date` date default NULL,
  `remark` text,
  `last_push_time` datetime default NULL,
  `push_times` int(11) default '1',
  `first_set_ok_time` datetime default NULL,
  `last_set_ok_time` datetime default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `date` (`date`,`hash`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8
로그인 후 복사

UNIQUE KEY의 목적: 주로 데이터 삽입 시 중복을 방지하기 위해 사용됩니다.

1. 테이블 생성 시

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (Id_P)
)
로그인 후 복사

UNIQUE 제약 조건의 이름을 지정하고 여러 열에 대한 UNIQUE 제약 조건을 정의해야 하는 경우 다음 SQL 구문을 사용하세요.

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
)
로그인 후 복사

2. "Id_P"의 UNIQUE 제약 조건 열에 UNIQUE 제약 조건을 생성하려면 다음 SQL을 사용하십시오.

ALTER TABLE Persons
ADD UNIQUE (Id_P)
로그인 후 복사

UNIQUE 제약 조건의 이름을 지정하고 여러 열에 대한 UNIQUE 제약 조건을 정의해야 하는 경우 다음 SQL 구문을 사용하십시오.

ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
로그인 후 복사

3, UNIQUE 제약 조건을 취소하세요

UNIQUE 제약 조건을 취소해야 하는 경우 다음 SQL을 사용하세요:

ALTER TABLE Persons
DROP INDEX uc_PersonID
로그인 후 복사

위 내용은 mysql의 키, 기본 키, 고유 키 및 인덱스의 차이점에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:cnblogs.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿