데이터 베이스 MySQL 튜토리얼 Go 언어에서 MySQL을 사용하여 비관계형 데이터 처리 구현

Go 언어에서 MySQL을 사용하여 비관계형 데이터 처리 구현

Jun 17, 2023 pm 08:08 PM
mysql 언어로 가다 비관계형 데이터 처리

인터넷의 급속한 발전과 함께 비관계형 데이터베이스(NoSQL)가 점점 더 널리 사용되고 있으며, Go 언어에도 데이터를 처리하는 비관계형 방식이 있습니다. 그러나 MySQL과 같은 일부 기존 관계형 데이터베이스의 경우 일부 기술을 사용하여 비관계형 데이터 처리 기능을 구현할 수도 있습니다.

이 기사에서는 비관계형 테이블을 생성 및 설계하는 방법을 포함하여 MySQL을 사용하여 Go 언어로 비관계형 데이터 처리를 구현하는 방법과 기술을 소개하고 데이터를 읽고 쓰고 갱신하는 방법을 예제를 통해 보여줍니다. . 이 프로세스에서는 github.com/go-sql-driver/mysql 라이브러리 중 하나를 사용합니다.

1. 비관계형 테이블 만들기

MySQL 데이터베이스의 경우 일반적으로 관계형 데이터베이스라고 생각하기 때문에 테이블을 설계하고 테이블 간의 관계를 유지해야 합니다. 그러나 때로는 JSON 형식 데이터와 같은 비관계형 구조로 데이터를 저장해야 하는 경우도 있습니다.

MySQL에서는 JSON 유형 필드를 사용하여 비관계형 저장소를 구현할 수 있습니다. 예를 들어, 사용자의 개인 정보를 저장하기 위한 JSON 유형 필드 "info"가 포함된 사용자 정보를 저장하는 테이블을 생성합니다.

CREATE TABLE users (
   id INT(11) NOT NULL AUTO_INCREMENT,
   name VARCHAR(50) NOT NULL,
   info JSON NOT NULL,
   PRIMARY KEY (id)
);
로그인 후 복사

위 코드에서는 "users"라는 테이블을 생성합니다. 여기에는 세 개의 필드가 포함됩니다. 아이디, 이름, 정보입니다. 정보 필드의 유형은 사용자의 개인 정보를 저장하는 데 사용되는 JSON입니다. 실제 응용 프로그램에서는 BLOB, TEXT 등과 같은 다른 비관계형 유형을 사용할 수도 있습니다.

2. Go 언어를 사용하여 MySQL 데이터베이스에 연결

Go 언어로 MySQL 데이터베이스에 연결하려면 타사 라이브러리를 사용해야 하며, 가장 일반적으로 사용되는 라이브러리는 github.com/go-sql-driver/mysql입니다. 먼저 다음 명령을 통해 설치할 수 있는 이 라이브러리를 설치해야 합니다.

go get github.com/go-sql-driver/mysql
로그인 후 복사

이 라이브러리는 데이터베이스 연결 및 작업에 사용할 수 있는 sql.DB 유형을 제공합니다. 데이터베이스에 연결하기 전에 다음과 같은 몇 가지 구성 정보를 제공해야 합니다.

dsn := "root:password@(127.0.0.1:3306)/database_name?charset=utf8mb4&parseTime=True&loc=Local"
db, err := sql.Open("mysql", dsn)
if err != nil {
   panic(err)
}
defer db.Close()
로그인 후 복사

dsn은 데이터베이스에 연결하는 데 사용되는 데이터 소스 이름입니다. 여기에는 사용자 이름, 비밀번호, 호스트 주소, 포트 번호, 데이터베이스 이름, 인코딩 방법 및 기타 정보가 포함됩니다. 위 코드에서는 로컬 호스트 주소와 기본 3306 포트 번호를 사용하고 사용자 이름과 비밀번호를 해당 값으로 바꿉니다. 연결이 성공하면 db 변수에는 연결한 MySQL 데이터베이스에 대한 참조가 포함됩니다.

3. 비관계형 데이터를 읽고 쓰는 Go 언어

MySQL 데이터베이스에 연결한 후 sql.DB 유형을 사용하여 SQL 쿼리를 실행하고 관련 데이터를 얻을 수 있습니다. 비관계형 데이터의 경우 MySQL의 JSON 함수를 사용하여 JSON 유형 필드를 읽고 쓸 수 있습니다.

  1. 비관계형 데이터 쓰기

다음 코드는 사용자 테이블에 새 사용자 정보를 쓰는 방법을 보여줍니다.

info := `{
   "age": 23,
   "gender": "male",
   "email": "john@example.com"
}`
result, err := db.Exec("INSERT INTO users(name, info) VALUES(?, ?)", "John", info)
if err != nil {
   panic(err)
}
fmt.Printf("New user id: %d
", result.LastInsertId())
로그인 후 복사

이 예에서는 먼저 사용자 정보 문자열이 포함된 JSON 문자를 정의합니다. 그런 다음 Exec 함수를 사용하여 insert 문을 실행하고 사용자 정보를 매개 변수로 SQL 문에 전달합니다. 삽입이 성공하면 새 사용자의 ID를 얻어 출력합니다.

  1. 비관계형 데이터 읽기

다음으로 비관계형 필드에 저장된 JSON 데이터를 읽는 방법을 보여드리겠습니다. MySQL의 JSON_EXTRACT 함수를 사용하여 JSON에서 키-값 쌍을 간단히 얻을 수 있습니다. 다음 코드는 users 테이블의 모든 사용자 정보를 읽는 방법을 보여줍니다.

rows, err := db.Query("SELECT * FROM users")
if err != nil {
   panic(err)
}
defer rows.Close()

for rows.Next() {
   var id int
   var name string
   var info []byte
   err := rows.Scan(&id, &name, &info)
   if err != nil {
      panic(err)
   }
   var user map[string]interface{}
   err = json.Unmarshal(info, &user)
   if err != nil {
      panic(err)
   }
   fmt.Printf("ID: %d, Name: %s, Age: %f, Gender: %s, Email: %s
", id, name, user["age"], user["gender"], user["email"])
}
로그인 후 복사

이 예에서는 먼저 db.Query 함수를 사용하여 users 테이블의 모든 데이터를 쿼리합니다. 그런 다음 행.Scan 함수를 사용하여 각 데이터 행의 ID, 이름 및 정보 필드를 읽습니다. 다음으로, info 필드의 값을 map[string]interface{} 유형의 사용자 변수로 변환하고 구문 분석을 위해 json.Unmarshal 함수를 사용합니다. 마지막으로 각 사용자의 ID, 이름, 나이, 성별, 이메일을 출력합니다.

  1. 비관계형 데이터 업데이트

마지막으로 비관계형 필드에 저장된 데이터를 업데이트하는 방법을 보여줍니다. MySQL의 JSON_SET 함수를 사용하여 JSON 필드의 키-값 쌍을 동적으로 업데이트할 수 있습니다. 아래 코드는 사용자의 이메일 주소를 새 값으로 업데이트하는 방법을 보여줍니다.

result, err := db.Exec("UPDATE users SET info=JSON_SET(info, '$.email', ?) WHERE name=?", "john_doe@example.com", "John")
if err != nil {
   panic(err)
}
rowsAffected, err := result.RowsAffected()
if err != nil {
   panic(err)
}
fmt.Printf("Rows affected: %d
", rowsAffected)
로그인 후 복사

이 예에서는 Exec 함수를 사용하여 업데이트 문을 실행하고 새 이메일 주소를 SQL 문의 JSON_SET 함수에 매개 변수로 전달합니다. . WHERE 절을 사용하여 업데이트할 사용자의 이름을 지정합니다. 업데이트가 성공하면 영향을 받은 행 수를 확인하고 출력합니다.

4. 요약

Go 언어에서는 MySQL 데이터베이스를 사용하여 비관계형 데이터를 저장할 수 있습니다. JSON 유형의 필드를 사용하면 데이터를 JSON 형식으로 쉽게 저장하고 처리할 수 있습니다. 이 문서에서는 비관계형 테이블 생성, MySQL 데이터베이스 연결, 비관계형 데이터 읽기 및 쓰기를 위한 방법과 기술, 데이터 작업을 위한 JSON_EXTRACT 및 JSON_SET 함수 사용 예를 소개합니다. 실제 애플리케이션에서 MySQL을 사용하여 비관계형 데이터를 더 잘 처리하는 데 도움이 될 수 있습니다.

위 내용은 Go 언어에서 MySQL을 사용하여 비관계형 데이터 처리 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP에서 MySQL 쿼리 성능을 최적화하는 방법은 무엇입니까? PHP에서 MySQL 쿼리 성능을 최적화하는 방법은 무엇입니까? Jun 03, 2024 pm 08:11 PM

선형 복잡성에서 로그 복잡성까지 조회 시간을 줄이는 인덱스를 구축하여 MySQL 쿼리 성능을 최적화할 수 있습니다. SQL 삽입을 방지하고 쿼리 성능을 향상하려면 PREPAREDStatements를 사용하세요. 쿼리 결과를 제한하고 서버에서 처리되는 데이터의 양을 줄입니다. 적절한 조인 유형 사용, 인덱스 생성, 하위 쿼리 사용 고려 등 조인 쿼리를 최적화합니다. 쿼리를 분석하여 병목 현상을 식별하고, 캐싱을 사용하여 데이터베이스 로드를 줄이고, 오버헤드를 최소화합니다.

PHP에서 MySQL 백업 및 복원을 사용하는 방법은 무엇입니까? PHP에서 MySQL 백업 및 복원을 사용하는 방법은 무엇입니까? Jun 03, 2024 pm 12:19 PM

PHP에서 MySQL 데이터베이스를 백업하고 복원하는 작업은 다음 단계에 따라 수행할 수 있습니다. 데이터베이스 백업: mysqldump 명령을 사용하여 데이터베이스를 SQL 파일로 덤프합니다. 데이터베이스 복원: mysql 명령을 사용하여 SQL 파일에서 데이터베이스를 복원합니다.

PHP를 사용하여 MySQL 테이블에 데이터를 삽입하는 방법은 무엇입니까? PHP를 사용하여 MySQL 테이블에 데이터를 삽입하는 방법은 무엇입니까? Jun 02, 2024 pm 02:26 PM

MySQL 테이블에 데이터를 삽입하는 방법은 무엇입니까? 데이터베이스에 연결: mysqli를 사용하여 데이터베이스에 대한 연결을 설정합니다. SQL 쿼리 준비: 삽입할 열과 값을 지정하는 INSERT 문을 작성합니다. 쿼리 실행: query() 메서드를 사용하여 삽입 쿼리를 실행하면 확인 메시지가 출력됩니다.

MySQL 8.4에서 mysql_native_password가 로드되지 않음 오류를 수정하는 방법 MySQL 8.4에서 mysql_native_password가 로드되지 않음 오류를 수정하는 방법 Dec 09, 2024 am 11:42 AM

MySQL 8.4(2024년 최신 LTS 릴리스)에 도입된 주요 변경 사항 중 하나는 "MySQL 기본 비밀번호" 플러그인이 더 이상 기본적으로 활성화되지 않는다는 것입니다. 또한 MySQL 9.0에서는 이 플러그인을 완전히 제거합니다. 이 변경 사항은 PHP 및 기타 앱에 영향을 미칩니다.

PHP에서 MySQL 저장 프로시저를 사용하는 방법은 무엇입니까? PHP에서 MySQL 저장 프로시저를 사용하는 방법은 무엇입니까? Jun 02, 2024 pm 02:13 PM

PHP에서 MySQL 저장 프로시저를 사용하려면: PDO 또는 MySQLi 확장을 사용하여 MySQL 데이터베이스에 연결합니다. 저장 프로시저를 호출하는 문을 준비합니다. 저장 프로시저를 실행합니다. 결과 집합을 처리합니다(저장 프로시저가 결과를 반환하는 경우). 데이터베이스 연결을 닫습니다.

PHP를 사용하여 MySQL 테이블을 만드는 방법은 무엇입니까? PHP를 사용하여 MySQL 테이블을 만드는 방법은 무엇입니까? Jun 04, 2024 pm 01:57 PM

PHP를 사용하여 MySQL 테이블을 생성하려면 다음 단계가 필요합니다. 데이터베이스에 연결합니다. 데이터베이스가 없으면 작성하십시오. 데이터베이스를 선택합니다. 테이블을 생성합니다. 쿼리를 실행합니다. 연결을 닫습니다.

PHP를 사용하여 MySQL 테이블에서 데이터를 삭제하는 방법은 무엇입니까? PHP를 사용하여 MySQL 테이블에서 데이터를 삭제하는 방법은 무엇입니까? Jun 05, 2024 pm 12:40 PM

PHP는 MySQL 테이블의 데이터를 삭제하기 위해 다음 방법을 제공합니다. DELETE 문: 테이블에서 조건과 일치하는 행을 삭제하는 데 사용됩니다. TRUNCATETABLE 문: 자동 증가된 ID를 포함하여 테이블의 모든 데이터를 지우는 데 사용됩니다. 실제 사례: HTML 양식과 PHP 코드를 사용하여 데이터베이스에서 사용자를 삭제할 수 있습니다. 양식은 사용자 ID를 제출하고 PHP 코드는 DELETE 문을 사용하여 사용자 테이블에서 ID와 일치하는 레코드를 삭제합니다.

golang 프레임워크의 장점은 무엇인가요? golang 프레임워크의 장점은 무엇인가요? Jun 06, 2024 am 10:26 AM

Golang 프레임워크의 장점 Golang은 마이크로서비스 및 분산 시스템에 특히 적합한 고성능 동시 프로그래밍 언어입니다. Golang 프레임워크는 미리 만들어진 구성 요소 및 도구 세트를 제공하여 이러한 애플리케이션을 더 쉽게 개발할 수 있도록 해줍니다. 다음은 Golang 프레임워크의 주요 장점 중 일부입니다. 1. 고성능 및 동시성: Golang 자체는 고성능 및 동시성으로 유명합니다. 코드 동시 실행을 허용하는 경량 스레딩 메커니즘인 고루틴을 사용하여 애플리케이션 처리량과 응답성을 향상시킵니다. 2. 모듈성 및 재사용성: Golang 프레임워크는 모듈성과 재사용 가능한 코드를 장려합니다. 애플리케이션을 독립된 모듈로 분리하면 코드를 쉽게 유지 관리하고 업데이트할 수 있습니다.

See all articles