MYSQLテーブル操作

齐天大圣
リリース: 2020-05-27 09:05:14
オリジナル
172 人が閲覧しました

ライブラリが作成されたら、次のステップはテーブルを作成することです。テーブルを作成するには、構文だけでなく、列の型、インデックスなどについても理解する必要があります。以下では、テーブルを作成するための構文についてのみ説明し、列の型については説明しません。

テーブルを作成する

テーブルを作成するための構文:

CREATE TABLE [IF NOT EXISTS] 表名 (
    字段名1 列类型 [属性] [索引],
    字段名2 列类型 [属性] [索引],
    字段名3 列类型 [属性] [索引],
    ......
) [表类型] [表字符集]
ログイン後にコピー

ここで注意すべき点は、フィールド名が mysql のキーワードと一致しないことです。これを本当に実行したい場合は、次のことが必要です。フィールド名の前後に ` 記号を追加します。この記号はタブ キーの上にあります。

次に、ユーザー ID、ユーザー名、ユーザー パスワード、携帯電話番号、性別、誕生日のフィールドを含むユーザー テーブルを作成しましょう。

create table if not exists users(
  user_id int(10) unsigned auto_increment primary key,
  username varchar(16) not null default '' collate utf8mb4_bin comment '用户名',
  userpass char(32) not null collate utf8mb4_bin default '',
  mobile char(11) not null default '' unique,
  gender enum('未知', '男', '女') default '未知',
  birth date not null default '1900-01-01',
  index username(username)
) engine=innodb default charset utf8mb4 collate utf8mb4_general_ci;
ログイン後にコピー

通常、今後の操作を容易にするために、テーブルごとに一意の識別フィールド (ここでは user_id ) を作成します。ここでは、ユーザー名フィールドとユーザーパスフィールドの両方に照合が設定されています。これは、これら 2 つのフィールドが大文字と小文字を区別するという点で他のフィールドと異なるためです。さらに、テーブルに 2 つのインデックス、つまりモバイル フィールドとユーザー名フィールドを作成しました。携帯電話には一意のインデックスが設定されているため、携帯電話番号を重複させることはできません。ユーザー名に対する一般的なインデックスを作成すると、ユーザー名による検索が高速化されます。

テーブルとテーブル構造を表示する

テーブルが作成された後、それが本当に正常に作成されたかどうかを確認します。 show tables を使用すると、現在のライブラリの下にあるすべてのテーブルを表示できます。

mysql> show tables;
+---------------+
| Tables_in_job |
+---------------+
| users      |
+---------------+
1 row in set
ログイン後にコピー

テーブルは確かに正常に生成されていますが、テーブルにどのようなフィールドや属性があるのか​​を確認したい場合は、desc テーブル名を使用して確認できます。

テーブルのクリアと削除

注: テーブルの削除は危険な操作であるため、慎重に操作してください。

テーブルの削除構文: DROP TABLE [IF EXISTS] テーブル名

ここではデモはありません。

テーブル構文のクリア: TRUNCATE テーブル名

ここでは、ユーザーの切り捨てとユーザーからの削除の違いに焦点を当てます。

  • tru​​ncate は、最初にテーブルを削除してからテーブルを再作成することと同じです。テーブル内のすべてのデータがリセットされました。

  • deleteはテーブル内のデータのみを削除しますが、自動インクリメントされるIDなど、テーブルの一部の属性情報はリセットされません。

テーブルを変更する

最後に、テーブルを変更する方法を見てみましょう。これを最後に置いたのは、その構文が最も複雑で、テーブル操作の中で最も難しい部分であるためです。その構文は次のとおりです:

ALTER TABLE 数据表名 alter_spec[,alter_spec] ... table options
ログイン後にコピー

共通の構文と関数は次のとおりです:

  • 新しいフィールドの追加: ALTER TABLE テーブル名 ADD フィールド名 <テーブル ステートメント> ]

  • フィールドの変更: ALTER TABLE テーブル名変更|変更リスト <テーブル ステートメント> 注: 変更と変更の違いは、変更は列タイプのみを変更でき、変更は列タイプの変更に加えて列名も変更できます。 。

  • フィールドの削除: ... DROP 列名

  • インデックス名の追加: ... ADD INDEX [INDEX_NAME] (index_col1,index_col2,...)

  • インデックスの削除: ...DROP INDEX INDEX_NAME

  • DROP PRIMARY KEY

  • ADD PRIMARY KEY: ... ADD PRIMARY KEY (INDEX_COL1,INDEX_COL2,...)

  • ADD UNIQUE INDEX: ... ADD UNIQUE [index_name] (index_col1, Index_col2,...)

  • テーブル名を変更します: RENAME newName

練習してみましょう

まず、新しいフィールド email を追加し、userpass の後に置きます。

ALTER TABLE users ADD email VARCHAR(255) NOT NULL DEFAULT &#39;&#39; AFTER userpass;
ログイン後にコピー

ユーザーパスを変更し、長さを64ビットに変更します

ALTER TABLE users MODIFY userpass CHAR(64) NOT NULL DEFAULT &#39;&#39; COMMENT &#39;用户登录密码&#39;;
ログイン後にコピー

ユーザーパスをauthに変更します

ALTER TABLE users CHANGE userpass `auth` char(32) NOT NULL DEFAULT &#39;&#39;;
ログイン後にコピー

通常のインデックスをメールに追加します

ALTER TABLE users ADD INDEX eamil(email);
ログイン後にコピー

メールのインデックスを削除します

ALTER TABLE users DROP INDEX eamil;
ログイン後にコピー

通常のインデックスを削除するのと同じように、一意のインデックスを削除します

ALTER TABLE users DROP INDEX mobile;
ログイン後にコピー

一意のインデックスを追加します

ALTER TABLE users ADD UNIQUE mobile(mobile);
或
ALTER TABLE users ADD UNIQUE (mobile);
ログイン後にコピー

主キーを削除します。削除する前に aoto_increment を削除する必要があります。

ALTER TABLE users MODIFY user_id INT(10) NOT NULL;
ALTER TABLE users DROP PRIMARY KEY;
ログイン後にコピー

主キーを追加します

ALTER TABLE users ADD PRIMARY KEY (user_id);
ログイン後にコピー

上記は、列の型やインデックスなどについて、テーブル操作のいくつかの構文を説明しただけです。興味があれば、関連資料を読むことができます。

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

関連ラベル:
1
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート