이 기사는 MySQL 9.1에서 JSON 구현의 세부 사항을 탐구하고 SQL과 NOSQL 데이터베이스 사이의 경계가 이전 기사 "SQL vs NoSQL : The Differences"에서 흐려진다는 주장을 계속합니다. 특징. MySQL 5.7 innodb 데이터베이스와 PostgreSQL 9.2는 JSON 문서 유형을 단일 필드에 직접 저장하는 지원을 지원합니다.
키 포인트
MySQL 5.7 InnoDB 데이터베이스 및 PostgreSQL 9.2는 JSON 문서 유형을 직접 지원하지만 직접 인덱싱 제한으로 인해주의해서 사용해야합니다.
JSON 데이터를 추가하십시오
<code class="language-sql">CREATE TABLE `book` ( `id` MEDIUMINT() UNSIGNED NOT NULL AUTO_INCREMENT, `title` VARCHAR(200) NOT NULL, `tags` JSON DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB;</code>
<code class="language-sql">ALTER TABLE book ADD COLUMN first_tag VARCHAR(50) AS (JSON_UNQUOTE(tags->'$[0]')), ADD INDEX idx_first_tag (first_tag);</code>
배열을 만드는 데 사용되는
MySQL JSON 열에서 JSON 문서 검색
mySQL JSON 함수를 사용하여 json_contains () 함수와 같은 JSON 문서에 특정 값이 포함되어 있는지 확인할 수 있습니다. 경기가 발견되면 1을 반환합니다. 예를 들면 :<code class="language-sql">INSERT INTO `book` (`title`, `tags`) VALUES ( 'ECMAScript 2015: A SitePoint Anthology', '["JavaScript", "ES2015", "JSON"]' );</code>
당신은 또한 "One"및 "All"플래그 및 검색 문자열을 전달하여 모든 경기를 찾아야하는지 여부를 지정할 수 있습니다 (여기서 %는 여러 문자와 일치하고 _와 같은 한 문자와 일치합니다). 예를 들면 :
- json_table () 함수 json 데이터를 관계형 형식으로 변환하여 쿼리를보다 쉽게 할 수 있도록합니다.
- JSON PATH
JSON_Extract () 함수를 사용한mysql json 쿼리는 지정된 경로를 기반으로 JSON 문서에서 특정 값을 검색 할 수 있습니다. 모든 경로 정의는 $로 시작하여 다른 선택기가 이어집니다.
<code class="language-sql">CREATE TABLE `book` ( `id` MEDIUMINT() UNSIGNED NOT NULL AUTO_INCREMENT, `title` VARCHAR(200) NOT NULL, `tags` JSON DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB;</code>기간과 $ .website 와 같은 이름이 이어집니다 [n], 여기서 n은 제로 인덱스 어레이의 위치 입니다. [*] 와일드 카드 평가 배열 모든 멤버 prefix ** 접미사 와일드 카드는 명명 된 접두사로 시작하는 모든 경로를 평가하고 이름이 지정된 접미사 로 끝납니다.
JSON 문서의 일부를 수정하십시오
즉, SQL 애플리케이션에서보다 모호한 데이터 요구 사항에 대해 JSON 데이터 유형은 약간의 노력을 절약 할 수 있습니다.
위에서 언급했듯이 JSON을 저장할 수 있다고 해서이 작업을 수행해야한다는 의미는 아닙니다. 정규화는 데이터베이스 구조를 최적화하는 기술입니다. 첫 번째 일반 공식 (1NF) 규칙은 각 열이 단일 값을 보유해야하며 다중 값 JSON 문서를 저장하면이 규칙을 위반합니다.
관계 설계가 비효율적 인 사용자 정의 속성.
MySQL 쿼리에서 JSON을 사용하는 방법은 ?
MySQL에 JSON 데이터를 저장하는 방법은 무엇입니까? 또는 JSON 데이터를 일반 바르 차르 또는 텍스트 열에 텍스트로 저장할 수 있습니다. 이 방법은 복잡한 데이터베이스 작업없이 JSON 데이터를 저장하고 검색 해야하는 경우에 적용됩니다.
MySQL에서 JSON 데이터를 색인화하는 방법은 ?
예를 들어
<code class="language-sql">CREATE TABLE `book` (
`id` MEDIUMINT() UNSIGNED NOT NULL AUTO_INCREMENT,
`title` VARCHAR(200) NOT NULL,
`tags` JSON DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB;</code>
<code class="language-sql">ALTER TABLE book
ADD COLUMN first_tag VARCHAR(50) AS (JSON_UNQUOTE(tags->'$[0]')),
ADD INDEX idx_first_tag (first_tag);</code>
MySQL 문서는 MySQL JSON 데이터 유형 및 관련 JSON 기능에 대한 자세한 정보를 제공합니다.
mysql 에서 JSON 데이터를 사용하는 것에 대한 질문이 자주 묻습니다
mySQL에서 JSON을 사용할 수 있습니까?
반 구조적 또는 동적 데이터는 엄격한 패턴에 적합하지 않습니다.
반 구조화 된 데이터 : 사용자 지정 속성과 같은 예측할 수 없거나 드문 드문 필드를 처리 할 때 JSON을 사용하십시오. <code class="language-sql">CREATE TABLE `book` (
`id` MEDIUMINT() UNSIGNED NOT NULL AUTO_INCREMENT,
`title` VARCHAR(200) NOT NULL,
`tags` JSON DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB;</code>
MySQL의 JSON 지원은 하이브리드 워크로드에 이상적이지만 문서 저장을위한 NOSQL 데이터베이스를 완전히 대체하는 것은 아닙니다.
위 내용은 MySQL 데이터베이스에서 JSON 데이터 필드를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!