MYSQL 字段操作之修改数据表

1,添加单列可以指定位置,多列不可指定位置。默认为顺位添加至表末行;

添加单列:ALTER TALBLE tab_name ADD[COLUMN]col_name column_definition[FIRST|AFTER col_name];

mysql> ALTER TABLE user2 ADD pid INT UNSIGNED;
Query OK, 2 rows affected (0.04 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> DESC USER2;
+----------+------------------+------+-----+---------+-------+
| Field    | Type             | Null | Key | Default | Extra |
+----------+------------------+------+-----+---------+-------+
| id       | int(11)          | NO   | PRI | 0       |       |
| username | varchar(10)      | NO   | UNI | NULL    |       |
| sex      | tinyint(4)       | NO   | UNI | 0       |       |
| uu       | smallint(6)      | YES  | MUL | NULL    |       |
| ii       | tinyint(4)       | YES  |     | NULL    |       |
| pid      | int(10) unsigned | YES  |     | NULL    |       |
+----------+------------------+------+-----+---------+-------+

添加多列:ALTER TABLE tab_name ADD[COLUMN]col_name column_definition,......)

删除列:ALTER TABLE tab_name DROP[COLUMN]col_name;


删除多列:ALTER TABLE tab_name DROP[COLUMN]col_name,DROP[COLUMN]col_name......;

| id       | int(11)       | YES  |     | NULL    |       |
| price    | decimal(12,2) | NO   |     | NULL    |       |
| username | varchar(10)   | NO   |     | NULL    |       |
| sex      | tinyint(4)    | NO   |     | 0       |       |
| aa       | tinyint(4)    | NO   |     | NULL    |       |
+----------+---------------+------+-----+---------+-------+
6 rows in set (0.02 sec)

mysql> ALTER TABLE USER2 DROP aa,DROP pid,DROP price;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc user2;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| username | varchar(10) | NO   |     | NULL    |       |
| sex      | tinyint(4)  | NO   |     | 0       |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.02 sec)

添加主键约束:ALTER TABLE tab_name ADD[CONSTRAINT[symbol]] PRIMARY KEY[index_type](index_col_name);

mysql> desc user2;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| username | varchar(10) | NO   |     | NULL    |       |
| sex      | tinyint(4)  | NO   |     | 0       |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.02 sec)

mysql> ALTER TABLE user2 ADD PRIMARY KEY (id);
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc user2;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | NO   | PRI | 0       |       |
| username | varchar(10) | NO   |     | NULL    |       |
| sex      | tinyint(4)  | NO   |     | 0       |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.02 sec)

添加唯一约束:ALTER TABLE tab_name ADD[CONSTRAINT[symbol]]UNIQUE[INDEX|KEY][index_name][index_type](index_col_name,......);(添加多个字段名为组合索引)

mysql> INSERT INTO user2 VALUES(1,'EE',1,1,1);
Query OK, 1 row affected (0.01 sec)

mysql> SELECT * FROM user2;
+----+----------+-----+------+------+
| id | username | sex | uu   | ii   |
+----+----------+-----+------+------+
|  1 | EE       |   1 |    1 |    1 |
+----+----------+-----+------+------+
1 row in set (0.00 sec)

mysql> INSERT INTO user2 VALUES(2,'EE',1,1,1);
ERROR 1062 (23000): Duplicate entry 'EE' for key 'username'
mysql> INSERT INTO user2 VALUES(2,'rr',1,1,1);
ERROR 1062 (23000): Duplicate entry '1' for key 'sex'
mysql> INSERT INTO user2 VALUES(2,'rr',2,1,1);
ERROR 1062 (23000): Duplicate entry '1-1' for key 'index_name'
mysql>#“MUL”这里为组合索引,‘PRI’,‘UNI’的索引唯一不可重复;同样组合索引也不能为相同值;
mysql> desc user2;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | NO   | PRI | 0       |       |
| username | varchar(10) | NO   | UNI | NULL    |       |
| sex      | tinyint(4)  | NO   | UNI | 0       |       |
| uu       | smallint(6) | YES  | MUL | NULL    |       |
| ii       | tinyint(4)  | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.01 sec)

mysql> select * from user2;
+----+----------+-----+------+------+
| id | username | sex | uu   | ii   |
+----+----------+-----+------+------+
|  1 | EE       |   1 |    1 |    1 |
+----+----------+-----+------+------+
1 row in set (0.00 sec)

mysql> INSERT INTO user2 VALUES(2,'rr',2,2,1);
Query OK, 1 row affected (0.01 sec)

mysql> select * from user2;
+----+----------+-----+------+------+
| id | username | sex | uu   | ii   |
+----+----------+-----+------+------+
|  1 | EE       |   1 |    1 |    1 |
|  2 | rr       |   2 |    2 |    1 |
+----+----------+-----+------+------+
2 rows in set (0.00 sec)

添加外键约束:ALTER TABLE tab_name ADD[CONSTRAINT[symbol]]FOREIGN KEY (index_name) REFERENCES ftab_name(index_name);

mysql> ALTER TABLE user2 ADD FOREIGN KEY(pid) REFERENCES corse(id);
Query OK, 2 rows affected (0.04 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> desc user2;
+----------+------------------+------+-----+---------+-------+
| Field    | Type             | Null | Key | Default | Extra |
+----------+------------------+------+-----+---------+-------+
| id       | int(11)          | NO   | PRI | 0       |       |
| username | varchar(10)      | NO   | UNI | NULL    |       |
| sex      | tinyint(4)       | NO   | UNI | 0       |       |
| uu       | smallint(6)      | YES  | MUL | NULL    |       |
| ii       | tinyint(4)       | YES  |     | NULL    |       |
| pid      | int(10) unsigned | YES  | MUL | NULL    |       |
+----------+------------------+------+-----+---------+-------+
6 rows in set (0.01 sec)

 

显示添加的所有索引及索引名

mysql> show indexes from user2\G;
*************************** 1. row ***************************
        Table: user2
   Non_unique: 0
     Key_name: PRIMARY
 Seq_in_index: 1
  Column_name: id
    Collation: A
  Cardinality: 2
     Sub_part: NULL
       Packed: NULL
         Null:
   Index_type: BTREE
      Comment:
Index_comment:
*************************** 2. row ***************************
        Table: user2
   Non_unique: 0
     Key_name: username
 Seq_in_index: 1
  Column_name: username
    Collation: A
  Cardinality: 2
     Sub_part: NULL
       Packed: NULL
         Null:
   Index_type: BTREE
      Comment:
Index_comment:
*************************** 3. row ***************************
        Table: user2
   Non_unique: 0
     Key_name: sex
 Seq_in_index: 1
  Column_name: sex
    Collation: A
  Cardinality: 2
     Sub_part: NULL
       Packed: NULL
         Null:
   Index_type: BTREE
      Comment:
Index_comment:
*************************** 4. row ***************************
        Table: user2
   Non_unique: 0
     Key_name: index_name
 Seq_in_index: 1
  Column_name: uu
    Collation: A
  Cardinality: 2
     Sub_part: NULL
       Packed: NULL
         Null: YES
   Index_type: BTREE
      Comment:
Index_comment:
*************************** 5. row ***************************
        Table: user2
   Non_unique: 0
     Key_name: index_name
 Seq_in_index: 2
  Column_name: ii
    Collation: A
  Cardinality: 2
     Sub_part: NULL
       Packed: NULL
         Null: YES
   Index_type: BTREE
      Comment:
Index_comment:
*************************** 6. row ***************************
        Table: user2
   Non_unique: 1
     Key_name: pid
 Seq_in_index: 1
  Column_name: pid
    Collation: A
  Cardinality: 2
     Sub_part: NULL
       Packed: NULL
         Null: YES
   Index_type: BTREE
      Comment:
Index_comment:
6 rows in set (0.00 sec)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值