SQL数据库修改表

SQL数据库修改表,第1张

1、首先你要保证你的两个表都有主键,或者有关联字段

例如:

表A(id,name,date) id是主键

表B(id,name,date) id是主键

1)导入B数据数据到A表保留date字段值(确切的说这种情况应该叫利用B表数据更新A表数据),用下面的sql就可以达到目的:

update A set Adate=(select Bdate from B where Bid=Aid);

说明:这样做的话要保证A表和B表都有数据并且id字段能够关联上,而且这样修改的数据只是关联上的数据,假设A表中有id=1的数据而B表中没有

id=1的数据,那么A表中id=1的数据就不会被修改。

2)如果A表和B表都没有主键的话,那么寻找一个能够关联两个表数据的字段(这个字段可以从一定意义上作为"主键"区分表中数据),假设是id和name字段联合起来:

update A set Adate=(select Bdate from B where Bid=Aid and Bname=Aname);

说明:在这个更新中更新条目也只限定于能够关联上的数据。

3)如果A表中没有数据只是想把B表中的数据全部插入A表(B表中date字段的值必须被保留的话)

insert into A select from B;

说明:在这个语句中,把B表中所有的数据不加修改的全部放入了B表,自然也就包含了date字段的值不变。

insert intp A select 1,'张三',date from B;

说明:在这个语句中,把B表中的date字段的只保留,id和name字段分别换成了1和张三(当然是所有数据的id和name字段都换了)

2、综合上面的观点

1)如果表1没有数据:insert into 表1 select from 表2;

2)如果表1中有数据,并且和表2中的数据完全关联的上的话:

update 表1 set 表1sj=(select 表2sj from 表2 where 表2字段X=表1字段X and);

3)如果表1中有数据,但是表2中只有一部分能够关联上,目的是关联上的更新,关联不上的插入表1的话:

先:update 表1 set 表1sj=(select 表2sj from 表2 where 表2字段X=表1字段X and);

后:insert 表1 select from 表2 where 表2关联字段X not in(select 表1关联字段X from 表1) and

表2关联字段Y not in(select 表1关联字段Y from 表1)

---

以上,希望对你有所帮助。

Online DDL 工具:pt-osc

对于 MySQL Online DDL 目前主流的有三种工具:

原生 Online DDL;

pt-osc(online-schema-change),

gh-ost

本文主要讲解 pt-online-schema-change 的使用以及三种工具的简单对比。

一、原理及限制

11 原理

1 创建一个与原表结构相同的空表,表名是 _new 后缀;

2 修改步骤 1 创建的空表的表结构;

3 在原表上加三个触发器:delete/update/insert,用于 copy 数据过程中,将原表中要执行的语句在新表中执行;

4 将原表数据以数据块(chunk)的形式 copy 到新表;

5 rename 原表为 old 表,并把新表 rename 为原表名,然后删除旧表;

6 删除触发器。

1、首先打开电脑,进入到电脑桌面中。

2、其次点击桌面中的oracle数据库软件,进入到软件界面中,点击其设置,进入到设置界面中。

3、最后点击数据库表的性质,点击其性别,即可进行修改。

工具/材料

Navicat For MySQL

01

打开Navicat for MySQL,找到一个数据库,然后右键单击表,选择新建表选项,如下图所示

02

在d出的新建表界面,我们给表建一些字段,如下图所示,建好之后保存即可

03

建好的表会在数据库的右侧界面显示出来,需要查看哪个表直接选择即可

04

下面我们在test数据库中新建一个查询,通过alter table语句修改表中的age字段不为空,如下图所示

442修改字段名

语句格式:ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;

在上面语句格式中,“表名”指定要修改的是哪个表,“旧字段名”指定要修改表中哪个字段(的字段名),“新字段名”指定要修改成的新字段名,“新数据类型”指定修改字段名后的字段数据类型(注意:新数据类型不能省掉,表中字段更改字段名后即便数据类型不改,也要给出新数据类型)。

下面截图中的“ALTER TABLE”语句将t_dept表中loc字段更名为location,修改之前和修改之后的“desc”语句执行结果的对比中可以看出loc字段被修改成了location。

使用update:

update

表名

set

字段1='修改值1',字段2='修改值2',字段5='修改值5'

where

字段='某些值';

该语句是将表中所要求字段匹配后的行,进行相应字段的修改。

例如,表person

id/name/age

1/a/15

2/b/15

3/c/16

update

person

set

name=d

where

age=16;

结果为3/c/16被修改为3/d/16。

我的老师教过我一种很好的方法,绝对能解决你的这个问题,具体方法是: exec sp_rename(给。。。从新命名) 'table'(旧的数据库中表的名称),'newtable'(新的数据库中表的名称)!

以上就是关于SQL数据库修改表全部的内容,包括:SQL数据库修改表、如何修改mysql数据库表结构、oracle数据库表的性别怎么修改等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9507613.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存