MySQL中创建、修改和删除表命令
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-27 23:15:04 浏览: 评论:0
简单的说就是不让这个属性的值为空,不填的话就会报错
格式:属性名 数据类型 NOT NULL
5.5、设置表的唯一性约束,就是这个属性的值是不能重复的
格式:属性名 数据类型 UNIQUE
5.6、设置表的属性值自动增加
AUTO_INCREMENT约束的字段可以是任何整数类型(TINYINT、SMALLINT、INT和BIGINT),在默认的情况下,该字段的值是从1开始自增
格式:属性名 数据类型 AUTO_INCREMENT
5.7、设置表的属性的默认值
格式:属性名 数据类型 DEFAULT 默认值
下面对5.4-5.7进行综合示例,代码如下:
- mysql> CREATE TABLE `student3` (
- -> `id` INT PRIMARY KEY AUTO_INCREMENT,
- -> `teacher_id` INT UNIQUE,
- -> `name` VARCHAR(20) NOT NULL,
- -> `sex` VARCHAR(10) default 'male'
- -> );
- Query OK, 0 rows affected (0.07 sec)
6、查看表结构
6.1、查看表基本结构
语句:DESCRIBE
格式:DESCRIBE 表名;
通过查看表的结构,就很明确的对表进行解读,而且可以查看一下自己创建的表有没错误,这个SQL语句必须会用啊.
示例,代码如下:
- mysql> DESC `student3`;
- ++-++-+-++
- | Field | Type | Null | Key | Default | Extra |
- ++-++-+-++
- | id | int(11) | NO | PRI | NULL | auto_increment |
- | teacher_id | int(11) | YES | UNI | NULL | |
- | name | varchar(20) | NO | | NULL | |
- | sex | varchar(10) | YES | | male | |
- ++-++-+-++
- 4 rows in set (0.00 sec)
6.2、查看表详细结构
通过这个SQL语句可以查看表的详细定义,除了字段名、字段的数据类型、约束条件外,还可以查看表的默认存储引擎和字符编码.
语句:SHOW CREATE TABLE
格式:SHOW CREATE TABLE 表名;
示例,代码如下:
- mysql> mysql> SHOW CREATE TABLE `student3`;
- ++-+
- | Table | Create Table |
- ++-+
- | student3 | CREATE TABLE `student3` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `teacher_id` int(11) DEFAULT NULL,
- `name` varchar(20) NOT NULL,
- `sex` varchar(10) DEFAULT 'male',
- PRIMARY KEY (`id`),
- UNIQUE KEY `teacher_id` (`teacher_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
- ++-+
- 1 row in set (0.00 sec)
7、修改表.
7.1、修改表名
表名可以在一个数据库中唯一的确定一张表.
格式:ALTER TABLE 旧表名 RENAME 新表名;
示例,代码如下:
- mysql> ALTER TABLE `student` RENAME `student4`;
- Query OK, 0 rows affected (0.00 sec)
- mysql> DESCRIBE `student`;
- ERROR 1146 (42S02): Table 'example.student' doesn't exist
由上面可以看出,改名后的表已经不存在了.
7.2、修改字段的数据类型
格式:ALTER TABLE 表名 MODIFY 属性名 数据类型;
示例,代码如下:
- mysql> DESCRIBE `student1`;
- +-+-++-+-+-+
- | Field | Type | Null | Key | Default | Extra |
- +-+-++-+-+-+
- | id | int(11) | NO | PRI | NULL | |
- | name | varchar(20) | YES | | NULL | |
- +-+-++-+-+-+
- 2 rows in set (0.00 sec)
- mysql> ALTER TABLE `student1` MODIFY `name` VARCHAR(30);
- Query OK, 0 rows affected (0.09 sec)
- Records: 0 Duplicates: 0 Warnings: 0
- mysql> DESCRIBE `student1`;
- +-+-++-+-+-+
- | Field | Type | Null | Key | Default | Extra |
- +-+-++-+-+-+
- | id | int(11) | NO | PRI | NULL | |
- | name | varchar(30) | YES | | NULL | |
- +-+-++-+-+-+
- 2 rows in set (0.00 sec)
7.3、修改字段名.
格式:ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型;
示例,代码如下:
- mysql> DESCRIBE `student1`;
- +-+-++-+-+-+
- | Field | Type | Null | Key | Default | Extra |
- +-+-++-+-+-+
- | id | int(11) | NO | PRI | NULL | |
- | name | varchar(30) | YES | | NULL | |
- +-+-++-+-+-+
- 2 rows in set (0.00 sec)
- mysql> ALTER TABLE `student1` CHANGE `name` `stu_name` VARCHAR(40);
- Query OK, 0 rows affected (0.07 sec)
- Records: 0 Duplicates: 0 Warnings: 0
- mysql> DESCRIBE `student1`;
- ++-++-+-+-+ //phpfensi.com
- | Field | Type | Null | Key | Default | Extra |
- ++-++-+-+-+
- | id | int(11) | NO | PRI | NULL | |
- | stu_name | varchar(40) | YES | | NULL | |
- ++-++-+-+-+
- 2 rows in set (0.00 sec)
这里我修改的字段名的同时也修改了数据类型了,如果你不想修改数据类型的话就按照原来的写就行了.
7.4、增加字段
格式:ALTER TABLE 表名 ADD 属性名1 数据类型 [完整性约束条件] [FIRST | AFTER 属性名2];
其中:属性名1:指需要增加的字段的名称,FIRST:是可选参数,其作用是将新增字段设置为表的第一个字段,AFTER:参数也是可选的参数,其作用是将新增字段添加到“属性名2”后面,属性名2:当然就是指表中已经有的字段.
示例,代码如下:
- mysql> DESCRIBE `student1`;
- ++-++-+-+-+
- | Field | Type | Null | Key | Default | Extra |
- ++-++-+-+-+
- | id | int(11) | NO | PRI | NULL | |
- | stu_name | varchar(40) | YES | | NULL | |
- ++-++-+-+-+
- 2 rows in set (0.00 sec)
- mysql> ALTER TABLE `student1` ADD `teacher_name` VARCHAR(20) NOT NULL AFTER `id`;
- Query OK, 0 rows affected (0.13 sec)
- Records: 0 Duplicates: 0 Warnings: 0
- mysql> DESCRIBE `student1`;
- ++-++-+-+-+
- | Field | Type | Null | Key | Default | Extra |
- ++-++-+-+-+
- | id | int(11) | NO | PRI | NULL | |
- | teacher_name | varchar(20) | NO | | NULL | |
- | stu_name | varchar(40) | YES | | NULL | |
- ++-++-+-+-+
- 3 rows in set (0.00 sec)
7.5、删除字段
格式:ALTER TABLE 表名 DROP 属性名;
示例,代码如下:
- mysql> DESCRIBE `student1`;
- ++-++-+-+-+
- | Field | Type | Null | Key | Default | Extra |
- ++-++-+-+-+
- | id | int(11) | NO | PRI | NULL | |
- | teacher_name | varchar(20) | NO | | NULL | |
- | stu_name | varchar(40) | YES | | NULL | |
- ++-++-+-+-+
- 3 rows in set (0.00 sec)
- mysql> ALTER TABLE `student1` DROP `teacher_name`;
- Query OK, 0 rows affected (0.09 sec)
- Records: 0 Duplicates: 0 Warnings: 0
- mysql> DESCRIBE `student1`;
- ++-++-+-+-+
- | Field | Type | Null | Key | Default | Extra |
- ++-++-+-+-+
- | id | int(11) | NO | PRI | NULL | |
- | stu_name | varchar(40) | YES | | NULL | |
- ++-++-+-+-+
- 2 rows in set (0.00 sec)
7.6、更改表的存储引擎
格式:ALTER TABLE 表名 ENGINE = 存储引擎名;
示例,代码如下:
- mysql> SHOW CREATE TABLE `student2`;
- ++-+
- | Table | Create Table |
- ++-+
- | student2 | CREATE TABLE `student2` (
- `id` int(11) NOT NULL DEFAULT '0',
- `stu_id` int(11) NOT NULL DEFAULT '0',
- `name` varchar(20) DEFAULT NULL,
- PRIMARY KEY (`id`,`stu_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
- ++-+
- 1 row in set (0.00 sec)
- mysql> ALTER TABLE `student2` ENGINE=MYISAM;
- Query OK, 0 rows affected (0.08 sec)
- Records: 0 Duplicates: 0 Warnings: 0
- mysql> SHOW CREATE TABLE `student2`;
- ++-+
- | Table | Create Table |
- ++-+
- | student2 | CREATE TABLE `student2` (
- `id` int(11) NOT NULL DEFAULT '0',
- `stu_id` int(11) NOT NULL DEFAULT '0',
- `name` varchar(20) DEFAULT NULL,
- PRIMARY KEY (`id`,`stu_id`)
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
- ++-+
- 1 row in set (0.00 sec)
7.7、删除表的外键约束
格式:ALTER TABLE 表名 DROP FOREIGN KEY 外键别名;
示例,代码如下:
- mysql> SHOW CREATE TABLE `teacher`;
- +-+-+
- | Table | Create Table |
- +-+-+
- | teacher | CREATE TABLE `teacher` (
- `id` int(11) NOT NULL,
- `stu_id` int(11) DEFAULT NULL,
- `name` varchar(20) DEFAULT NULL,
- PRIMARY KEY (`id`),
- KEY `STUID` (`stu_id`),
- CONSTRAINT `STUID` FOREIGN KEY (`stu_id`) REFERENCES `student1` (`id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
- +-+-+
- 1 row in set (0.00 sec)
- mysql> ALTER TABLE `teacher` DROP FOREIGN KEY `STUID`;
- Query OK, 0 rows affected (0.04 sec)
- Records: 0 Duplicates: 0 Warnings: 0
- mysql> SHOW CREATE TABLE `teacher`;
- +-+-+
- | Table | Create Table |
- +-+-+
- | teacher | CREATE TABLE `teacher` (
- `id` int(11) NOT NULL,
- `stu_id` int(11) DEFAULT NULL,
- `name` varchar(20) DEFAULT NULL,
- PRIMARY KEY (`id`),
- KEY `STUID` (`stu_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
- +-+-+
- 1 row in set (0.00 sec)
8、删除表.
格式:DROP TABLE 表名;
删除没有被关联的普通表,直接上面的SQL语句就行了,删除被其他表关联的父表.
方法一:先删除子表,在删除父表
方法二:删除父表的外键约束,上面有介绍,再删该表.
Tags: MySQL创建命令 MySQL修改命令
- 上一篇:创建mysql存储过程出现1307错误
- 下一篇:MySQL修改表存储引擎方法总结
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)