视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQL数据表的基本操作二:表结构查看、修改与表操作_MySQL
2020-11-09 19:42:48 责编:小采
文档


一、查看数据表结构

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>;
提示:

该语句可以用来查看创建表的详细语句;还可以用来查看存储引擎和字符编码;加上参数'\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 <字段1><数据类型> FIRST|AFTER <字段2>;
示例
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)

如果您们在尝试的过程中遇到什么问题或者我的代码有错误的地方,请给予指正,非常感谢!

联系方式:david.louis.tian@outlook.com

版权@:转载请标明出处!

下载本文
显示全文
专题