MySQLデータテーブル操作の詳細説明

迷茫
リリース: 2017-03-26 14:03:58
オリジナル
1320 人が閲覧しました

データテーブルを作成する

データベースを開く

データベース名を使用する

mysql> USE D1;
Database changed
ログイン後にコピー

Use USE D1; SELECT DATABASE();を介して現在開いているデータベースを表示できます

:

mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| d1         |
+------------+1 row in set (0.00 sec)
ログイン後にコピー

データを作成するtable

CREATE TABLE [IF
NOT EXISTS] table_name (
column_name datatype,
...

)

この構造は、最初の記事「MySQL の基本操作」の [IF NOT EXISTS] の場合、非常に単純です。 」についてはすでに説明したため、ここでは繰り返しません。

データテーブルを作成しましょうtable1

:

mysql> CREATE TABLE table1(
    -> username VARCHAR(20),
    -> age TINYINT UNSIGNED,
    -> salary FLOAT(8,2) UNSIGNED
    -> );
Query OK, 0 rows affected (0.74 sec)
ログイン後にコピー

ここでの UNSIGNED は符号なしの値、つまり正の数を表すことに注意してください。「TINYINT UNSIGNED」を参照してください。0 ~ の値を表します。 255.

これは、次のステートメントを通じて、作成が成功したことを確認することができます:

SHOW TABLES [FROM db_name][LIKE 'pattern' | WHERE expr]

mysql> SHOW TABLES FROM D1;
+--------------+
| Tables_in_d1 |
+--------------+
| table1       |
+--------------+1 row in set (0.00 sec)
ログイン後にコピー

ここで、テーブル table1 が次のとおりであることがわかります。作成されました。

データテーブルの構造を表示する

SHOW COLUMNS FROM tbl_name

mysql> SHOW COLUMNS FROM table1;
+----------+---------------------+------+-----+---------+-------+
| Field    | Type                | Null | Key | Default | Extra |
+----------+---------------------+------+-----+---------+-------+
| username | varchar(20)         | YES  |     | NULL    |       |
| age      | tinyint(3) unsigned | YES  |     | NULL    |       |
| salary   | float(8,2) unsigned | YES  |     | NULL    |       |
+----------+---------------------+------+-----+---------+-------+3 rows in set (0.10 sec)
ログイン後にコピー

レコードを挿入する

テーブルを作成した後、次のステートメントを使用してデータを挿入する必要があります:

INSERT [INTO] tbl_name [(col_name) , ...)] VALUE(val,...)

ここで[(col_name,...)]

はオプションです。追加しない場合、VALUE の値は のフィールドと同じである必要があります。対応するデータテーブルです。そうでない場合は挿入できません。見てみましょう:

mysql> INSERT table1 VALUE("LI",20,6500.50);
Query OK, 1 row affected (0.14 sec)
ログイン後にコピー

ここでの VALUE 括弧内のフィールドは、table1 のフィールド (username="LI"、age=20) に 1 対 1 に対応しています。 , 給与=6500.50

以下に別のデータを挿入しますが、対応なし:

mysql> INSERT table1 Value("Wang",25);
ERROR 1136 (21S01): Column count doesn't match value count at row 1
ログイン後にコピー

は給与値が指定されていないため挿入できません。

[(col_name,...)]

を追加することで柔軟にデータを挿入できます:

mysql> INSERT table1(username,age) VALUE("Wang",25);
Query OK, 1 row affected (0.11 sec)
ログイン後にコピー

table1はVALUEに1対1で対応します。

テーブル データを検索する

次のステートメントを使用してテーブル データを検索できます:

SELECT expr,... FROM tbl_name

データベース検索ステートメント SELECT の場合、詳細は次の記事で説明します。テーブルの内容を見つけるには簡単なステートメントを使用します:

mysql> SELECT * FROM table1
    -> ;
+----------+------+---------+
| username | age  | salary  |
+----------+------+---------+
| LI       |   20 | 6500.50 |
| Wang     |   25 |    NULL |
+----------+------+---------+2 rows in set (0.00 sec)
ログイン後にコピー

MySQL ステートメントは「;」で終わることに注意してください。これを書き忘れるとステートメントを実行できません。実行するには、矢印の後にセミコロンを追加します。テーブルに 2 つのデータが書き込まれていることがわかります。

テーブル作成の基本的な制約

フィールドのNULLとNOT NULL

テーブルを作成するときに、フィールドをnullにできない場合は、データを挿入するときにフィールドをnullにできるかどうかを設定できます。

データテーブルを作成しましょうtable2

:

mysql> CREATE TABLE table2(
    -> username VARCHAR(20) NOT NULL,
    -> age TINYINT UNSIGNED NULL,
    -> salary FLOAT(8,2)
    -> );
ログイン後にコピー

ここでは、ユーザー名は空ではなく、年齢はNULLで、給与は書き込まれていません。テーブル構造を確認してみましょう:

mysql> SHOW COLUMNS FROM table2;
+----------+---------------------+------+-----+---------+-------+
| Field    | Type                | Null | Key | Default | Extra |
+----------+---------------------+------+-----+---------+-------+
| username | varchar(20)         | NO   |     | NULL    |       |
| age      | tinyint(3) unsigned | YES  |     | NULL    |       |
| salary   | float(8,2)          | YES  |     | NULL    |       |
+----------+---------------------+------+-----+---------+-------+3 rows in set (0.01 sec)
ログイン後にコピー

ここから、ユーザー名がNULLであることがわかります。が NO の場合、他の 2 つのフィールドは YES です。空にできるフィールドの場合、NULL を書き込むかどうかは空にできることを意味します。

自動番号付け

AUTO_INCREMENT

auto_increment、auto、incrementは増加を意味し、組み合わせると自動増加、つまり小さいものから大きいものへと自動的に番号を付けることができます。
  • は主キーにのみ使用できます (主キーはテーブル内のデータの一意の表現を表し、テーブル内のデータは主キーによって区別できます)
  • デフォルトは 1 です。インクリメントは 1 です

以下の操作を見てみましょう:

mysql> CREATE TABLE table3(
    -> id SMALLINT UNSIGNED AUTO_INCREMENT,
    -> username VARCHAR(20)
    -> );
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
ログイン後にコピー

ID が主キーとして設定されていないため、エラーが報告されます。

主キーを設定する

PRIMARY KEY
  • 主キーの制約
  • 各テーブルは主キーを1つだけ持つことができます
  • 主キーはレコードの一意性を保証します
  • 主キーは自動的に NULL ではありません

次に、主キーを追加して、もう一度実行しましょう:

mysql> CREATE TABLE table3(
    -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    -> username VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.42 sec)
ログイン後にコピー

順序に注意してください。PRIMARY KEY は最後に配置する必要があります。

このようにして、データを 1 つずつ挿入して結果を確認してみましょう:

mysql> INSERT table3(username) VALUES("Zhang");
Query OK, 1 row affected (0.09 sec)

mysql> INSERT table3(username) VALUES("Weng");
Query OK, 1 row affected (0.07 sec)

mysql> INSERT table3(username) VALUES("Chen");
Query OK, 1 row affected (0.09 sec)

mysql> SELECT * FROM table3;
+----+----------+
| id | username |
+----+----------+
|  1 | Zhang    |
|  2 | Weng     |
|  3 | Chen     |
+----+----------+3 rows in set (0.00 sec)
ログイン後にコピー

ID が小さいものから大きいものまで自動的に番号付けされていることがわかります。

一意制約

一意キー
  • 一意制約
  • 一意制約は、レコードが反復不可能であること(一意性)を保証します
  • 一意制約はnull(NULL)である可能性があります
  • 持つことができます複数の一意の制約

mysql> CREATE TABLE table4(
    -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    -> username VARCHAR(20) UNIQUE KEY,
    -> age TINYINT UNSIGNED
    -> );
Query OK, 0 rows affected (0.43 sec)

mysql> INSERT table4(username) VALUE("Li");
Query OK, 1 row affected (0.11 sec)

mysql> INSERT table4(username) VALUE("Li");
ERROR 1062 (23000): Duplicate entry 'Li' for key 'username'

mysql> INSERT table4(username) VALUE("Chen");
Query OK, 1 row affected (0.10 sec)
ログイン後にコピー
ユーザー名については、一意の制約として設定しているため、Li を繰り返し作成することはできません。「Chen」に変更するだけです。なお、これは実験的なものであり、実際の運用においても同様の名称が多く存在するため、実際の状況に応じてデータテーブルを作成する必要がある。

デフォルト値 DEFAULT

データの挿入時に対応する値が指定されていない場合は、DEFAULT

を使用してデフォルト値が使用されます。データの挿入 の場合、数値が指定されていないため、デフォルトは 3 です。 🎜りー

以上がMySQLデータテーブル操作の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!