ホームページ >データベース >mysql チュートリアル >mysql テーブル定義構文の詳細な紹介
まず第一に、データ テーブルはデータベースが正常に作成された後でのみ作成できることを誰もが知っています。データ テーブルはフィールドのコレクションであり、テーブル内のデータは次のとおりです。行と列の形式で保存されます。
テーブルの作成
MySQL は CREATE TABLE を使用してテーブルを作成します。複数のオプションがあり、主にテーブル作成定義 (create Definition)、テーブル オプション定義 (table options)、およびパーティション オプション (partition options) で構成されます。
テーブル作成定義
は、テーブル列の名前、列定義セットの可能な NULL 値ステートメント、整合性制約、またはテーブル インデックス エントリで構成されます。テーブルインデックス項目は主にテーブルのインデックス、主キー、外部キーなどを定義します。
(推奨オンライン学習ビデオ チュートリアル: mysql ビデオ チュートリアル)
文法構造
CREATE[TEMPORARY]TABLE tbl_name ( 字段名|数据类型[列级完整性约束条件][默认值] [,字段名2 数据类型[列级完整性约束条件][默认值]] [,....] [,表级完整性约束条件] )[ENGINE=引擎类型]
例:
New顧客情報
mysql> USE mysql_test Database changed mysql> CRATE TABLE customers ->( -> cust_id INT NOT NULL AUTO_INCREMENT, -> cust_name CHAR(50) NOT NULL, -> cust_sex CHAR(1) NOT NULL DEFAULT 0, -> cust_address CHAR(50) NULL -> cust_contact CHAR(50) NULL -> PRIMARY KEY(CUST_ID) ->) Query OK, 0 rows affected(0.11 sec)
一時テーブルと永続テーブル
TEMPORARY: 一時テーブルを表します。選択されていない場合、永続テーブルになります。
永続テーブルは常に存在します。複数のユーザーまたはアプリケーションが同時に永続テーブルを使用できます。データを一時的に保存するだけの場合は、TEMPORARY キーワードを追加できます。一時テーブルは次のユーザーのみに表示されます。テーブルを作成したユーザー。データベース接続を切断します。テーブルは自動的にクリアされます。
データ型
データ型とは、システムで許可されるデータのタイプを指します。各列には、その列のデータを制限または許可する適切なデータ型が必要です。テーブルを作成するときは、各列に正しいデータ型とデータ長 (CHAR(50)) を指定する必要があります。
MySQL メイン データ型:
数値型: integer int、floating point double、Boolean bool
日付と時刻の型: date 型、timestamp timestamp、time 型 time
String 型: 固定長文字型 char、可変長文字型varchrar
空間データ型: 単一のジオメトリ型 GEOMETRY など
キーワード AUTO_INCREMENT
AUTO_INCREMENT: テーブル内の整数データ型の列設定は次のとおりです。現在のインデックスまたは 1 から開始して属性 (i) をインクリメントするように設定すると、テーブル内に AUTO_INCREMENT は 1 つだけ存在できます。
テーブル列が AUTO_INCREMENT として指定されている場合、その値は上書きできます。テーブル データ挿入ステートメントで列の値 (一意である必要があります) を指定すると、その値が自動的に生成された値と置き換えられます。システムによる値、その後の増分は挿入された値に基づきます
デフォルト値を指定します
DEFAULT: 値が存在しない場合に MySQL のデフォルト値を指定するために使用されます。与えられた (DEFAULT 0 )
デフォルト値が指定されていない場合、値が自動的に割り当てられます。列が値 NULL を取ることができる場合、デフォルトは NULL です。NOT NULL が定義されている場合、デフォルトは次によって決まります。カラムのタイプ:
AUTO_INCREMENT カラムは数値タイプとして宣言されていません。デフォルトは 0
です。 AUTO_INCREMENT カラムのデフォルトはシーケンス内の次の値です。
TIMESTAMP 以外の日付と時刻の型の場合、デフォルトは次のとおりです。適切に入力された「ゼロ」値です。
テーブルの最初の TIMESTAMP 列のデフォルト値は、現在の日付と時刻です。
NULL 値
NULL : 値がないか、値がありません。NULL を許可する列の場合は、行を挿入するときに列の値を指定する必要はありません。NULL を許可しない列の場合は、列の値を指定する必要はありません。値を指定する場合、列にはデータが必要です
NULL と '' は同等ではありません NOT NULL 列 中許容'' NULL は許可されません
PRIMARY KEY
PRIMARY KEY : 主キーを指定します。主キーは一意である必要があり、NULL は使用できません。単一列の場合、値は一意である必要があります。列の結合の場合、結合された値は一意である必要があります
#Update table
ALTER TABLEADD[COLUMN] を使用してデータベースを変更します。新しいテーブル列。カンマで区切ってさらに列を追加できます。例:mysql> ALTER TABLE mysqle_test.customers -> ADD COLUMN cust_city char(10) NOT NULL DEFAULT'ShenZhen' AFTER cust_sex; Query OK,0 rows affected(0.61 sec) Records:0 Duplicates:0 Warning:0AFTER: 新しい列を Cut_sexl 列に追加します
FIRST: 新しい列をテーブルの最初の列に追加します
#同様に、ADDPRIMARY KEY、ADDFOREIGN KEY、ADD INDEX を使用して、対応する主キー、外部キー、インデックスを追加できます
CHANGE[COLUMN]: 名前を変更しますまたはテーブル内の列のデータ型です。複数の列を変更し、カンマで区切ることができます
mysql> ALTER TABLE mysqle_test.customers -> CHANGE COLUMN cust_sex sex char(1) NULL DEFAULT 'M' Query OK,0 rows affected(0.66 sec) Records:0 Duplicates:0 Warning:0
データ型が変更されると、データが失われる可能性があります。列の元のデータ (データ型が変更された場合)ビューが元のデータ型と互換性がない場合、SQL コマンドは実行されず、エラーがスローされます。
さらなる互換性の場合、この列のデータは切り捨てられる可能性があります。たとえば、列のデータ型が varchart(10) で char(1) に変更される場合、データ 'ShenZhen' は列は「S」になります
ALTER [COLUMN]: 修改或删除指定列的默认值
mysql> ALTER TABLE mysqle_test.customers -> ALTER COLUMN cust_city SET DEFAULT 'ShangHai' Query OK,0 rows affected(0.36 sec) Records:0 Duplicates:0 Warning:0
MODIFY [COLUMN]: 修改指定列的数据类型,通过 'FIRST' 或 'AFTER' 修改列的位置
mysql> ALTER TABLE mysqle_test.customers -> MODIFY COLUMN cust_name char(30) FIRST Query OK,0 rows affected(0.20 sec) Records:0 Duplicates:0 Warning:0
DROP [COLUMN]: 删除列,该列所有数据一并删除
mysql> ALTER TABLE mysqle_test.customers -> DROP COLUMN cust_city Query OK,0 rows affected(0.42 sec) Records:0 Duplicates:0 Warning:0
同样 可使用 DROP PRIMARY KEY 、DROP FOREIGN KEY、DROP INDEX 删除对应的主键、外键、索引
RENAME[TO]:表重命名
mysql> ALTER TABLE mysqle_test.customers -> RENAME TOQuery OK,0 rows affected(0.42 sec)
重命名表
除了 ALTER TABLE 中的 RENAME TO 修改表名,还可通过 RENAME TABLE 来修改单张和多张表(以逗号分隔)
mysql> RENAME TABLE mysql_test.back.customers TO mysqle_test.customers
删除表
DROP[TEMPORARY]TABLE[IF EXISTS]删除一个已存在的表,可以删除多张表,前提操作人必须有权限,但是操作人在该张表上的权限不会被删除
查看表
SHOW [FULL] TABLES [{FROM|IN}db_name] [LIKE'pattern'|WHERE expr]: 显示指定数据库中所有表名
Example:
mysql> USE mysql_testDatabase changedmysql> SHOW TABLES: Tables_in_mysql_test customers 1 row in set <0.01 sec>
SHOW [FULL] COLUMNS {FROM|IN}tb_name[{FROM|IN}db_name] 或 {DESCRIBE|DESC} tbl_name[col_name|wild]: 显示指定数据库表结构。
MySQL 支持使用 DESCRIBE 代替 SHOW COLUMNS FROM 来查看表结构
Example:
mysql> DESC mysql_test.custormes Field Type Null key Default Extra cust_id int<11> NO PRI NULL auto_increment cust_name char<50> NO Null cust_sex int<1> NO 0 3 row in set <1.56 sec>
相关文章教程推荐:mysql教程
以上がmysql テーブル定義構文の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。