02データベースとテーブルを作成する

02データベースとテーブルを作成する

1つは、データベースを作成する

  • credateデータベースデータベース名;

  • データベースを作成するときに、文字セットと文字の順序を指定できます

    コマンド:データベースデータベース名のデフォルトの文字セット文字セット名[照合文字シーケンス名]を作成します。

  • データベース構造の表示:show create database database name

  • useコマンドを使用して、現在のデータベースを選択します。usedatabase name

  • データベースの文字セットを変更します(データベースが作成されており、文字セットを変更する必要があります)。

    データベースデータベース名の変更文字セット文字セット照合文字シーケンス。

  • データベースを削除します:データベースデータベース名を削除します

第二に、命名規則

  • 任意の文字、アラビア数字、アンダースコア(_)、および$で構成されます

  • Windowsでは大文字と小文字が区別されず、MySQLキーワードは使用できず、名前の長さは最大64文字です。

3、ストレージエンジン

テーブルを作成する前に、テーブルのストレージエンジンを明確にする必要があります(注:ストレージエンジンはテーブルに基づいており、同じデータベース、異なるテーブル、ストレージエンジンは異なる場合があります。同じデータベーステーブルであっても、場合によっては異なる必要があります。異なるストレージエンジンを使用する)

  • MySQLサービスインスタンスでサポートされているストレージエンジンを表示します:show engine

InnoDBストレージエンジン

特徴:

  • 外部キー(外部キー)をサポートします

  • サポートトランザクション(トランザクション)-追加、削除、変更、およびチェック

多くの更新操作を実行する必要がある場合は、innodbストレージエンジンの方が適しています

MyISAM

特徴:

  • チェックテーブルと修理テーブルを備えたほとんどのツール

  • テーブルは圧縮できます

  • トランザクションをサポートしていません

  • 外部キー(外部キー)をサポートしていません

パフォーマンス上の理由から、多数のselectステートメントを実行する必要がある場合は、MyISAMストレージエンジンの方が適しています。

注意:

  • MySQL5.6および5.7のデフォルトのストレージエンジンはInnoDBです

  • 現在のMySQLセッションコマンドのストレージエンジンを一時的に変更します。

    default_storage_engine = MyISAMを設定します。

4、データ型

整数型(tinyint、smallint、mediumint、int、bigint)

10進型

  • Decimal(length、precision)は、精度が決定されることを意味します(小数点が決定された後の桁数)

  • 長さ:小数点以下の最大桁数を決定します。

  • 精度:精度(小数点以下の桁数)を設定します

フロート、ダブル

文字列型:一重引用符で囲みます

charとvarchar()の違い:固定長と可変長

  • varchar(255):255の漢字を格納できることを示します。varchar(255)に漢字が1つと2バイトしかない場合、varchar(255)は2バイトの記憶域しか占有しません。

  • char(20):char(20)に20バイトが格納されているかどうかに関係なく、20バイトとしてカウントされます。

日付タイプ

  • date:日付を示します。デフォルトの形式はYYYY-MM-DDです。

  • 時間:時間を示します;形式:HH:mm:ss

  • datetimeとtimestampは、日付と時刻の混合タイプであり、形式は次のとおりです。YYYY-MM-DDHH:mm:ss

  • 日時はタイムゾーンの影響を受けませんタイムスタンプはタイムゾーンの影響を受けます

  • 日時型フィールドへのnullの挿入はnullです

  • タイムスタンプタイプフィールドにnullを挿入します。このフィールドの値は、実際にはMySQLサーバーの現在の日付と時刻です。

  • now():mysqlサーバーの現在の時刻を取得します

複合タイプ

MySQLは、列挙型とセットコレクション型の2つの複合データ型をサポートしています。

  • 列挙型:コレクションから取得できるのは特定の値のみです。列挙型データには最大65535個の要素が含まれます

  • セットタイプ:セットから複数の値を取得できます;セットタイプデータには最大64個の要素を含めることができます

5、テーブルを作成します

1.構文形式:テーブルテーブル名の作成(フィールド名データ型[列レベルの制約]、... [テーブルレベルの制約1]、[テーブルレベルの制約2])その他のオプション(ストレージエンジン、文字セットなど)など)オプション)

CREATE TABLE `runoob_tbl`(
   ` runoob_id` INT UNSIGNED AUTO_INCREMENT、
   `runoob_title` VARCHAR(100)NOT NULL、
   ` runoob_author` VARCHAR(40)NOT NULL、
   `submission_date` DATE、
   PRIMARY KEY(` runoob_id`)
)ENGINE = InnoDB DEFAULT CHARSET = utf8;

2.新しいテーブルを作成することの本質は、新しいテーブルの構造を定義することです。決定する3つの主要な要素があります。

  • 列名

  • データの種類

  • 制限

3.テーブルのストレージエンジンを指定します。engine=ストレージエンジン名

テーブルの文字セットを指定します。デフォルトの文字セット=文字セット名

6、制約

データベース内のデータの正確性と整合性を保証するための制約メカニズムは、整合性制約と呼ばれます。

  • 制約範囲:テーブルレベルの制約、列レベルの制約

  • 制約:エンティティの整合性、参照整合性、ドメインの整合性の制約

  • 列で定義された制約は、列レベルの制約と呼ばれます

  • テーブル定義の最後にある独立した制約項目として、テーブルレベルの制約と呼ばれます。

  • 整合性制約に複数の属性列が含まれる場合、それらはテーブルレベルで定義する必要があります

7.エンティティの整合性

  • 行の整合性とも呼ばれ、テーブルに同一の行が存在しない必要があり、各行には空でも繰り返しでもないフィールド値が必要です。

  • エンティティの整合性は主に、キーワード主キーを使用する主キー制約の実現に依存しています。

  • 主キー制約は、一意のIDとして機能する基本テーブルの主キーを定義するために使用され、値をnullにすることはできません。

  • テーブルの主キーが単一のフィールドである場合、それは列レベルの制約として定義されます

    フィールド名データ型[その他の制約]主キー

  • 定義内のすべてのフィールドを定義した後、テーブルレベルの制約として定義されます

    主キー(フィールド名)

  • テーブルの主キーが複数のフィールドで構成されている場合、テーブルレベルの制約としてのみ定義できます。

    主キー(フィールド名1、フィールド名2)

一意キー(一意)制約

  • 一意性:一意性制約は、基本テーブルの特定の列または複数の列の組み合わせの値が1であることを指定するために使用されます

  • 一意のキーは空にすることができます。初期のnull値は最大で1つだけです。

  • 主キーは空ではなく、一意です

  • 主キーではないが一意の値がある場合は、一意を使用します

  • 一意キー制約の設定は、列レベルの制約またはテーブルレベルの制約として定義できます。

    列レベル:フィールド名データ型[その他の制約]一意

    テーブルレベル:一意(フィールド名)

自己インクリメントフィールド

  • 自己インクリメントフィールドは、列レベルの制約としてのみ定義できます

  • MySQLの自己インクリメントフィールドの値は、ステップサイズが1の場合に1から増加します。

  • 文法形式

    フィールド名データ型auto_increment

  • 利点:自動番号付け、高速、番号タイプ、フットプリントが小さい、メインキーの重複を心配する必要がない

注意:

  1. 各テーブルは、1つの自己インクリメントフィールドのみを定義できます。これは整数である必要があり、主キーまたは一意キーとして定義する必要があります。

  2. 自動インクリメントされたフィールドにnullまたは0を挿入すると、フィールドは、biより大きい前の挿入の値に自動的に設定されます。

8.参照整合性

参照整合性は、参照整合性とも呼ばれ、テーブル間のルールを指します。これは、関連する2つ以上のテーブルに作用します。主キーと外部キー(または一意キー)の関係を通じて、テーブルは関連しています。テーブル内で一貫性があります(外部キー制約によって実装されます)

テーブルAの外部キーフィールドの値がnullであるか、テーブルBの主キーフィールドの値のいずれかです(この時点で、テーブルAはテーブルBの子テーブルと呼ばれ、テーブルBはテーブルの親テーブルと呼ばれます。 A)

注意:

  • 親テーブルの主キーと子テーブルの外部キーは、同じフィールドで定義する必要があります。

  • 外部キーと対応する主キーは異なる名前を持つことができます

列レベルの制約の構文規則:

  • 制約制約名外部キー(テーブルAフィールド名)はテーブルB(主キーフィールド名)を参照します[カスケードオプションの削除時] [カスケードオプションの更新時]

カスケードオプション:4つの値

  1. カスケード:親テーブルレコードは削除/更新操作を記録し、子テーブルレコードは自動的に削除/更新されます

  2. set null:親テーブルは削除/更新操作を記録し、子テーブルの対応する外部キー値は自動的にnullに設定されます

  3. アクションなし:親テーブルは削除/更新操作を記録します。子テーブルに対応するレコードがある場合、削除/更新操作は失敗します。

  4. 制限:アクションなしと同じで、カスケードオプションのデフォルト値です

9、ドメインの整合性

列の整合性とも呼ばれ、テーブル内の指定された列に入力されるデータは、正しいデータ型、形式、および有効なデータ範囲を持っている必要があります

ドメインの整合性とユーザーの整合性の実現には、null以外の制約(null以外)、デフォルト値の制約(default)、一意の制約(unique)、チェック制約(enum)が含まれます。

  • null以外の制約を設定します:フィールド名のデータ型[その他の制約]はnullではありません

  • デフォルト値の制約を設定します。フィールド名のデータ型[その他の制約]デフォルトのデフォルト値

X.テーブル管理

  • テーブル構造をコピーします。ソーステーブルのようなテーブルの新しいテーブル名を作成します。

  • テーブルの構造とソーステーブルのレコードをコピーします。createtablenewtable name select * from source table

おすすめ

転載: blog.csdn.net/weixin_42248871/article/details/109910459