0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DBMSについての雑記

Posted at

データベース操作について

メモ

  • 階層型データベース

 階層型データベースは、データを階層構造で組織化するデータモデルの一種です。データは木構造のように階層的に組織化され、親子関係を持ったデータを表現することができます。このデータモデルは、1960年代から1970年代にかけて、主にIBMのIMS(Information Management System)で使用されました。しかし、現在では関係データベースが主流であるため、階層型データベースはあまり使用されていません。


  • リレーショナルデータベース(RDB)

 リレーショナルデータベース(RDB)は、表形式のデータを管理するデータベースです。RDBでは、データを複数の関連するテーブルに分割し、それらを関係(リレーション)で結びつけます。テーブルは行と列から成り、行は各データレコードを表し、列はデータの属性(フィールド)を表します。RDBはSQL(Structured Query Language)と呼ばれる言語を使用してデータを操作します。RDBは、一般的にビジネスアプリケーションやWebアプリケーションなどで使用されています。主要なRDB製品には、Oracle、MySQL、Microsoft SQL Server、PostgreSQLなどがあります。


  • オブジェクト指向データベース

オブジェクト指向データベース(OODB)は、オブジェクト指向プログラミングの概念をデータベースに適用したものです。OODBでは、データをオブジェクトとして表現します。オブジェクトは、属性(データフィールド)とメソッド(操作)から構成されます。また、オブジェクト同士の関係を表現することができます。OODBは、オブジェクト指向プログラミング言語との親和性が高く、プログラム内でオブジェクトを操作する際に、データベースにアクセスする必要がなくなるため、開発効率が向上するとされています。主なOODB製品には、ObjectStore、Versant Object Database、ZODB(Zope Object Database)などがあります。ただし、OODBはリレーショナルデータベースと比較して、規模が大きくなるとパフォーマンスの問題が発生する場合があるため、使用する際には注意が必要です。


  • XMLデータベース

XMLデータベースは、XML文書を格納・管理するために特別に設計されたデータベースです。XMLは、タグを用いてデータを階層的に表現することができるため、XMLデータベースは、階層構造を持つデータを管理するのに適しています。XMLデータベースでは、XML文書をフィールドに持つテーブルを作成することができます。また、XPathやXQueryといったXMLのクエリ言語を使用して、XMLデータベース内のデータを検索することができます。XMLデータベースは、特に文書管理やWebアプリケーション開発などの分野で使用されます。代表的なXMLデータベース製品には、eXist、MarkLogic、Taminoなどがあります


  • キー・バリュー型データストア

キー・バリュー型データストアは、データをキーと値のペア(バリュー)で管理するデータストアです。データをキーとともに保存するため、高速にアクセスできます。また、分散環境での使用にも適しています。キー・バリュー型データストアは、単純で柔軟な構造を持ち、データモデルがシンプルなため、スケーラビリティが高く、可用性が高い特徴があります。一般的な用途としては、キャッシュやセッションストア、セッションマネージャー、カウンター、ログデータなどが挙げられます。代表的なキー・バリュー型データストアとしては、Redis、Memcached、Amazon DynamoDB、Apache Cassandra、Riakなどがあります。


  • 行単位でデータを読み書きする
  • 1つのセルには1つのデータしか入れられない
  • SQLは機能により3種類に分けられるが、最も使われるのはDML
  • セミコロン;で終わる
  • 大文字小文字は区別されない

  • DDL データ定義言語

DDLは、データ定義言語(Data Definition Language)の略で、データベースの構造(スキーマ)を定義するための言語です。DDLには、以下のようなコマンドがあります。

  • CREATE: テーブル、インデックス、ビュー、ストアドプロシージャなどのデータベースオブジェクトを作成します。
  • ALTER: 既存のデータベースオブジェクトの構造を変更します。例えば、テーブルに新しい列を追加するなどの変更が可能です。
  • DROP: データベースオブジェクトを削除します。
  • TRUNCATE: テーブルのデータを全て削除しますが、テーブル自体は削除しません。
  • COMMENT: データベースオブジェクトにコメントを追加します。

DDLは、データベース設計の重要な要素であり、データベースオブジェクトの構造を変更する場合にも使用されます。また、DDLコマンドを使用するには、データベース管理者の権限が必要です。


  • DMLデータ操作言語

DMLは、データ操作言語(Data Manipulation Language)の略で、データベースのレコードを操作するための言語です。DMLには、以下のようなコマンドがあります。

  • SELECT: データベースからレコードを抽出するために使用します。
  • INSERT: 新しいレコードをデータベースに挿入します。
  • UPDATE: データベース内の既存のレコードを更新します。
  • DELETE: データベース内のレコードを削除します。

これらのDMLコマンドを使用することで、データベース内のデータを検索、追加、変更、削除することができます。DMLは、SQL(Structured Query Language)によって実行され、データベースアプリケーションの中核的な要素となっています。DMLコマンドを実行するには、データベースのテーブルやビューにアクセスするための権限が必要です。


  • DCLは、データ制御言語

DCLは、データ制御言語(Data Control Language)の略で、データベースのセキュリティとアクセス権限を管理するための言語です。DCLには、以下のようなコマンドがあります。

  • GRANT: 特定のユーザーに、データベースオブジェクト(テーブル、ビュー、ストアドプロシージャなど)へのアクセス権を与えます。
  • REVOKE: 特定のユーザーから、データベースオブジェクトへのアクセス権を取り消します。

これらのDCLコマンドを使用することで、データベース管理者は、ユーザーアカウントを作成し、必要な権限を設定することができます。また、不正なアクセスや不正な操作からデータベースを保護することもできます。DCLコマンドを実行するには、データベース管理者の権限が必要です。


SQLでテーブルを作成するための基本的な構文


CREATE TABLE テーブル名 (
   カラム1 データ型 制約,
   カラム2 データ型 制約,
   ...
   カラムn データ型 制約
);

例えば、**employees**というテーブルを作成する場合は、以下のようになります。

CREATE TABLE employees (
   id INT PRIMARY KEY,
   name VARCHAR(255) NOT NULL,
   age INT,
   gender VARCHAR(10),
   salary DECIMAL(10, 2)
);

この例では、employeesというテーブルが作成され、idnameagegendersalaryという5つのカラムが定義されています。idカラムは主キーであり、nameカラムはNULLを許容しない制約が設定されています。agegender、**salary**カラムには制約がないため、NULL値が許容されます。

テーブルを作成する際に、カラムのデータ型や制約はデータベースによって異なります。また、オプションの構文やキーワードもあります。必要に応じて、データベースのドキュメントを確認する必要があります。


標準SQLの命名ルールについて

標準SQLでは、次のような命名ルールがあります。

  1. オブジェクト名の長さは、最大で128文字までとする。
  2. オブジェクト名は、アルファベット、数字、アンダースコア(_)を使用できる。
  3. オブジェクト名の先頭は、アルファベットでなければならない。
  4. オブジェクト名は、大文字と小文字を区別する。
  5. オブジェクト名には、予約語を使用できない。

具体的には、以下のようなオブジェクトについての命名ルールがあります。

  • テーブル名:テーブル名は、主キーのカラム名と区別するため、主キーのカラム名と同じ名前を使用しないことが推奨されます。また、複数の単語を含む場合は、単語の間にアンダースコアを使用するか、キャメルケースを使用することが一般的です。
  • カラム名:カラム名は、テーブル内で一意である必要があります。複数の単語を含む場合は、単語の間にアンダースコアを使用するか、キャメルケースを使用することが一般的です。
  • 制約名:制約名は、制約がどのカラムに関連しているかを示すため、通常はカラム名を含めることが推奨されます。複数の単語を含む場合は、単語の間にアンダースコアを使用するか、キャメルケースを使用することが一般的です。
  • ビュー名:ビュー名は、ビューの内容や意味を表す名前を付けることが推奨されます。
  • ストアドプロシージャ名:ストアドプロシージャ名は、ストアドプロシージャの目的や機能を表す名前を付けることが推奨されます。

命名の禁止事項について

標準SQLでは、次のような命名の禁止事項があります。

  1. 予約語を使用しないこと:予約語は、SQLの構文で特別な意味を持つキーワードであり、オブジェクト名に使用することはできません。例えば、SELECT、FROM、WHEREなどが予約語にあたります。
  2. 数字から始まる名前を使用しないこと:オブジェクト名の先頭に数字を使用することはできません。
  3. 特殊文字を使用しないこと:オブジェクト名には、アルファベット、数字、アンダースコア(_)以外の特殊文字(スペース、ハイフン、ドット、カンマなど)を使用することはできません。
  4. 重複した名前を使用しないこと:同じデータベース内で、テーブル名やカラム名、制約名などを重複して使用することはできません。

これらの禁止事項を遵守することで、SQLの命名規則を正しく守り、オブジェクト名の一意性を保証することができます。


データ型とは、データの種類を表すための定義で、データベース管理システムにおいて重要な役割を担っています。以下に代表的なデータ型をいくつか紹介します。

  1. 文字列型:文字列を格納するためのデータ型で、一般的にはVARCHAR、CHAR、TEXTなどがあります。
  2. 数値型:数値を格納するためのデータ型で、一般的にはINTEGER、FLOAT、DOUBLE PRECISIONなどがあります。
  3. 日付/時刻型:日付や時刻を格納するためのデータ型で、一般的にはDATE、TIME、TIMESTAMPなどがあります。
  4. ブール型:真偽値を格納するためのデータ型で、一般的にはBOOLEANなどがあります。
  5. バイナリ型:バイナリデータを格納するためのデータ型で、一般的にはBINARY、VARBINARY、BLOBなどがあります。

データ型は、データベースに格納される値の種類や大きさ、範囲などを定義するために使用されます。データ型の選択は、データの正確性やパフォーマンスに大きく影響するため、慎重に行う必要があります。


データベースには、データの正確性や整合性を保証するために「制約」と呼ばれる仕組みがあります。主要な制約の種類を以下に説明します。

  1. 主キー制約:テーブル内の各レコードを一意に識別するためのキーを定義します。主キーは重複した値を持つことができず、NULL値を持つこともできません。
  2. 外部キー制約:異なるテーブル間のデータ整合性を保つために使用されます。外部キーは、参照元のテーブルの主キーに対応する列に定義され、参照先のテーブルの主キーと関連付けられます。
  3. チェック制約:データが特定の条件を満たすかどうかを確認するために使用されます。例えば、数値列において正の値のみを許可するなどの条件を定義できます。
  4. NOT NULL制約:列にNULL値が入らないようにします。つまり、その列には必ず値が入るように制限します。
  5. ユニーク制約:重複した値を持たないようにするために使用されます。つまり、その列に格納される値は一意であることが保証されます。

制約は、テーブルを作成する際に定義され、列レベルやテーブルレベルで設定されることがあります。これにより、データベースに正確な情報が格納され、データの整合性が保たれることが保証されます。


テーブルの削除と変更について説明します。

  • DROP (ドロップ)

テーブルの削除には、DROP文を使用します。以下は、テーブルの削除を行う例です。

DROP TABLE テーブル名;

このコマンドを実行すると、指定したテーブルが削除されます。ただし、削除されたテーブルは復元できなくなるため、慎重に実行する必要があります。

  • ALTER (アルター)

テーブルの変更には、ALTER文を使用します。以下は、テーブルの変更を行う例です。


ALTER TABLE テーブル名 ADD 列名 データ型;

このコマンドを実行すると、指定したテーブルに新しい列を追加します。他にも、既存の列のデータ型や制約の変更を行うこともできます。ただし、テーブルの変更はデータベースに影響を与えるため、慎重に実行する必要があります。

なお、一部のRDBMSでは、テーブルの変更に対して制限がある場合があります。例えば、Oracle Databaseでは、テーブルに対して変更を行う場合、データベースに対するロックが必要になるため、変更中は他のセッションからのアクセスができなくなります。また、変更によって既存のデータに影響を与える場合があるため、慎重に実行する必要があります。


  • RENAME(リネーム)

RENAMEは、データベースにおいて、テーブルや列などの名前を変更するためのSQL文です。一部のデータベースでは、RENAME文はALTER文の一部として扱われます。

RENAME文を使用すると、以下のようにテーブル名や列名を変更することができます。

-- テーブル名を変更する例
RENAME TABLE 旧テーブル名 TO 新テーブル名;

-- 列名を変更する例
ALTER TABLE テーブル名 RENAME COLUMN 旧列名 TO 新列名;

RENAME文によって変更した名前は、その後のSQL文から新しい名前で参照することができます。ただし、RENAME文を使用する際には、データベースによっては注意点があります。例えば、一部のデータベースでは、RENAME文で変更した名前が他のオブジェクトと重複する場合にエラーが発生する場合があります。

また、RENAME文によって変更した名前は、トランザクション処理が必要な場合には、トランザクション内で完了する必要があることがあります。


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?