>  기사  >  데이터 베이스  >  MySQL 5.7의 새로운 기능 | Json 열 및 생성된 열(1부)

MySQL 5.7의 새로운 기능 | Json 열 및 생성된 열(1부)

黄舟
黄舟원래의
2017-02-07 13:08:071313검색

MySQL 5.7 json 소개 서문

MySQL5.7에는 두 가지 새로운 필드 유형인 Json과 생성된 유형이 추가되었습니다. 생성된 유형이 없으면 Json 유형이 생성됩니다. 더 강력하고 생산적입니다. Json은 인덱스를 지원하지 않기 때문에 Json에서는 사용되지 않을 수 있지만, 인덱스가 없으면 Json에서 데이터를 쿼리하려는 경우 실행 효율성 측면에서 확실히 불가능합니다. 프로덕션 환경에서 사용되지만 생성된 유형은 다릅니다. 생성된 유형은 단순히 가상 필드입니다. 값은 다른 필드나 계산 또는 필드 간 변환에서 제공됩니다. 생성됨의 특성을 이용하여 Json에 간접적으로 추가할 수 있습니다. 해당 유형의 키는 Json이 인덱스를 생성할 수 없는 문제를 해결하기 위해 인덱스를 생성합니다. 즉, 생성된 유형의 생성은 Json 유형의 인덱싱 문제에 대한 지원을 제공합니다. JSON 값에는 단일 값, 배열, 튜플, 주석이 달린 Json 형식 등과 같은 여러 형식이 포함됩니다.

객관적으로 보면 Json 타입의 등장은 연구 개발의 편의성을 제공하고 NoSQL과 유사한 지원을 제공하지만 DBA 운영 및 유지 관리 측면에서 보면 이러한 문제가 발생할 수 있습니다. 문제는 동일합니다. json은 실제 프로덕션에서 텍스트 필드의 변형이 될 수 있습니다. 앞으로 5.7을 사용할 때 DBA가 이 유형에 세심한 주의를 기울였으면 좋겠습니다.

JSON 필드가 있는 테이블 생성

JSON 필드가 있는 테스트 테이블 직접 생성

CREATE TABLE json_test (
  id int(11) NOT NULL AUTO_INCREMENT,
  group_name varchar(20) DEFAULT NULL,
  user_info json DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

또는 테이블에 JSON 유형 필드 추가

 ALTER TABLE json_test ADD COLUMN user_info JSON DEFAULT NULL;

삽입 data

MySQL 5.7의 새로운 기능 | Json 열 및 생성된 열(1부)

JSON 필드 관련 쿼리

1. 전체 결과 쿼리

MySQL 5.7의 새로운 기능 | Json 열 및 생성된 열(1부)

2 : JSON_EXTRACT 쿼리

JSON_EXTRACT 이 함수는 주로 user_info에서 age=21인 레코드를 찾거나 name='wangwei' 또는 '%wangwei%'와 같은 이름의 레코드를 쿼리하는 등 정확한 일치에 사용됩니다.

SELECT * FROM json_test WHERE JSON_EXTRACT(user_info,'$.age')=21;

MySQL 5.7의 새로운 기능 | Json 열 및 생성된 열(1부)

MySQL 5.7의 새로운 기능 | Json 열 및 생성된 열(1부)

값이 배열인 경우 배열의 시작 위치 값은 0입니다. 동시에 MySQL은 5.5. 버전 9에는 JSON_EXTRACT와 동등한 작성 방법을 제공하는 ->가 추가되었습니다.

SELECT * FROM json_test WHERE user_info->"$.age"=21;

MySQL 5.7의 새로운 기능 | Json 열 및 생성된 열(1부)

MySQL 5.7의 새로운 기능 | Json 열 및 생성된 열(1부)

3. JSON_SEARCH 쿼리

JSON_SEARCH 문자열 검색 기능은 json의 키 값이 정확히 일치하는 문자열 'wangwei'인 레코드를 찾습니다. %를 추가하면 다음과 같습니다.

SELECT * FROM json_test WHERE JSON_SEARCH(user_info,'all','wangwei') IS NOT NULL;
SELECT * FROM json_test WHERE JSON_SEARCH(user_info,'all','wangwei%') IS NOT NULL;
SELECT * FROM json_test WHERE JSON_SEARCH(user_info,'all','%wangwei%') IS NOT NULL;


4. JSON_CONTAINS는 키에 지정된 값이 포함되어 있는지 확인합니다.

JSON_CONTAINS는 키에 지정된 값이 포함되어 있는지 확인합니다. 반환 값은 0 또는 1이거나 해당하는 경우가 포함되지 않습니다. 지정된 키가 집중되어 있지 않습니다:

MySQL 5.7의 새로운 기능 | Json 열 및 생성된 열(1부)

5. JSON_CONTAINS_PATH는 키가 필드에 존재하는지 여부를 결정합니다.

JSON_CONTAINS_PATH는 필드에 키가 존재하는지 여부를 결정합니다. 0과 1의 값을 반환하며 형식은 JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path]...)입니다. 1이면 경로에 하나만 있으면 됩니다. 1, 그렇지 않으면 0이 됩니다. 모두 포함해야 하며, 반환은 1이고, 그렇지 않으면 0입니다.

MySQL 5.7의 새로운 기능 | Json 열 및 생성된 열(1부)

6. JSON_LENGTH 길이 쿼리

JSON_LENGTH는 JSON 필드의 길이를 계산하는 데 사용됩니다.

MySQL 5.7의 새로운 기능 | Json 열 및 생성된 열(1부)

7: JSON_DEPTH 수준 쿼리

JSON_DEPTH는 주로 Json 필드의 수준입니다. 빈 값은 1이므로 일반적인 상황에서는 이 값을 쿼리한 결과가 2:

MySQL 5.7의 새로운 기능 | Json 열 및 생성된 열(1부)

8: JSON_TYPE은 Json 필드의 키 값의 데이터 유형을 쿼리합니다.

JSON_TYPE은 주로 Json 필드의 키 값의 데이터 유형을 쿼리하는 데 사용됩니다. 표시되는 유형은 다음과 같습니다. 다음:

순수한 JSON 유형:

OBJECT: JSON 개체;ARRAY: JSON 배열;BOOLEAN: JSON true 및 false 리터럴;NULL: JSON null 리터럴


숫자 유형:

INTEGER: MySQL TINYINT, SMALLINT, MEDIUMINT 및 INT 및 BIGINT 스칼라;DOUBLE: MySQL DOUBLE FLOAT 스칼라;DECIMAL: MySQL DECIMAL 및 NUMERIC 스칼라


임시 유형:

DATETIME: MySQL DATETIME 및 TIMESTAMP 스칼라;DATE: MySQL DATE 스칼라;TIME: MySQL TIME 스칼라


문자열 유형:

STRING: MySQL utf8 문자 유형 스칼라;CHAR, VARCHAR, TEXT, ENUM 및 SET


바이너리 유형:

BLOB: MySQL 바이너리 유형 스칼라;BINARY, VARBINARY, BLOB;BIT: MySQL BIT 스칼라


기타 모든 유형:

OPAQUE(원시 비트)

MySQL 5.7의 새로운 기능 | Json 열 및 생성된 열(1부)

9. JSON_UNQUOTE는 앞뒤의 특수 문자를 제거합니다.

JSON_UNQUOTE는 주로 앞뒤의 특수 문자를 제거하고 값의 형식을 지정하는 데 사용되며 현재 다음 문자를 지원합니다.

MySQL 5.7의 새로운 기능 | Json 열 및 생성된 열(1부)

MySQL 5.7의 새로운 기능 | Json 열 및 생성된 열(1부)

위는 MySQL 5.7의 새로운 기능| Json 열 및 생성된 열의 내용(1부), 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트(www.php.cn)를 주목하세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.