程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL數據表的基本操作二:表結構查看、修改與表操作

MySQL數據表的基本操作二:表結構查看、修改與表操作

編輯:MySQL綜合教程

MySQL數據表的基本操作二:表結構查看、修改與表操作


一、查看數據表結構

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)

如果您們在嘗試的過程中遇到什麼問題或者我的代碼有錯誤的地方,請給予指正,非常感謝!

聯系方式:[email protected]

版權@:轉載請標明出處!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved