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つの自己インクリメントフィールドのみを定義できます。これは整数である必要があり、主キーまたは一意キーとして定義する必要があります。
-
自動インクリメントされたフィールドにnullまたは0を挿入すると、フィールドは、biより大きい前の挿入の値に自動的に設定されます。
8.参照整合性
参照整合性は、参照整合性とも呼ばれ、テーブル間のルールを指します。これは、関連する2つ以上のテーブルに作用します。主キーと外部キー(または一意キー)の関係を通じて、テーブルは関連しています。テーブル内で一貫性があります(外部キー制約によって実装されます)
テーブルAの外部キーフィールドの値がnullであるか、テーブルBの主キーフィールドの値のいずれかです(この時点で、テーブルAはテーブルBの子テーブルと呼ばれ、テーブルBはテーブルの親テーブルと呼ばれます。 A)
注意:
-
親テーブルの主キーと子テーブルの外部キーは、同じフィールドで定義する必要があります。
-
外部キーと対応する主キーは異なる名前を持つことができます
列レベルの制約の構文規則:
-
制約制約名外部キー(テーブルAフィールド名)はテーブルB(主キーフィールド名)を参照します[カスケードオプションの削除時] [カスケードオプションの更新時]
カスケードオプション:4つの値
-
カスケード:親テーブルレコードは削除/更新操作を記録し、子テーブルレコードは自動的に削除/更新されます
-
set null:親テーブルは削除/更新操作を記録し、子テーブルの対応する外部キー値は自動的にnullに設定されます
-
アクションなし:親テーブルは削除/更新操作を記録します。子テーブルに対応するレコードがある場合、削除/更新操作は失敗します。
-
制限:アクションなしと同じで、カスケードオプションのデフォルト値です
9、ドメインの整合性
列の整合性とも呼ばれ、テーブル内の指定された列に入力されるデータは、正しいデータ型、形式、および有効なデータ範囲を持っている必要があります
ドメインの整合性とユーザーの整合性の実現には、null以外の制約(null以外)、デフォルト値の制約(default)、一意の制約(unique)、チェック制約(enum)が含まれます。
-
null以外の制約を設定します:フィールド名のデータ型[その他の制約]はnullではありません
-
デフォルト値の制約を設定します。フィールド名のデータ型[その他の制約]デフォルトのデフォルト値
X.テーブル管理
-
テーブル構造をコピーします。ソーステーブルのようなテーブルの新しいテーブル名を作成します。
-
テーブルの構造とソーステーブルのレコードをコピーします。createtablenewtable name select * from source table