当前位置:首页 > Mysql教程 > 列表

MySQL中创建、修改和删除表命令

发布:smiling 来源: PHP粉丝网  添加日期:2014-09-27 23:15:04 浏览: 评论:0 
5.4、设置表的非空约束

简单的说就是不让这个属性的值为空,不填的话就会报错

格式:属性名 数据类型 NOT NULL

5.5、设置表的唯一性约束,就是这个属性的值是不能重复的

格式:属性名 数据类型 UNIQUE

5.6、设置表的属性值自动增加

AUTO_INCREMENT约束的字段可以是任何整数类型(TINYINT、SMALLINT、INT和BIGINT),在默认的情况下,该字段的值是从1开始自增

格式:属性名 数据类型 AUTO_INCREMENT

5.7、设置表的属性的默认值

格式:属性名 数据类型 DEFAULT 默认值

下面对5.4-5.7进行综合示例,代码如下:

  1. mysql> CREATE TABLE `student3` ( 
  2.     -> `id` INT PRIMARY KEY AUTO_INCREMENT, 
  3.     -> `teacher_id` INT UNIQUE
  4.     -> `nameVARCHAR(20) NOT NULL
  5.     -> `sex` VARCHAR(10) default 'male' 
  6.     -> ); 
  7. Query OK, 0 rows affected (0.07 sec) 

6、查看表结构

6.1、查看表基本结构

语句:DESCRIBE

格式:DESCRIBE 表名;

通过查看表的结构,就很明确的对表进行解读,而且可以查看一下自己创建的表有没错误,这个SQL语句必须会用啊.

示例,代码如下:

  1. mysql> DESC `student3`; 
  2. ++-++-+-++ 
  3. | Field      | Type        | Null | Key | Default | Extra          | 
  4. ++-++-+-++ 
  5. | id         | int(11)     | NO   | PRI | NULL    | auto_increment | 
  6. | teacher_id | int(11)     | YES  | UNI | NULL    |                | 
  7. name       | varchar(20) | NO   |     | NULL    |                | 
  8. | sex        | varchar(10) | YES  |     | male    |                | 
  9. ++-++-+-++ 
  10. rows in set (0.00 sec) 

6.2、查看表详细结构

通过这个SQL语句可以查看表的详细定义,除了字段名、字段的数据类型、约束条件外,还可以查看表的默认存储引擎和字符编码.

语句:SHOW CREATE TABLE

格式:SHOW CREATE TABLE 表名;

示例,代码如下:

  1. mysql> mysql> SHOW CREATE TABLE `student3`; 
  2. ++-+ 
  3. Table    | Create Table                                                                                                                                                                                                                                                                  | 
  4. ++-+ 
  5. | student3 | CREATE TABLE `student3` ( 
  6.   `id` int(11) NOT NULL AUTO_INCREMENT, 
  7.   `teacher_id` int(11) DEFAULT NULL
  8.   `namevarchar(20) NOT NULL
  9.   `sex` varchar(10) DEFAULT 'male'
  10.   PRIMARY KEY (`id`), 
  11.   UNIQUE KEY `teacher_id` (`teacher_id`) 
  12. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | 
  13. ++-+ 
  14. 1 row in set (0.00 sec) 

7、修改表.

7.1、修改表名

表名可以在一个数据库中唯一的确定一张表.

格式:ALTER TABLE 旧表名 RENAME 新表名;

示例,代码如下:

  1. mysql> ALTER TABLE `student` RENAME `student4`; 
  2. Query OK, 0 rows affected (0.00 sec) 
  3. mysql> DESCRIBE `student`; 
  4. ERROR 1146 (42S02): Table 'example.student' doesn't exist 

由上面可以看出,改名后的表已经不存在了.

7.2、修改字段的数据类型

格式:ALTER TABLE 表名 MODIFY 属性名 数据类型;

示例,代码如下:

  1. mysql> DESCRIBE `student1`; 
  2. +-+-++-+-+-+ 
  3. | Field | Type        | Null | Key | Default | Extra | 
  4. +-+-++-+-+-+ 
  5. | id    | int(11)     | NO   | PRI | NULL    |       | 
  6. name  | varchar(20) | YES  |     | NULL    |       | 
  7. +-+-++-+-+-+ 
  8. rows in set (0.00 sec) 
  9. mysql> ALTER TABLE `student1` MODIFY `nameVARCHAR(30); 
  10. Query OK, 0 rows affected (0.09 sec) 
  11. Records: 0  Duplicates: 0  Warnings: 0 
  12. mysql> DESCRIBE `student1`; 
  13. +-+-++-+-+-+ 
  14. | Field | Type        | Null | Key | Default | Extra | 
  15. +-+-++-+-+-+ 
  16. | id    | int(11)     | NO   | PRI | NULL    |       | 
  17. name  | varchar(30) | YES  |     | NULL    |       | 
  18. +-+-++-+-+-+ 
  19. rows in set (0.00 sec) 

7.3、修改字段名.

格式:ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型;

示例,代码如下:

  1. mysql> DESCRIBE `student1`; 
  2. +-+-++-+-+-+ 
  3. | Field | Type        | Null | Key | Default | Extra | 
  4. +-+-++-+-+-+ 
  5. | id    | int(11)     | NO   | PRI | NULL    |       | 
  6. name  | varchar(30) | YES  |     | NULL    |       | 
  7. +-+-++-+-+-+ 
  8. rows in set (0.00 sec) 
  9. mysql> ALTER TABLE `student1` CHANGE `name` `stu_name` VARCHAR(40); 
  10. Query OK, 0 rows affected (0.07 sec) 
  11. Records: 0  Duplicates: 0  Warnings: 0 
  12. mysql> DESCRIBE `student1`; 
  13. ++-++-+-+-+   //phpfensi.com 
  14. | Field    | Type        | Null | Key | Default | Extra | 
  15. ++-++-+-+-+ 
  16. | id       | int(11)     | NO   | PRI | NULL    |       | 
  17. | stu_name | varchar(40) | YES  |     | NULL    |       | 
  18. ++-++-+-+-+ 
  19. rows in set (0.00 sec) 

这里我修改的字段名的同时也修改了数据类型了,如果你不想修改数据类型的话就按照原来的写就行了.

7.4、增加字段

格式:ALTER TABLE 表名 ADD 属性名1 数据类型 [完整性约束条件] [FIRST | AFTER 属性名2];

其中:属性名1:指需要增加的字段的名称,FIRST:是可选参数,其作用是将新增字段设置为表的第一个字段,AFTER:参数也是可选的参数,其作用是将新增字段添加到“属性名2”后面,属性名2:当然就是指表中已经有的字段.

示例,代码如下:

  1. mysql> DESCRIBE `student1`; 
  2. ++-++-+-+-+ 
  3. | Field    | Type        | Null | Key | Default | Extra | 
  4. ++-++-+-+-+ 
  5. | id       | int(11)     | NO   | PRI | NULL    |       | 
  6. | stu_name | varchar(40) | YES  |     | NULL    |       | 
  7. ++-++-+-+-+ 
  8. rows in set (0.00 sec) 
  9. mysql> ALTER TABLE `student1` ADD `teacher_name` VARCHAR(20) NOT NULL AFTER `id`; 
  10. Query OK, 0 rows affected (0.13 sec) 
  11. Records: 0  Duplicates: 0  Warnings: 0 
  12. mysql> DESCRIBE `student1`; 
  13. ++-++-+-+-+ 
  14. | Field        | Type        | Null | Key | Default | Extra | 
  15. ++-++-+-+-+ 
  16. | id           | int(11)     | NO   | PRI | NULL    |       | 
  17. | teacher_name | varchar(20) | NO   |     | NULL    |       | 
  18. | stu_name     | varchar(40) | YES  |     | NULL    |       | 
  19. ++-++-+-+-+ 
  20. rows in set (0.00 sec) 

7.5、删除字段

格式:ALTER TABLE 表名 DROP 属性名;

示例,代码如下:

  1. mysql> DESCRIBE `student1`; 
  2. ++-++-+-+-+ 
  3. | Field        | Type        | Null | Key | Default | Extra | 
  4. ++-++-+-+-+ 
  5. | id           | int(11)     | NO   | PRI | NULL    |       | 
  6. | teacher_name | varchar(20) | NO   |     | NULL    |       | 
  7. | stu_name     | varchar(40) | YES  |     | NULL    |       | 
  8. ++-++-+-+-+ 
  9. rows in set (0.00 sec) 
  10. mysql> ALTER TABLE `student1` DROP `teacher_name`; 
  11. Query OK, 0 rows affected (0.09 sec) 
  12. Records: 0  Duplicates: 0  Warnings: 0 
  13. mysql> DESCRIBE `student1`; 
  14. ++-++-+-+-+ 
  15. | Field    | Type        | Null | Key | Default | Extra | 
  16. ++-++-+-+-+ 
  17. | id       | int(11)     | NO   | PRI | NULL    |       | 
  18. | stu_name | varchar(40) | YES  |     | NULL    |       | 
  19. ++-++-+-+-+ 
  20. rows in set (0.00 sec) 

7.6、更改表的存储引擎

格式:ALTER TABLE 表名 ENGINE = 存储引擎名;

示例,代码如下:

  1. mysql> SHOW CREATE TABLE `student2`; 
  2. ++-+ 
  3. Table    | Create Table                                                                                                                                                                                                  | 
  4. ++-+ 
  5. | student2 | CREATE TABLE `student2` ( 
  6.   `id` int(11) NOT NULL DEFAULT '0'
  7.   `stu_id` int(11) NOT NULL DEFAULT '0'
  8.   `namevarchar(20) DEFAULT NULL
  9.   PRIMARY KEY (`id`,`stu_id`) 
  10. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | 
  11. ++-+ 
  12. 1 row in set (0.00 sec) 
  13. mysql> ALTER TABLE `student2` ENGINE=MYISAM; 
  14. Query OK, 0 rows affected (0.08 sec) 
  15. Records: 0  Duplicates: 0  Warnings: 0 
  16. mysql> SHOW CREATE TABLE `student2`; 
  17. ++-+ 
  18. Table    | Create Table                                                                                                                                                                                                  | 
  19. ++-+ 
  20. | student2 | CREATE TABLE `student2` ( 
  21.   `id` int(11) NOT NULL DEFAULT '0'
  22.   `stu_id` int(11) NOT NULL DEFAULT '0'
  23.   `namevarchar(20) DEFAULT NULL
  24.   PRIMARY KEY (`id`,`stu_id`) 
  25. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 | 
  26. ++-+ 
  27. 1 row in set (0.00 sec) 

7.7、删除表的外键约束

格式:ALTER TABLE 表名 DROP FOREIGN KEY 外键别名;

示例,代码如下:

  1. mysql> SHOW CREATE TABLE `teacher`; 
  2. +-+-+ 
  3. Table   | Create Table                                                                                                                                                                                                                                                                        | 
  4. +-+-+ 
  5. | teacher | CREATE TABLE `teacher` ( 
  6.   `id` int(11) NOT NULL
  7.   `stu_id` int(11) DEFAULT NULL
  8.   `namevarchar(20) DEFAULT NULL
  9.   PRIMARY KEY (`id`), 
  10.   KEY `STUID` (`stu_id`), 
  11.   CONSTRAINT `STUID` FOREIGN KEY (`stu_id`) REFERENCES `student1` (`id`) 
  12. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | 
  13. +-+-+ 
  14. 1 row in set (0.00 sec) 
  15. mysql> ALTER TABLE `teacher` DROP FOREIGN KEY `STUID`; 
  16. Query OK, 0 rows affected (0.04 sec) 
  17. Records: 0  Duplicates: 0  Warnings: 0 
  18. mysql> SHOW CREATE TABLE `teacher`; 
  19. +-+-+ 
  20. Table   | Create Table                                                                                                                                                                                              | 
  21. +-+-+ 
  22. | teacher | CREATE TABLE `teacher` ( 
  23.   `id` int(11) NOT NULL
  24.   `stu_id` int(11) DEFAULT NULL
  25.   `namevarchar(20) DEFAULT NULL
  26.   PRIMARY KEY (`id`), 
  27.   KEY `STUID` (`stu_id`) 
  28. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | 
  29. +-+-+ 
  30. 1 row in set (0.00 sec) 

8、删除表.

格式:DROP TABLE 表名;

删除没有被关联的普通表,直接上面的SQL语句就行了,删除被其他表关联的父表.

方法一:先删除子表,在删除父表

方法二:删除父表的外键约束,上面有介绍,再删该表.

Tags: MySQL创建命令 MySQL修改命令

分享到: