本来都不想写这节了,因为很麻烦,例子要多,且要有代表性,而且也知道大家都烦了。可是这节却是我们平时经常使用的,因为MySQL用的最多的就是对数据的操作,包括插入数据,更新数据,修改数据,删除数据。可是表才是存放数据的地方,一个表建的好坏直接影响你操作的性能
,所以我认为有必要来简单介绍一下这节,MySQL对表的复制,修改和删除。包括从复制一个表结构到另一个表,修改表结构(例如:增加删除字段,增加索引等),还有,删除没用的表释放硬盘空间。
select
*
from
nickname;
/*
id name desc
1 simaopig 这本是给丫头起的名字
2 虫zi 不是一条龙就是一条虫,虫子是不用早起的
3 chongpig 这样可以说明虫zi是爱小猪的,呵呵
*/
假设有上面这个昵称表,本篇日志所讲都是以此表为基础,大家直接以此为参考即可。
MySQL表的复制
创建表的副本:
创建一个完全和上表表结构一样,数据也一样的新表
,即直接复制原表的表结构可以用如下SQL语句
/*
用子查询,创建表,表的结构呢完全和nickname一致,并且数据也相同
*/
create
table
new_nickname select
*
from
nickname;
只创建含有特定字段的表副本:
有的时候呢,我需要一个新表,只需要有昵称表的name与desc两个字段即可,不需要id字段,同样使用子查询,不过不再是select * 而是直接select 想要的字段即可
/*
因为只想要name和desc字段,所以我只查询原表的这两个字段即可
*/
create
table
new_nickname select
name,
desc
from
nickname;
只创建含有约束条件的值的表副本:
比如说,突然间我只想要那个id < 3的昵称表的所有数据咋办呢?(我不是 矫情啊,是为了举例啊!)这个时候,我们就需要为子查询加上条件限制,where 语句大家没有忘吧?
/*
限定条件,只要id<3的数据
*/
create
table
new_nickname select
*
from
nickname where
id <
3
;
只复制表结构,咱爷们不要表数据:
有的时候呢,我只想复制旧表的表结构,至于里面的数据呢?已经old了,我是不想要的,即我只想复制一个表的表结构,这个时候咋办呢?别怕,我教你三种方法,均可解决此问题。
/*
和上面复制特定数据一样,只不过呢,咱这个条件弄个恶心点的,
当0=1的时候我才要你的数据,显然不会复制任何数据了
*/
create
table
new_nickname select
*
from
nickname where
0
=
1
;
上面的方法是取巧,因为没有合格的数据符合限制条件,所以被复制的当然只有表结构了。另外MySQL提供了一个现成的语法,那就是:create table new_talbe_name like old_table_name;
/*
应用create table like 语法,只复制表结构
*/
create
table
new_nickname like
nickname;
第三种方法就是用咱们之前取过外键key_id的方法,显示创建表时的SQL语句然后复制,显示建表语句的方法为:show create table table_name;
复制旧表部分结构,同时增加新字段:
人都要创新嘛,社会在进步,如果还停留不前的话是会淘汰的,所以咱也不能单纯的复制,也要有点自己的个性,在我的地盘听我的嘛。比如说复制昵称表的同时呢,我要创建一个新的字段,就是昵称创建日期字段。嗯。
/*
咱也个性点,新字段咋的也得先声明一下,再复制想要的那部分字段,嘿嘿
*/
create
table
new_nickname (
create_time date
not
null
,
status
enum
(
'1'
,
'2'
)
)
select
name,
desc
from
nickname;
MySQL表的修改
MySQL可以使用ALTER TABLE 语法来更改已存在的表,它允许在不重建整个表的情况下,添加删除或者修改表字段。其完整结构为:ALTER TABLE table-name (action field-definition, action field-definition, ….);
这里面的action包括关键字:ADD,DROP,ALTER或者是CHANGE中的任何一个,而且后面跟的是与创建表CREATE TABLE命令使用的相同的字段定义。这个定义包含要修改的字段的名字和由新字段名字、类型和约束组成的字段定义。
向表中添加新字段:
这回咱也不复制表了,搞的那么郁闷干什么?咱直接在昵称表上面更改,为昵称表添加新的字段创建时间——create_time
/*
我相信不用我说您也知道应该用上面说的action中的ADD,嗯,都是联明的孩子啊
*/
alter
table
nickname add
create_time date
not
null
;
为表添加主键:
咱可不是仅能改表的字段描述,添加新字段啥的。咱还能为表添加主键及索引。不信咱就试一下,将昵称表的id添加为主键。
/*
主键的描述是PRIMARY KEY
*/
alter
table
nickname add
primary key
(
id)
;
修改字段名及类型:
把昵称表的字段name改为nick_name,嗯,说干咱就干。该出手时咱就得出手不是?要不软柿子都让别人捏走了。
alter
table
nick_name change name nick_name varchar
(
255
)
;
在修改字段类型时,MySQL允许使用modify关键字来替换change。二者惟一的区别就是change需要同时指定新字段与旧字段的名字,而modify因为只能用在修改字段类型上,而不能改变字段名字,所以自然就没有新字段名称这一概念
/*
将nick_name表中的id由原来的int(3)改为bigint(18)
*/
alter
table
nick_name change id id bigint
(
18
)
auto_increment
unique
;
alter
table
nick_name modify
id bigint
(
18
)
auto_increment
unique
;
删除字段:
呃,本来字段就不多,行啊,为了日志,删除id吧。嗯。
/*
聪明 的孩子这回都知道action应该选择DROP 了
*/
alter
table
nick_name drop
id;
给表重命名:
把昵称表的名字改为new_nickname,重命名表的名字,MySQL提供了一个方法RENAME TO,有两种用法,注意看示例
alter
table
nick_name rename
to
new_nickname;
rename
table
nick_name to
new_nickname;
给表增加外键:
MySQL提供了一种给表增加外键的语法:ADD FOREIGN KEY
/*
把nick_name表中的name添加为外键,外键参照于user表
*/
alter
tabgle nick_name add
foreign key
(
name )
references
users (
user_name)
on
delete
cascade
on
update
cascade
;
更改表类型:
前面的日志介绍了MySQL表的不同表类型,并简单谈了一下它们的区别,及何时应用哪种格式,现在让我们来看一下,如果不小心选错了MySQL的表类型,如何更改
/*
将nick_name表类型由InnoDB改为MyISAM
*/
alter
table
nick_name type
=
myisam;
为字段设置或删除默认值:
表字段是可以设置默认值的,那么如何更改呢?假设我要把nick_name的desc设默认值为“丫头,我爱你”咋办呢?MySQL提供了设置和删除默认值的方法:SET DEFAULT 和 DROP DEFAULT
,还有在我新增加字段的时候,比如我增加create_time字段,我想把这个字段放在name字段的后面咋办?MySQL提供给我们FIRST和AFTER子句控制字段的位置
。
/*
为表增加默认值
*/
alter
table
nick_name alter
desc
set
default
=
'丫头,我爱你'
;
/*
为表删除默认值
*/
alter
table
nick_name alter
desc
drop
default
;
/*
将create_time字段放在name后面
*/
alter
talbe nick_name add
create_time datetime
after
name;
/*
将create_time字段放在desc前面
*/
alter
table
nick_name add
create_time datetime
first
desc
;
MySQL表的删除
此操作相当简单,但是一定要慎重,慎重,慎重
!!! @_@
DROP TABLE table-name;
/*
删除nick_name表
*/
drop
table
nick_name;
如果怕表不存在,导致系统报错的话可以用上IF EXISTS就像建表时可以用IF NOT EXISTS一样
/*
如果nick_name表存在就删除它
*/
drop
table
if
exists
nick_name;
PS:这篇写完了,好长啊,好累啊。嗯。。
http://www.xiaoxiaozi.com/2009/07/16/1191/
分享到:
相关推荐
MySQL 对表的修改、复制与删除是数据库管理中非常重要的操作。这里我们将详细介绍 MySQL 中对表的修改、复制与删除操作。 MySQL 表的复制 MySQL 中提供了多种方式来复制表,包括完全复制、复制特定字段、复制特定...
MySQL 对表的修改、复制与删除是 MySQL 数据库管理中非常重要的一部分。今天,我们将详细介绍 MySQL 表的修改、复制与删除的相关知识点。 MySQL 表的复制 MySQL 表的复制是指创建一个完全和原表结构一样、数据也...
MySQL 表的修改、复制与删除知识 MySQL 表的复制 MySQL 提供了多种方式来复制表,包括创建一个完全相同的表副本、创建只包含特定字段的表副本、创建只包含特定条件的表副本、复制表结构同时不复制数据等。 1. ...
### MySQL主从复制配置详解 #### 一、MySQL主从复制概述 MySQL主从复制是一种数据复制机制,通过该...本篇文章详细介绍了MySQL主从复制的基本原理、配置流程及关键步骤,希望能够帮助读者更好地理解和应用这一技术。
mysql 数据库的备份是指将数据库中的数据复制到另一个介质上,以便在出现问题时能够快速恢复数据库。常见的备份方法包括mysqldump 命令和mysqlhotcopy 工具。 六、表检查修复 mysql 数据库中的表可能会出现损坏,...
- 基于行的复制:仅复制实际更改的数据行,适用于更精确的复制,但效率相对较低。 这些知识点涵盖了MySQL面试中的常见问题,包括数据库设计原则、性能优化策略、索引使用和数据库管理操作,以及复制技术的理解。...
3. **数据库管理**:讲解如何创建、修改和删除数据库,以及对表结构、索引和视图的管理。还包括权限控制,允许管理员分配不同级别的访问权限给不同的用户。 4. **存储引擎**:MySQL支持多种存储引擎,如InnoDB...
- **加密数据**:支持透明数据加密(TDE),可以在不修改应用程序的情况下对表的数据进行加密,保护敏感信息。 - **增强的审计日志**:提供了更详细的审计记录,便于监控数据库活动,确保合规性。 3. **性能优化*...
1. **SQL基础**:这是所有数据库学习的起点,包括SQL语言的基本语法,如SELECT、INSERT、UPDATE、DELETE等操作,以及对表的创建、修改和删除(CREATE、ALTER、DROP)。 2. **数据类型与约束**:MySQL中的数据类型,...
在MySQL中,修改表结构是指对表的字段、索引、约束等进行修改。以下是一些常用的修改表结构命令: 1. 添加主键:ALTER TABLE tab_name ADD PRIMARY KEY (col_name); 2. 删除主键:ALTER TABLE tab_name DROP ...
### MySQL复习笔记七:MySQL官方文档及阅读辅助工具 #### MySQL 5.7 官方文档解析 在深入了解MySQL之前,我们首先需要了解其官方文档的重要性。MySQL作为一款广泛使用的开源关系型数据库管理系统,它的官方文档是...
32. **MySQL主从复制的工作原理**:主服务器记录所有的数据修改操作,并将这些操作写入二进制日志。从服务器读取这些日志并应用相应的更改。 33. **解决MySQL的复制滞后**:通过优化主服务器上的查询性能、增加从...
- **复制表结构与数据**: 若要同时复制表结构及其中的数据,可以使用`INSERT INTO ... SELECT`语句。 ```sql INSERT INTO t3 SELECT * FROM t1; ``` 这种方式非常实用,尤其是在创建新表时需要与现有表具有相同...
MySQL 常用命令大全 本文档旨在总结 MySQL 的常用命令,旨在帮助开发者快速掌握 MySQL 的基本操作命令。下面将详细介绍 MySQL 的基本命令,包括启动 MySQL、数据库操作、表操作、数据操作等方面。 一、命令行指令 ...
通过上述内容,我们不仅了解了如何进行MySQL的基础配置和管理,还学习了如何创建、修改和删除数据库以及表,最后还掌握了如何对表中的数据进行插入、删除和修改等基本操作。这对于理解和掌握MySQL的基本使用方法非常...
MySQL学习项目是一个全面掌握数据库管理、SQL查询及数据操作的重要资源集合。在这个压缩包中,包含的文件"Kwan1117"可能是教程、笔记、实战案例或其他相关材料,旨在帮助用户深入理解和实践MySQL技术。以下是一些...
198 2、INSERT DELAYED 在客户机方的作用 199 8.4.4 对表进行优化 200 8.4.5 总结 201 8.5 服务器级优化 201 8.5.1 磁盘问题 201 8.5.2硬件问题 202 8.5.3 服务器参数的选择 202 8.5.4编译...
mysql 总结........................................................................................................................................6 1.1 数据库的种类.......................................
MySQL 教程旨在帮助初学者从基础到精通掌握MySQL数据库管理系统。MySQL是一种广泛使用的开源关系型数据库,尤其在Web应用程序中表现出色。关系数据库管理系统(RDBMS)如MySQL,利用表格来组织和管理数据,确保数据...