`
hxy520882012
  • 浏览: 28810 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

知识积累2:Mysql对表的修改,复制与删除

 
阅读更多
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_table_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;





分享到:
评论

相关推荐

    mysql对表的修改,复制与删除.docx

    MySQL 对表的修改、复制与删除是数据库管理中非常重要的操作。这里我们将详细介绍 MySQL 中对表的修改、复制与删除操作。 MySQL 表的复制 MySQL 中提供了多种方式来复制表,包括完全复制、复制特定字段、复制特定...

    mysql对表的修改,复制与删除.pdf

    今天,我们将详细介绍 MySQL 表的修改、复制与删除的相关知识点。 MySQL 表的复制 MySQL 表的复制是指创建一个完全和原表结构一样、数据也一样的新表。我们可以使用以下 SQL 语句来实现: ```sql CREATE TABLE ...

    mysql对表的修改,复制与删除知识.pdf

    MySQL 表的修改、复制与删除知识 MySQL 表的复制 MySQL 提供了多种方式来复制表,包括创建一个完全相同的表副本、创建只包含特定字段的表副本、创建只包含特定条件的表副本、复制表结构同时不复制数据等。 1. ...

    数据库查询指令:mysql查询语句汇总+编程知识+技术开发

    mysql查询语句汇总,数据库查询指令:mysql查询语句汇总+编程知识+技术开发;mysql查询语句汇总,数据库查询指令:mysql查询语句汇总+编程知识+技术开发;mysql查询语句汇总,数据库查询指令:mysql查询语句汇总+...

    跟老男孩学Linux运维:MySQL入门与提高实践.zip

    《跟老男孩学Linux运维:MySQL入门与提高实践》是一本专为初学者和有一定基础的Linux运维人员设计的MySQL教程。由知名IT教育品牌"老男孩"出品,旨在帮助读者掌握MySQL数据库的基础操作和高级应用,提升在Linux环境下...

    8.第八章:mysql主从复制与读写分离.doc

    ### MySQL主从复制与读写分离详解 #### 第八章:MySQL主从复制与读写分离 本章节主要探讨MySQL的主从复制机制及其在实际...以上是关于MySQL主从复制与读写分离的主要知识点概述。接下来将进入具体的项目实验步骤。

    mysql for liunx 免安装版

    2. 把mysql.tar.gz 复制到对应的/usr/local目录下: Cd /usr/local Tar –xvzf mysql.tar.gz 然后执行 groupadd mysql useradd -g mysql mysql chown -R root:mysql /usr/local/mysql/ chown -R mysql:mysql /usr/...

    知识总结:MySQL.xmind

    思维导图:mysql数据库表操作,分组函数,集合操作,单行函数,多表连接及事务等

    linux运维学习笔记:MySQL主从复制原理和实战.pdf

    在具体配置MySQL主从复制时,首先需要修改***f配置文件,设置log-bin来启用二进制日志记录,设置server-id来唯一标识每个MySQL服务器。接着,在主服务器上创建模拟数据,用于测试复制功能。然后,在从服务器上执行...

    《数据库原理及应用_MySQL》实验任务及指导书.docx

    知识点2: 数据表的创建与维护管理实验 *掌握表的基础知识 *掌握使用 Navicat 管理工具和 SQL 语句创建表的方法 *掌握表的修改、查看、删除等基本操作方法 *掌握使用 SQL 语句对表进行 CRUD(Create、Read、Update、...

    如何实现MySQL的主从复制和半同步复制

    MySQL的主从复制和半同步复制是数据库集群中常见的高可用性和数据冗余策略,能够保证数据的一致性并提供故障恢复能力。本文将详细解释这两种复制方式的原理、配置步骤以及优缺点。 **一、MySQL主从复制** MySQL...

    SpringBoot第 12 讲:SpringBoot+MySQL主从复制、读写分离

    在本讲中,我们将深入探讨如何使用SpringBoot与MySQL实现主从复制以及读写分离的架构设计。这一技术方案在大型分布式系统中尤为常见,它能够有效地提高数据库系统的可用性和性能。 首先,让我们理解主从复制的核心...

    催米技术部研发团队技术分享:mysql主从复制&分区技术&优化.ppt

    MySQL 主从复制与分区技术及优化 MySQL 主从复制技术是指将一个 MySQL 数据库服务器的数据复制到另一个服务器上,以实现数据的高可用性和读写分离。它可以将主服务器上的数据实时同步到从服务器上,从而提高整个...

    mysql源码(mysql-8.2.0.tar.gz)

    6. Replication(复制):MySQL的主从复制功能允许数据在多个服务器之间同步,源码中可以研究如何实现异步复制、半同步复制等模式。 7. 存储格式:MySQL的数据存储格式,如MyISAM和InnoDB的物理结构,包括数据文件...

    MySQL主从复制与读写分离.docx

    下面是 MySQL 主从复制与读写分离的详细知识点: MySQL 主从复制 MySQL 主从复制是指将一个 MySQL 服务器(称为主服务器)的数据实时同步到另一个 MySQL 服务器(称为从服务器)中。这样可以实现数据的高可用性,...

Global site tag (gtag.js) - Google Analytics