精华内容
下载资源
问答
  • MySQL 查看数据库表结构 修改表结构 修改字段 修改约束条件 修改表名 删除数据库表 查看数据库表结构 可以使用 describe 语句来查看数据表结构,代码如下: describe users; 在控制台中输入上述语句后的执行...

    MySQL 查看数据库表结构 修改表结构 修改字段 修改约束条件 修改表名 删除数据库表

    查看数据库表结构

    • 可以使用 describe 语句来查看数据表结构,代码如下:

      describe users;
      
    • 在控制台中输入上述语句后的执行结果如下所示:

      在这里插入图片描述

    修改表结构

    • 在实际应用中,当发现某个表的结构不满足要求时,可以使用 alter table 语句来修改表的结构,包括修改表的名称、添加新的字段、删除原有的字段、修改字段类型、索引及约束,还可以修改存储引擎及字符集等。修改表的语法格式如下:

      alter table 表名 action[,action]...;
      
    • 其中,每个动作(action)是对表所做的修改,MySQL 支持一条 alter table 语句带多个动作,中间用逗号隔开。下面详细介绍一下几种常用的修改

    • 1、修改字段

      • (1)添加新字段

        • 向表里添加新字段可以通过在 action 语句中使用 add 关键字来实现,语法格式如下:

          alter table 表名 add 新字段名 数据类型 [约束条件][first|after 字段名];
          
        • 向表中添加新字段时通常需要指定新字段在表中的位置,如果没有指定 first 或者 after 关键字,则在表的末尾添加新字段,否则在指定位置添加新字段

        • 例如,为用户表 users 添加一个 address 字段,数据类型为 varchar(50),非空约束,可以使用如下的 SQL 语句:

          alter table users add address varchar(50) not null;
          
        • 若要在 users 表中的 sex 字段后增加一个 phone 字段,数据类型为 varchar(20),非空约束,则对应的 SQL 语句如下:

          alter table users add phone varchar(20) not null after sex;
          
        • 添加字段后的 users 表的结构如下图所示

          在这里插入图片描述

      • (2)修改字段

        • 如果只需要修改字段的数据类型,则使用 change 或者 modify 子句,其语法如下:

          alter table 表名 change 原字段名 新字段名 数据类型;
          alter table 表名 modify 字段名 数据类型;
          
        • 例如,要修改 users 表中的 phone 字段,将数据类型由 varchar(20) 改为 int,并设置默认值为 0,下面两种方法是等价的:

          alter table users change phone phone int unsigned default 0;
          alter tablr users modify phone int unsigned default 0;
          
        • 如果需要修改字段的字段名(以及数据类型)这时就只能使用 change 子句了。例如,将 users 表中的 phone 字段修改为 telephone 字段,且数据类型修改为 varchar(20),则可以使用如下 SQL 语句:

          alter table users change phone telephone varchar(20);
          
      • (3)删除字段

        • 删除表字段的语法格式如下:

          alter table 表名 drop 字段名;
          
        • 例如,将 users 表中的 address 字段删除,则可以使用如下 SQL 语句:

          alter table users drop address;
          
    • 2、修改约束条件

      • (1)添加约束条件

        • 向表的某个字段添加约束条件的语法格式如下:

          alter table 表名 add constraint 约束名 约束类型(字段名);
          
        • 例如,向用户表 users 的 telephone 添加唯一性约束,且约束名为 phone_unique,可以使用如下 SQL 语句:

          alter table users add constraint phone_unique unique(telephone);
          
        • 添加了上述约束条件后,users 表的结构如下所示:

          在这里插入图片描述

        • 如果要向订单表 orders 的 uid 字段添加外键约束,且约束名为 fk_orders_users,可以使用如下 SQL 语句:

          alter table users add constraint fk_orders_users foreign key(uid) references users(uid);
          
      • (2)删除约束条件

        • 若要删除表的主键约束,其语法格式如下:

          alter table 表名 drop primary key;
          
        • 例如,要删除订单表 orders 的主键约束,可以使用如下 SQL 语句:

          alter table orders drop primary key;
          
        • 若要删除表的外键约束,其语法格式如下:

          alter table 表名 drop foreign key 外键约束名;
          
        • 例如,要删除订单表 orders 的外键约束,可以使用如下 SQL 语句:

          alter table drop foreign key fk_orders_users;
          
        • 若要删除字段的唯一性约束,则只需要删除该字段的唯一性索引即可,其语法格式如下:

          alter table 表名 drop index 唯一索引名;
          
        • 例如,要删除用户表 users 的 telephone 字段的唯一性索引,可以使用如下 SQL 语句:

          alter table users drop index phone_unique;
          
    • 3、修改表名

      • 修改表名的语法格式如下:

        alter table 原表名 rename to 新表名;
        
      • 还可以使用 rename table 语句,其语法格式如下:

        rename table 原表名 to 新表名;
        
      • 例如,将 users 表的表名修改为 tbl_users,可以使用以下代码:

        alter table users rename to tbl_users;
        rename table users to tbl_users;
        
    • 4、修改表的其他设置

      • 修改表的其他设置,常用的操作如修改存储引擎、默认字符集等。例如,修改 users 表的存储引擎和默认字符集:

        alter table users engine=MyISAM;
        alter table users default charset=utf8;
        

    删除数据库表

    • 要删除数据库表,可以使用 drop table 语句实现,例如删除 users 表:

      drop table users;
      
    • 在默认情况下,当试图删除一个不存在的表时,系统会报错。例如,以下的情况(orders 表不存在):

      drop table orders;
      
    • 系统会出现 Unknown table “orders” 的错误信息,为避免这种错误,可以使用如下语句:

      drop table if exists orders;
      
    展开全文
  • 主要介绍了MySQL修改表结构操作命令总结,包含如删除列、添加列、修改列、添加主键、删除主键、添加唯一索引、添加普通索引等内容,需要的朋友可以参考下
  • 如何在线修改表结构

    2020-06-03 18:01:06
    在线的修改表结构一定要慎重 随意的添加和删除字段,都会造成严重的事故。并且在修改表之前,必须要对数据表做备份,如果每天都做增量备份的话,备份一次数据也花了太长的时间。 常规的备份是先对业务停机,然后再...

    在线的修改表结构一定要慎重

    随意的添加和删除字段,都会造成严重的事故。并且在修改表之前,必须要对数据表做备份,如果每天都做增量备份的话,备份一次数据也花不了太长的时间。
    常规的备份是先对业务停机,然后再维护数据库和系统代码,这种彻底停掉业务的方式是安全的, 稳妥的,通常会在后半夜去做,比如说淘宝在凌晨2点去做维护系统,12306每晚也会做对系统的维护,到第二天早上才能购票。

    要是不影响正常业务的表结构变更还是可以在线去做的,比如说数据太多,int类型的主键不太够用了需要换成bigint类型的主键,再或者原来某个字段是有唯一性约束的,现在我想去掉唯一性的约束,这种修改不会影响到线上正在执行的业务,所以修改起来问题不是特别大,但是在实际操作上,必须要认真的对待,否则也会对系统造成非常不好的影响。

    ALTER TABLE修改表结构的弊病

    在系统没有上线时候,alter table语句是可以的,包括我们在navicat图形界面上去做表结构的修改,最终也会用alter table语句的,但是这个ddl数据还是挺多的

    • 由于修改表结构是表级锁,因此在修改表结构时,影响写入操作
      如果要给1000万数据的表做修改,这个时间有点长,并且期间是不能对这个表做任何修改和读取的,对线上的业务影响非常大,数据越多影响越长
    • 如果表结构修改失败,必须还原表结构,所以耗时更长。
      举个例子给表某个字段设置not null,修改到中途发现表有的数据这个字段是null值,这时候还要还原回来,这个期间也是锁表的
    • 大数据表记录多,修改表结构锁表时间很久
      可以想象下给淘宝表添加一个字段得多慢

    使用PerconaTookit工具

    是Percona公司维护的这个MySQL工具包,这家公司太优秀了,比如对MySQL做的深入优化再次发行后叫Percona Server数据库,这个数据库的性能是MySQL中性能最好的,甚至说当初阿里巴巴开发出自家的电商数据库OceanBase也是借鉴了PerconaServer很多的技术。不管怎么说,Percona的产品几乎都是免费试用的,这一点非常好。

    话说回来,这个PerconaToolkit里包含了一个pt-online-schema-change的工具,可以在线完成修改表结构

    在线修改表结构的原理

    pt-online-schema-change工具怎么能够实现不锁表实现在线修改表结构的呢?

    在这里插入图片描述
    我现在想修改订单表的结构,这个Percona去重新拷贝订单表的结构,创建一个新的数据表,然后在新的数据表里做结构上的修改, 在这之后Percona会在原来的订单表上创建触发器,只要原来的数据表有添加、修改、删除,就会同步到新的订单表,Percona程序也没有闲着,它还会把原来订单表的数据拷贝到新的订单表里,这样双管齐下之后,数据都同步过来之后,原来订单表也没有数据之后,Percona程序就会删除原来的订单表,然后把新的订单表的名字改成原来订单表的名字,这样就完成了在线修改表结构,并且全程都没有锁表呀

    安装PerconaTookit依赖包

    因为PerconaToolKit的工具包和MySQL8.0有冲突,所以不要安装在同虚拟机实例上,建议在一个没有安装过任何实例的虚拟机实例上安装PerconaTooKit

    1. 安装三方依赖包
    yum install -y perl-DBI
    yum install -y perl-DBD-mysql
    yum install -y perl-IO-Socket-SSL
    yum install -y perl-Digest-MDS
    yum install -y perl-TermReadKey
    
    1. 接下来安装PerconaTookit工具

    将两个文件的rpm包上传到虚拟机实例,然后执行rpm -ivh *.rpm ,就安装完成了

    pt-online-schema-change使用参数

    pt-online-schema-change OPTIONS DSN
    

    上面命令中,OPTIONS是可选参数 ,DSN是逻辑库逻辑表
    在这里插入图片描述

    举个栗子

    把客户收获地址中的name字段改为VARCHAR(20)
    这个操作不会对业务系统产生影响,所以是允许在线修改的,我们不想锁表就使用该工具,怎么做?

    pt-online-schema-change --host=192.168.99.202 --port=3306 --user=root --password=abc123456 --alter "Modify name VARCHAR(20) NOT NULL COMMENT '收货人'" D=net,t=t_customer_address --print --execute
    

    太长了,真个缩略图
    在这里插入图片描述

    接下来检查数据库的认证方式,如果是Mysql8.0的方式,需要在navicat上执行下面两行命令,把数据库的认证方式从mysql8.0改成老版本的认证方式,这样PerconaTookit就可以连接上了(不支持Mysql8.0的认证方式)

    ALTER USER 'root'@'%' INDENIFIED BY 'password' PASSWORD EXPIRE NEVER;
    ALTER USER 'root'@'%' INDENIFIED WITH mysql_native_password by 'abc123456';	
    

    下图是一个执行成功的截图
    在这里插入图片描述

    展开全文
  • SQL 修改表结构

    千次阅读 2011-08-11 17:17:41
    修改表结构包括: 增加字段、删除字段、增加约束、删除约束、修改缺省值、修改字段数据类型、重命名字段、重命名表。 所有这些动作都是用 ALTER TABLE 命令执行的。 1、 增加字段 ALTER TABLE products A
    数据库修改表结构SQL 
    
    修改表结构包括:
    增加字段、删除字段、增加约束、删除约束、修改缺省值、修改字段数据类型、重命名字段、重命名表。
    所有这些动作都是用 ALTER TABLE 命令执行的。
    1、    增加字段
    ALTER TABLE products ADD description text;
    你也可以同时在该字段上定义约束,使用通常的语法:
    ALTER TABLE products ADD  description text CHECK (description <> '');实际上,所有在 CREATE TABLE 里描述的可以应用于字段之选项都可以在这里使用。不过,我们要注意的是缺省值必须满足给出的约束,否则 ADD 将会失败。 另外,你可以在你正确填充了新字段的数值之后再增加约束(见下文)。
    2、 删除字段
    要删除一个字段,使用下面这样的命令:
    ALTER TABLE products DROP COLUMN description;不管字段里有啥数据,都会消失。和这个字段相关的约束也会被删除。 不过,如果这个字段被另外一个表的外键所引用,PostgreSQL 则不会隐含地删除该约束。你可以通过使用 CASCADE 来授权删除任何依赖该字段的东西:
    ALTER TABLE products DROP COLUMN description CASCADE;
     3、增加约束
    要增加一个约束,使用表约束语法。比如:
    ALTER TABLE products ADD CHECK (name <> '');
    ALTER TABLE products ADD CONSTRAINT some_name UNIQUE (product_no);
    ALTER TABLE products ADD FOREIGN KEY (product_group_id) REFERENCES product_groups;
    ALTER TABLE Teacher add constraint df_sex default('男') for sex
    要增加一个不能写成表约束的非空约束,使用下面语法:
    ALTER TABLE products ALTER COLUMN product_no SET NOT NULL;
    这个约束将立即进行检查,所以表在添加约束之前必须符合约束条件。
    4、 删除约束
    要删除一个约束,你需要知道它的名字。如果你给了它一个名字, 那么事情就好办了。否则系统会分配一个生成的名字,这样你就需要 把它找出来了。psql 的命令 \d tablename 在这儿可以帮忙; 其它接口可能也提供了检查表的细节的方法。然后就是这条命令:
    ALTER TABLE products DROP CONSTRAINT some_name;(如果你在处理一个生成的约束名,比如 $2,别忘了你需要给它 添加双引号,让它成为一个有效的标识符。)
    和删除字段一样,如果你想删除有着被依赖关系地约束,你需要用 CASCADE。 一个例子是某个外键约束依赖被引用字段上的唯一约束或者主键约束。
    除了非空约束外,所有约束类型都这么用。要删除非空类型,用
    ALTER TABLE products ALTER COLUMN product_no DROP NOT NULL;(要记得非空约束没有名字。)
    5、改变一个字段的缺省值
    要给一个字段设置缺省值,使用一个象下面这样的命令:
    ALTER TABLE products ALTER COLUMN price SET DEFAULT 7.77;请注意这么做不会影响任何表中现有的数据行, 它只是为将来 INSERT 命令改变缺省值。
    要删除缺省值,用
    ALTER TABLE products ALTER COLUMN price DROP DEFAULT;这样实际上相当于把缺省设置为空。 结果是,如果我们删除一个还没有定义的缺省值不算错误,因为缺省隐含就是空值。
    6、 修改一个字段的数据类型
    ALTER TABLE products ALTER COLUMN price TYPE numeric(10,2);只有在字段里现有的每个项都可以用一个隐含的类型转换转换城新的类型时才可能成功。如果需要更复杂的转换,你可以增加一个 USING 子句,它声明如何从旧值里计算新值。
    PostgreSQL 将试图把字段的缺省值(如果存在)转换成新的类型, 还有涉及该字段的任何约束。但是这些转换可能失败,或者可能生成奇怪的结果。 在修改某字段类型之前,你最好删除那些约束,然后再把自己手工修改过的添加上去。
    7、给字段改名字
    ALTER TABLE products RENAME COLUMN product_no TO product_number;
    8、. 给表改名字
    ALTER TABLE products RENAME TO items;
    展开全文
  • 有时候需要修改表结构所以这里记录了一些sql修改表结构的命令 方式 增加列 alter table tableName add columnName varchar(30) 修改列类型: alter table tableName alter column columnName ...

    综述

    有时候需要修改表结构所以这里记录了一些sql修改表结构的命令

    方式

    增加列

    alter table tableName add columnName varchar(30)  

    修改列类型:

    alter table tableName alter column columnName varchar(4000)  

    删除列:

    alter table tableName drop column columnName   

    去除主键约束

    alter table  表名  Drop Constraint PrimaryKey

    添加主键约束

    alter table 表名 Add  Constraint  PrimaryKey  Primary  Key (主键字段名)
    展开全文
  • sql语句修改表结构

    千次阅读 2013-08-07 17:33:00
    这次的教材里面介绍了如何用sql语句创建一个数据库和相应的表...修改表结构包括:增加字段、删除字段、增加约束、删除约束、修改缺省值、修改字段数据类型、重命名字段、重命名表。所有这些操作都是用 alter table 命
  • sql删除表清除表数据修改表结构

    千次阅读 2016-10-25 16:51:21
    删除表(包括表结构及表数据) drop table student;...修改表结构 1、添加一列 在student表中添加一列sname alter table student add sname varchar(30); 2、修改列 在student表中修改sname为sname1 alter table st
  • Oracle修改表结构

    千次阅读 2018-08-11 18:29:34
    一、列的修改 准备工作:先创建一个,并插入数据。 drop table member purge; create table member( mid number , name vachar2(50) default '无名氏'); insert into member (min,name)values(1,'李一'); ...
  • 修改表结构

    千次阅读 2007-03-20 11:20:00
    5.5. 修改表如果你创建了一个表后发现自己犯了一个错误,或者是应用的需求 发生了变化,那么你可以删除这个表然后重新创建它。但是如果这个 表已经填充了好多数据了,或者是该表已经被其它数据库对象引用, (比如一...
  • MySQL修改表结构(五)

    千次阅读 2019-11-18 15:13:01
    演示 修改表的编码格式。 如将t3的编码格式修改成 latin1 1 . 原先的t3 表的样式 2 . 将t3的编码样式修改成 latin1 alter table t3 character set latin1; 3 . 再次查看样式 一.三 修改表的存储...
  • 表结构修改

    2020-02-03 12:53:40
    表结构修改 当一张数据表已经正常建立完成了,后来发现,某些表少列,某些表列设计合理… 所以提供有对象的修改操作,但是从开发来讲,提倡数据表的修改操作。 在实际开发之中,为了方便数据库的使用,往往...
  • sql语言修改表结构的一些方法

    千次阅读 2014-03-19 14:36:32
    这次的教材里面介绍了如何用sql语句创建一个数据库和相应的表结构...修改表结构包括:增加字段、删除字段、增加约束、删除约束、修改缺省值、修改字段数据类型、重命名字段、重命名表。所有这些操作都是用 alter table
  • 2修改表结构必锁表,但是解锁也很简单有专门的关键词regon来解锁表,但MySQL一样。 原因: MySQL(5.6以后,支持在线DDL,支持操作与查询的并发)其实你更改表结构一定会锁表,但是还是会有概率锁表的。 首先...
  • 修改表结构DDL语句与锁

    千次阅读 2015-10-22 11:55:25
    --当pg开启一个事务,执行dml操作时,如果另一个事务要修改表结构,其不得等待 --session1 中执行dml postgres=# begin; BEGIN postgres=# select pg_backend_pid();  pg_backend_pid  ---------------- ...
  • 数据库基础-修改表结构(命令)

    千次阅读 2020-03-13 17:31:19
    1.修改表结构语法 alter table 表名 { alter column 列名{,...} /*修改列的属性*/ |add /*添加列*/ { <列的定义> } [,...] <表约束> |drop /*删除列*/ { [constraint]约束名 /*...
  • 快速修改表结构,表记录

    千次阅读 2008-09-22 11:47:00
    ALTER TABLE - SQL 命令以编程方式修改表结构。语法ALTER TABLE TableName1ADD | ALTER [COLUMN] FieldName1FieldType [(nFieldWidth [, nPrecision])][NULL | NOT NULL][CHECK lExpression1 [ERROR cMessageText1...
  • SQL语句总结,包括增删改查,建库,表,修改表结构,增删约束与字段等
  • Django修改数据库表结构

    千次阅读 2018-04-20 15:05:53
    Django在数据库中创建数据库的方法是:1, 执行 python manage.py makemigrations 这一步在项目中建立migrations目录,在目录中建立了0001_initial.py文件,这个文件中包含了所有在数据库中建立的信息。...
  • oracle修改表结构(alter table)

    万次阅读 2017-12-07 09:56:29
    --创建测试 create table test( id int; );-- 一个关键字,括号包含,逗号隔开,重命名列一次只能一列--添加多列 alter table test add (c1 int, c2 int); -- 正确 alter table test add column (c1 int, c2...
  • 数据库表结构修改与操作

    千次阅读 2017-10-21 21:19:04
    本章内容主要介绍数据库表结构修改与操作。 数据库的修改 以Oracle数据库为例 1.查看表结构# 在 command window(命令窗口)下输入:desc 表名; 2.修改表名#  rename 原表名 to 新表名 3.修改列名# alter ...
  • sql server 修改表结构语法大全

    万次阅读 2011-11-07 16:37:47
    1.增加字段  alter table docdsp add dspcode char(200) 2.删除字段  alter table table_name drop column column_name ...3.修改字段类型  alter table table_name alter column column_name new_data_type
  • 怎么使用SQL修改access数据库库表结构(改动较大),同时避开表之间的关系连接,改动包括新增字段、修改字段长度、新增表
  • MySQL主主复制,在线修改表结构   一直以为双主架构能解决mysql的表在线DDL的需求,但没有实际测试经验。后来发现一直的想法还是有问题的。这里做一个测试。 双主架构,在线DDL的实现步骤是:  www.2cto.com ...
  • 不如根据原来的表结构以及你要改的字段类型创建一个新的表: 原表为t, 新表为t2 1. create table t2(col1,....colN)其中包括你修正以后的某字段 2. insert into t2 select * from t 3. 将原表重命名...
  • 修改数据库表结构的SQL命令

    千次阅读 2011-05-16 15:50:40
    中增加一个 varchar 列: ALTER TABLE distributors ADD COLUMN address varchar(30);从中删除一个字段: ALTER TABLE ...在一个操作中修改两个现有字段的类型: ALTER TABLE distributors ALTER COL...
  • 增加一列:ALTER TABLE tbname ADD COLUMN columnName datatype; 增加多列:ALTER TABLE tbname ADD COLUMN columnName datatype ADD COLUMN columnName2 datatype ...; 要指定长度的,记得写长度 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 786,770
精华内容 314,708
关键字:

修改表结构不包括