MySQLデータテーブルの基本操作2:テーブル構造の変更

5497 ワード

一、データテーブル構造の表示
1)表の基本構造文DESCRIBEの表示
構文:DESCRIBEテーブル名;
例:
mysql> DESCRIBE product;
+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| product_id   | int(11)      | NO   | PRI | NULL    | auto_increment |
| product_name | varchar(50)  | NO   |     | NULL    |                |
| description  | varchar(200) | YES  |     | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+

構文:DESCテーブル名;
例:
mysql> DESC product;
+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| product_id   | int(11)      | NO   | PRI | NULL    | auto_increment |
| product_name | varchar(50)  | NO   |     | NULL    |                |
| description  | varchar(200) | YES  |     | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+

説明:
  • NULL:カラムがNULL値を格納できるかどうかを示します.
  • Key:カラムにインデックスが作成されているかどうかを示します.PRIはテーブルのプライマリ・キーの一部を表す.UNIは、このカラムがUNIQUEインデックスの一部であることを示す.MULは、カラム内の所定の値が複数回現れることを許容することを示す.
  • Default:カラムにデフォルト値があるかどうか、ある場合はいくらですか.
  • Extra:取得可能な特定のカラムに関する追加情報を表す.例えばAUTO_INCREMENT等;

  • 2)表詳細構造文SHOW CREATE TABLEの表示
    機能の説明:
    テーブル作成時の文の表示
    構文:
    SHOW CREATE TABLE ;

    ヒント:
  • この文は、テーブルの作成の詳細な文を表示するために使用できます.
  • はまた、記憶エンジンおよび文字符号化を表示するために使用することができる.
  • にパラメータ'G'を加えると、表示結果がより直感的になり、表示が容易になります.

  • 例:
    mysql> show create table bm\G;
    *************************** 1. row ***************************
           Table: bm
    Create Table: CREATE TABLE `bm` (
      `id` int(11) NOT NULL,
      `name` varchar(22) DEFAULT NULL,
      `location` varchar(20) DEFAULT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `STH` (`name`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1
    1 row in set (0.02 sec)
    

    二、データテーブルの修正
    1)表名の変更
    構文
    ALTER TABLE  RENAME [TO] ;

    ALTER TABLE bm RENAME department;

    2)フィールドのデータ型の変更
    構文
    ALTER TABLE  MODIFY  ;

    ALTER TABLE department MODIFY id VARCHAR(11);

    3)フィールド名の変更
    構文
    ALTER TABLE  CHANGE ;

    ALTER TABLE employees CHANGE location loc VARCHAR(350);//           ,    

    4)フィールドの追加
    構文
    ALTER TABLE  ADD    [    ]  [FIRST|AFTER      ];//           

    ALTER TABLE employees ADD manager_id INT(10);
    ALTER TABLE employees ADD age INT(11) NOT NULL;//    
    ALTER TABLE employees ADD sal FLOAT FIRST;//        
    ALTER TABLE employees ADD hire_date DATE AFTER manager_id;//       
    

    5)フィールドの削除
    構文
    ALTER TABLE  DROP ;

    ALTER TABLE employees DROP manager_id;
    ALTER TABLE employees DROP hire_date;

    6)フィールドの配置位置の変更
    構文
    ALTER TABLE  MODIFY  FIRST|AFTER ;

    ALTER TABLE employees MODIFY name VARCHAR(22) FIRST;// name      
    ALTER TABLE department MODIFY location VARCHAR(350) AFTER department_id;// location   department_id   

    7)テーブルのストレージエンジンの変更
    MySQLがサポートする主なストレージエンジン
    エンジン名
    サポートするかどうか
    FEDERATED
    いいえ
    MRG_MYISAM
    はい
    MyISAM
    はい
    BLACKHOLE
    はい
    CSV
    はい
    MEMORY
    はい
    ARCHIVE
    はい
    InnoDB
    デフォルト
    PERFORMANCE_SCHEMA
    はい
    構文
    ALTER TABLE  ENGINE=;

    ALTER TABLE department ENGINE=MyISAM;

    8)テーブルの外部キー制約の削除
    構文
    ALTER TABLE  DROP FOREIGN KEY ;

    ALTER TABLE employees DROP FOREIGN KEY fk_emp_dept;

    三、データテーブルの削除
    1)関連付けられていないテーブルの削除
    構文
    DROP TABLE [IF EXISTS]  1, 2,... n;

    DROP TABLE IF EXISTS employees;

    2)他のテーブルに関連付けられているプライマリ・テーブルの削除
    説明:外部キーを削除するには
    mysql> create database rm_tab;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> use rm_tab;
    Database changed
    mysql> create table department
        -> (
        -> id int(11) primary key,
        -> name varchar(22),
        -> location varchar(200)
        -> );
    Query OK, 0 rows affected (0.07 sec)
    
    mysql> create table employee
        -> (
        -> id int(11) primary key,
        -> name varchar(25),
        -> department_id int(11),
        -> salary float,
        -> constraint fk_emp_dept foreign key(department_id) references department(id)
        -> );
    Query OK, 0 rows affected (0.10 sec)
    
    mysql> drop table department;
    ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
    mysql> alter table employee drop foreign key fk_emp_dept;
    Query OK, 0 rows affected (0.22 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> drop table department;
    Query OK, 0 rows affected (0.04 sec)
    
    mysql> show tables;
    +------------------+
    | Tables_in_rm_tab |
    +------------------+
    | employee         |
    +------------------+
    1 row in set (0.00 sec)
    

    もしあなたたちが試している間に何か問題があったり、私のコードに間違いがあったりしたら、指摘してください.ありがとうございます.
    連絡先:[email protected]転載は出典を明記してください!