ホームページ > データベース > mysql チュートリアル > Go 言語と MySQL データベース: データの役割属性をどのように分割するか?

Go 言語と MySQL データベース: データの役割属性をどのように分割するか?

王林
リリース: 2023-06-17 14:12:11
オリジナル
1035 人が閲覧しました

大規模アプリケーションの普及とインターネット技術の急速な発展に伴い、データベースはデータの保存、管理、検索に不可欠なツールとなっています。 MySQL は、オープンソースの無料のリレーショナル データベース管理システムであると同時に、Go 言語は、その高い同時実行パフォーマンスやその他の利点により、ますます多くの開発者に好まれています。アプリケーション シナリオでは、データ ロールとデータ属性が重要な役割を果たしますが、データをより適切に管理するには、さまざまなデータ ロールの属性を分割する必要があります。この記事では、Go 言語の MySQL データベースを使用してデータの役割と属性を分割する方法に焦点を当てます。

1. 役割の分割

データベースでは、通常、データの役割はビジネス ニーズとデータの使用方法に応じて分割されます。たとえば、電子商取引プラットフォームでは、データの役割をユーザー、製品、注文などに分割できます。役割が異なれば、データ属性も異なります。 MySQL データベースの役割を果たすには、さまざまな役割のデータ情報を保存するための対応するテーブルを作成する必要があります。

1.1 テーブルの作成

まず、MySQL を使用して、次のようにユーザー テーブルの SQL ステートメントを作成します。 #user

テーブル ID、名前、年齢、性別の 4 つの属性が含まれており、id 属性は主キーであり、自動的に追加されます。同様に、ビジネス ニーズに応じて他のテーブルのプロパティを設定することもできます。

1.2 データの追加、削除、変更、クエリ

Go

言語で、

MySQL を使用してデータを追加、削除、変更、クエリするには次の操作が必要です。 SQL ステートメントの使用には、主に次の 2 つの方法が含まれます: 1. CREATE/INSERT/UPDATE/DELETE

##CREATE コマンドは、次の目的で使用されます。テーブルを作成します。テーブルにデータを追加するには

INSERT

コマンドが使用され、テーブルを更新するには UPDATE コマンドが使用され、DELETE コマンドが使用されます。テーブル内の一部のデータを削除します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:sql;toolbar:false;'>CREATE TABLE user( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(64) NOT NULL, age INT NOT NULL, gender VARCHAR(4) );</pre><div class="contentsignin">ログイン後にコピー</div></div>2. SELECT

SELECT コマンドは、テーブル内のデータをクエリするために使用されます。

Query

を使用できます。または QueryRow メソッドを使用して SQL クエリを実行します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:go;toolbar:false;'>import ( &quot;database/sql&quot; &quot;fmt&quot; _ &quot;github.com/go-sql-driver/mysql&quot; ) func main() { username := &quot;root&quot; password := &quot;password&quot; host := &quot;localhost:3306&quot; database := &quot;db1&quot; db, err := sql.Open(&quot;mysql&quot;, fmt.Sprintf(&quot;%s:%s@tcp(%s)/%s&quot;, username, password, host, database)) if err != nil { panic(err) } defer db.Close() // CREATE 命令 _, err = db.Exec(&quot;CREATE TABLE user(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(64) NOT NULL, age INT NOT NULL, gender VARCHAR(4))&quot;) if err != nil { panic(err) } // INSERT 命令 _, err = db.Exec(&quot;INSERT INTO user(name, age, gender) VALUES (?, ?, ?)&quot;, &quot;Tom&quot;, 18, &quot;男&quot;) if err != nil { panic(err) } // UPDATE 命令 _, err = db.Exec(&quot;UPDATE user SET gender = ? WHERE id = ?&quot;, &quot;女&quot;, 1) if err != nil { panic(err) } // DELETE 命令 _, err = db.Exec(&quot;DELETE FROM user WHERE id = ?&quot;, 1) if err != nil { panic(err) } }</pre><div class="contentsignin">ログイン後にコピー</div></div>上記のコード例を通じて、データのクエリ、追加、削除、更新などの一般的な操作を実行できます。 2. 属性の分割

データの役割が異なると、各データ属性の重要性も異なります。属性タイプと属性値の範囲の違いも、データの処理方法に影響します。

2.1 データ型の選択

MySQL

では、データ型には主に

INT

VARCHAR が含まれます。 DATEFLOATDOUBLE など。異なるデータ型は異なる記憶領域を占有します。属性タイプを選択するときは、ストレージ容量をできるだけ減らす必要があります。そうしないと、データベースのパフォーマンスに悪影響が生じます。 たとえば、ユーザーの年齢を保存する必要がある場合、年齢の値が 100 を超えないため、ストレージに INT タイプを使用することを選択できます。

型の範囲は -2147483648 ~ 2147483647 で、記憶域が小さくなり、クエリが高速になります。

2.2 属性値の範囲 データ型が悪用されないことに加えて、特にデータに個人情報が含まれる場合、属性値の範囲も制限する必要があります。ユーザーのパスワードなど。

たとえば、ユーザー テーブルにパスワード属性を追加するには、

VARCHAR(64)

型を使用できますが、パスワードの長さは長すぎてはなりません。長くしないと、ストレージのオーバーヘッドが増加します。 。同時に、ユーザーのパスワードを保護する必要があり、通常は MD5、SHA-1、SHA-256 などのハッシュ アルゴリズムを使用して暗号化する必要があります。

import (
  "database/sql"
  "fmt"
  _ "github.com/go-sql-driver/mysql"
)

func main() {
  username := "root"
  password := "password"
  host := "localhost:3306"
  database := "db1"
  db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/%s", username, password, host, database))
  if err != nil {
    panic(err)
  }
  defer db.Close()
  // 查询 user 表格中所有信息
  rows, err := db.Query("SELECT * FROM user")
  if err != nil {
    panic(err)
  }
  defer rows.Close()
  for rows.Next() {
    var id, age int
    var name, gender string
    err := rows.Scan(&id, &name, &age, &gender)
    if err != nil {
      panic(err)
    }
    fmt.Println(id, name, age, gender)
  }
  // 根据条件查询 user 表格中数据
  row := db.QueryRow("SELECT * FROM user WHERE id = ?", 2)
  var id, age int
  var name, gender string
  err = row.Scan(&id, &name, &age, &gender)
  if err != nil {
    if err == sql.ErrNoRows {
      fmt.Println("没有查询到记录")
      return
    }
    panic(err)
  }
  fmt.Println(id, name, age, gender)
}
ログイン後にコピー

MD5 暗号化アルゴリズムを使用することにより、パスワードの長さが比較的固定された値となり、プライバシーの保護が実現されます。

3. 概要

この記事では、

Go

言語と

MySQL

データベースでデータの役割と属性を分割する方法を紹介しました。データをより適切に管理するには、さまざまなビジネス ニーズに応じてさまざまなデータの役割を分割し、データ属性の種類と値の範囲を制御する必要があります。同時に、データの追加、削除、変更、クエリ操作を実行する場合は、対応する SQL ステートメントを使用する必要があります。上記の紹介を通じて、読者はデータの役割と属性を分割する方法についてより深く理解できたと思います。

以上がGo 言語と MySQL データベース: データの役割属性をどのように分割するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート