精华内容
下载资源
问答
  • 新增 alter table 表名 add 列名 数据类型 例子: 删除一 alter table 表名 drop 列名

    新增一列

    alter table 表名 add 列名 数据类型
    例子:
    在这里插入图片描述

    删除一列

    alter table 表名 drop 列名
    在这里插入图片描述

    展开全文
  • 主要介绍了Android开发中数据库升级且添加新的方法,结合具体实例形式分析了Android数据库升级开发过程中常见问题与相关操作技巧,需要的朋友可以参考下
  • 关系型数据库的数据通常都是以的形式存储和展现,因此可以简单而粗暴地讲,一个关系就是一个。在创建表格后,在后期对数据库表的管理工作中,的维护、修改是重要工作,...包括复制和删除新增、修改、删除

    关系型数据库的数据通常都是以表的形式存储和展现,因此可以简单而粗暴地讲,一个关系就是一个表。在创建表格后,在后期对数据库表的管理工作中,表的维护、修改是重要工作,如增加一个新列,删除一列,修改某属性的数据类型等,本篇文章总结MySQL数据库表管理的基本操作。包括复制和删除表,新增、修改、删除列等。

    0 数据库表管理相关命令

    进行的操作命令
    只复制列构造CREATE TABLE 新表名 LIKE 旧表名;
    复制数据INSERT INTO 新表名 SELECT * FROM 旧表名;
    复制列构造+数据CREATE TABLE 新表名 SELECT * FROM 旧表名;
    删除表DROP TABLE 表名;
    修改列数据类型ALTER TBALE 表名 MODIFY 列名 新数据类型;
    新增列ALTER TABLE 表名 ADD 列名 数据类型[FITRST/AFTER COL];
    修改列位置ALTER TABLE 表名 MODIFY 列名 数据类型 AFTER col名;
    修改列名和数据类型>ALTER TABLE 表名 CHANGE 列名 新列名 类型;
    删除列ALTER TABLE 表名 DROP 列名;

    1 复制表 和删除表

    创建表格的命令大家都很熟悉,CREATE TABLE 表名 (列名1 数据类型 选项,...),但是在数据库管理过程中,如果要复制一张一模一样的表,重新创建表格、插入数据显然是麻烦且耗时耗力的一件事情。
    (1)只复制列构造(不复制记录数据)

    如我想要只复制表格customer的列构造并命名新表格为visitor,可以使用命令:

    >CREATE TABLE visitor LIKE customer;

    复制表列构造

    查看 表格visitor 可以看到它的构造和customer一模一样,而执行查询时,可以看到该表是一张空表。

    (2)复制数据到表

    通过上述操作命令,复制了一张列构造一样的表格,但是现在想要将数据复制到该表,可以通过执行命令:

    >INSERT INTO visitor SELECT * FROM customer;

    复制数据

    执行结束后查询表记录,可以看到customer的数据完全复制到visitor;

    (3)同时执行列构造和数据的复制
    想要复制包括列构造和数据完全一样的表,也可以一部到位:

    >CREATE TABLE customerH SELECT * FROM customer;

    复制表

    (4)删除表DROP TABLE
    删除表使用DROP 命令,删除是不可逆的,不能恢复:

    >DROP TABLE customerH;

    删除表

    通过SHOW TABLES查看数据库表名,可以看到通过DROP TABLE命令删除了表customerH;

    2 修改表列

    (1)修改表列数据类型MODIFY

    使用MODIFY修改数据类型:

    
    >ALTER TBALE 表名 MODIFY 列名 新数据类型;

    如将visitor 中nam由varchar(20)改为varchar(30)
    修改表列数据类型

    列的数据类型可以修改,但是一定要慎重,因为修改数据类型可能会导致数据出现错误,如原本是VARCHAR(100)修改为VARCHAR(50),原本50个字符以外的数据将丢失。

    (2)增加新列ADD

    • 增加一列年龄 ,数据类型int到表visitor,默认的位置是增加到表的最后:
    >ALTER TABLE visitor ADD old INT; 

    增加新列

    • 如果想要在表头增加列,可以通过ALTER TALE 表名 ADD 列名 数据类型 FIRST;
    >ALTER TABLE visitor ADD old INT FIRST;

    增加列到表头

    • 也可以在任意位置追加列,使用after来确认位置:
    >ALTER TBALE visitor ADD old INT AFTER nam;

    增加列到任意位置

    (3)修改列的位置

    上述命令可以在新增列时确定列的位置,如果列已经存在了,使用MODIFY 来修改列的位置:

    >ALTER TABLE visitor MODIFY old INT AFTER nam;

    修改列位置

    (4)修改列名和数据类型

    可以通过CHANGE 来修改表的列名和类型,

    >ALTER TABLE 表名 CHANGE 列名 新列名 类型;

    如将表visitor.birh修改为birthday ,数据类型为DATE;
    修改列名和类型

    (3)删除列
    删除列同样通过drop;

    
    >ALTER TABLE 表名 DROP 列名;

    删除列

    总结:凡是修改表中列的命令,都是ALTER TBALE EXPR col的形式,以ALTER TABLE 开头,以函数如 MODIFY ,CHANGE ,ADD结尾。

    展开全文
  • 以下是我遇到的数据库表新增列的情况(数据库名和表名用DB1和TABLE1代替),数据库为ORACLE,为新增列时做的测试,总共三种类型的语句: 新增列,但不设置默认值 新增列,设置默认值 新增列,设置默认值,并且设置新增...

    难免会遇到线上环境数据表需要新增列的情况,如果的大表新增列的情况下,那就需要谨慎,新增列可能会导致长时间锁表,影响线上访问。

    以下是我遇到的数据库表新增列的情况(数据库名和表名用DB1和TABLE1代替),数据库为ORACLE,为新增列时做的测试,总共三种类型的语句:

    1. 新增列,但不设置默认值
    2. 新增列,设置默认值
    3. 新增列,设置默认值,并且设置新增列值为NOT NULL

    以下为抽取出的各个语句执行消耗时间情况,从下面可以看出第2中情况速度最慢,第3中情况效率很快,和第1中情况差不多(如有条件可以自行多测试几次),第1中情况和第2中情况比,第2中情况需要做更新操作,需要锁表,第2中情况慢那么多可以理解,毕竟所有的数据都要更新;但第3中情况竟然比第2中情况快了近100倍,简直不可以思议

    ALTER TABLE "DB1"."TABLE1" 
    ADD ("CERT_SOURCE2" VARCHAR2(2 CHAR) DEFAULT 0 NOT NULL )
    > OK
    > 时间: 0.015s
    
    ALTER TABLE "DB1"."TABLE1" 
    ADD ("CERT_SOURCE3" VARCHAR2(2 CHAR) DEFAULT 0)
    > OK
    > 时间: 1.154s
    
    ALTER TABLE "DB1"."TABLE1" 
    ADD ("CERT_SOURCE4" VARCHAR2(2 CHAR) DEFAULT 0  NOT NULL )
    > OK
    > 时间: 0.011s
    
    ALTER TABLE "DB1"."TABLE1" 
    ADD ("CERT_SOURCE5" VARCHAR2(2 CHAR) DEFAULT 0 )
    > OK
    > 时间: 1.647s
    
    ALTER TABLE "DB1"."TABLE1" 
    ADD ("CERT_SOURCE6" VARCHAR2(2 CHAR)  
    > OK
    > 时间: 0.011s
    

    经过多方求证:
    如果要在一张已经存在的表中添加一个字段,没有指定默认值的话他默认为NULL,当你指定了默认值的时候数据库直接在每行上直接更新添加的值, 这需要花上一段时间,并且会在这段时间内产生DML 锁。
    对于一些类型表(例如没有lob字段的表) 如果你添加的字段是not null 的并且有一个默认的初始值,数据库能够对添加列进行优化, 减少大量数据库被DML锁的时间。

    另外:default 0 not null,Oracle并没有真实的去修改列的值,只不过通过查询的时候,采用类似NVL(null,新值)的 方法转换一下,让以前的列看起来象有值一样。这个过程在select 的时候就转换好了,所以,对于使用者看来,他们是有值的。但如果抽取这个表的数据,抽取到的列值还是null。

    而我的表中所有的字段要么是varchar,要么是int,没有特殊字段,当增加了NOT NULL时,数据库对添加列进行了优化,减小了数据库被行锁的时间。

    如果想了解更多关于数据库添加列时需要注意的,我觉得这篇文章可以参考下

    展开全文
  • MySQL创建数据库和创建数据

    万次阅读 多人点赞 2019-10-20 23:44:40
    MySQL 创建数据库和创建数据 MySQL 是最常用的数据库,在数据库操作中,基本都是增删改查操作,简称CRUD。 在这之前,需要先安装好 MySQL ,然后创建好数据库、数据、操作用户。 一、数据库操作语言 数据库...

    MySQL 创建数据库和创建数据表

    MySQL 是最常用的数据库,在数据库操作中,基本都是增删改查操作,简称CRUD。

    在这之前,需要先安装好 MySQL ,然后创建好数据库、数据表、操作用户。

    一、数据库操作语言

    数据库在操作时,需要使用专门的数据库操作规则和语法,这个语法就是 SQL(Structured Query Language) 结构化查询语言。

    SQL 的主要功能是和数据库建立连接,进行增删改查的操作。SQL是关系型数据库管理系统的标准语言。

    SQL 语言的作用:

    1. 数据定义语言 DDL(Data Definition Language) 。用于创建数据库,数据表。

    2. 数据操作语言 DML(Data Manipulation Language) 。用于从数据表中插入、修改、删除数据。

    3. 数据查询语言 DQL(Data Query Language) 。用于从数据表中查询数据。

    4. 数据控制语言 DCL(Data Control Language) 。用来设置或修改数据库用户或角色的权限。

    使用 SQL 操作数据库时,所有的 SQL 语句都以分号结束。(切换数据库时可以不用分号)

    在 SQL 语句中,不区分大小写,编写 SQL 语句时可以根据情况用大小写的区别来增加可读性。

    二、创建数据库

    1. 连接 MySQL

    输入 mysql -u root -p 命令,回车,然后输入 MySQL 的密码(不要忘记了密码),再回车,就连接上 MySQL 了。

    mysql -u root -p

    最初,都是使用 root 用户登录,工作中如果一直用 root 用户登录,因为权限太大,风险是很大的,所以等创建好权限适合的用户后,就不要经常登录 root 用户了。

    2. 查看当前的数据库

    使用 show databases; 查看当前安装的 MySQL 中有哪些数据库。

    show databases;

    刚安装 MySQL 时,默认有四个数据库,information_schema,mysql,perfomance_schema,sys 。通常情况下,我们不会直接使用这四个数据库,但千万不要把这四个数据库删了,否则会带来很多不必要的麻烦。如果不小心删了,建议是重新安装 MySQL ,在重装之前把自己的数据迁移出来备份好,或者从其他服务器上迁移一个相同的数据库过来。

    3. 创建数据库

    使用 create database 数据库名; 创建数据库。

    create database MyDB_one;

    创建数据库成功后,数据库的数量变成了5个,多了刚才创建的 MyDB_one 。

    4. 创建数据库时设置字符编码

    使用 create database 数据库名 character set utf8; 创建数据库并设置数据库的字符编码。

    create database MyDB_two character set utf8;
    

    直接创建的数据库,数据库的编码方式是 MySQL 默认的编码方式 latin1 (单字节编码) ,通常我们会在数据库中存放中文数据,所以最好把数据库的编码方式设置成 utf-8 ,这样中文才能正常显示。

    create database MyDB_three charset utf8;

    character set 可以缩写成 charset ,效果是一样的。

    5. 查看和显示数据库的编码方式

    使用 show create database 数据库名; 显示数据库的创建信息。

    show create database MyDB_one;
    show create database MyDB_two;

    如果不知道一个数据库的编码方式是什么,可以使用 show create database 数据库名 来查看数据库的编码方式。可以看到刚才创建的 MyDB_one 的编码方式是 MySQL 的默认编码 latin1 ,MyDB_two 的编码方式是 utf-8 。

    当然,这种方式不能在创建的同时显示,只能查看一个已经存在的数据库的编码方式。

    6. 使用 alter database 数据库名 character set utf8; 修改数据库编码

    alter database MyDB_one character set utf8;

    如果一个数据库的编码方式不符合使用需求,可以进行修改。刚才创建的 MyDB_one 经过修改后,编码方式也变成了 utf-8 。

    7. 进入或切换数据库

    使用 use 数据库名 进入或切换数据库。

    use MyDB_one
    use MyDB_two;

    刚连接上 MySQL 时,没有处于任何一个数据库中,如果要使用某一个数据库,就需要进入到这个数据库中。

    use 数据库名 这个命令后面的分号可以省略,这是 SQL 语句中唯一可以省略分号的语句。

    8. 显示当前数据库 select database();

    select database();

    进入数据库中,可以使用 select database(); 来查看当前处于哪个数据库中。长时间操作数据库时,在很多数据库中来回切换后,查看当前的数据库,避免操作错了数据库。

    三、创建数据表

    1. 查看当前数据库中的表

    使用 show tables;查看当前数据库中有哪些表。

    show tables;
    

    在刚才创建的数据库 MyDB_one 中,还没有创建任何表,所以当前是空的。

    2. 创建表

    使用 create table 表名(字段1 字段类型,字段2 字段类型,字段3 字段类型,…); 来创建一张表。

    create table Phone_table(pid INT, name CHAR(20), price INT);

    在 MyDB_one 中创建了一个叫 Phone_table 的数据表,这张表有三个字段 pid,name,price 。为了增加 SQL 的可读性,字段名我用的是小写,字段类型用大写。

    3. 显示表信息

    用 show create table 表名; 来显示已创建的表的信息。

    show create table Phone_table;

    使用 show create table 表名;  可以显示表的字段信息, MySQL 的引擎,和默认的字符编码等信息。与显示数据库信息一样,show 只能显示已经创建了的数据表的信息,不能在创建的同时显示信息。

    如果想更好地展示表的字段信息,可以使用 desc 表名; 来显示表的字段信息。

    4. 给表增加字段

    使用 alter table 表名 add 字段名 数据类型; 为已存在的表添加一个新字段。

    alter table Phone_table add color CHAR(20);

    添加后,刚才的表中多了一个字段,新增成功。

    5. 删除表的字段

    使用 alter table 表名 drop 字段名; 删除一个表中已存在的字段。

    alter table Phone_table drop price;

    删除字段后,表中不再有该字段。

    6. 修改字段的数据类型

    使用 alter table 表名 modify 字段名 数据类型; 修改表中现有字段的数据类型。

    alter table Phone_table modify name VARCHAR(12);

    修改之后,该字段的数据类型发生改变。

    7. 修改字段的数据类型并且改名

    使用 alter table 表名 change 原字段名 新字段名 数据类型; 修改表中现有字段的字段名和类型。

    alter table Phone_table change name pname CHAR(18);

    现在,将表的 name 改成了 pname ,同时修改了 pname 的数据类型。

    四、MySQL 常用字段类型

    一个数据表是由若干个字段组成的,一个表十几个字段也很正常,每个字段表示不同的信息,需要使用不同类型的数据。

    所以在创建表的时候,要为每个字段指定适合的数据类型。

    MySQL 中常用的字段类型有以下这些:

    1. 整数类型

    数据类型数据范围
    TINYINT-128 -- 127
    SMALLINT-32768 -- 32767
    MEDIUMINT-2^23 -- 2^23-1
    INT-2^31 -- 2^31-1
    BIGINT-2^63 -- 2^63-1

    2. 字符串类型

    数据类型字节范围用途
    CHAR(n)0 -- 255字节定长字符串
    VARCHAR(n)0 -- 65535字节变长字符串
    TEXT0 -- 65535字节长文本数据
    LONGTEXT0 -- 2^32-1字节极大文本数据
    BLOB0 -- 65535字节二进制长文本数据
    LONGBLOB0 -- 2^32-1字节二进制极大文本数据

    3. 小数类型

    m 表示浮点数的总长度,n 表示小数点后有效位数。

    数据类型数据用法数据范围
    FloatFloat(m,n)7位有效数
    DoubleDouble(m,n)15位有效数
    DecimalDecimal(m,n)28位有效数

    4. 时间类型

    数据类型格式用途
    DATEYYYY-MM-DD日期
    TIMEHH:MM:SS时间
    YEARYYYY年份
    DATETIMEYYYY-MM-DD HH:MM:SS日期和时间
    TIMESTAMP10位或13位整数(秒数)时间戳

    5. 枚举类型

    enum(枚举值1,枚举值2,...)

    枚举类型只能在列出的值中选择一个,如性别。

     

     

    展开全文
  • 数据库查询新增默认值 场景:我们在做数据库查询时候,可能会遇到需要需要返回一默认值。 假如我们在查询一张user时,需要返回一固定的比如机构号org,我们可以通过sql语句实现。 select (242) as ...
  • mysql数据库表添加的语句(例子)

    千次阅读 2020-08-03 10:56:33
    ALTER TABLE `t_order` ADD COLUMN `reimburse_num` varchar(50) NULL ... 其中t_order是本例要修改的,corp_name是要将新添加的第一reimburse_num创建在列名为corp_name的后面,corp_name是本例中的位置参照
  • Sql Server 数据库 增加字段

    万次阅读 2018-08-31 19:07:40
    在工作中有可能因为需要对数据库增加一字段,DDL 语句 ALTER TABLE 表名 ADD 字段名 字段的类型名称(长度) ALTER TABLE TUser ADD shortName VARCHAR(10) 这个有更多的介绍...
  • 对Oracle数据库的数据表列的增删改查操作 新增表 CREATE TABLE 表名 ( 字段1 VARCHAR(36) NOT NULL, 字段2 VARCHAR(36) NOT NULL, 字段3 VARCHAR(36) NOT NULL ) 更新字段名称 alter table 表名 rename column 老...
  • 数据库增加新

    千次阅读 2018-07-05 10:50:52
    android sqlit数据库升级,添加字段2017年02月14日 11:24:11阅读数:1470 由于Android的数据库SQLite是自带的,故随着我们的应用App升级,相对应的数据库里面的内容发生改变时也要随之升级,升级的时候希望的是之前...
  • 数据库 insert 增加

    千次阅读 2019-08-09 17:28:40
    一些出现的问题 1.insert 增加
  • 给指定数据库表中添加指定

    千次阅读 2018-06-13 15:33:37
    存在actor,包含如下信息: CREATE TABLE IF NOT EXISTS actor ( actor_id smallint(5) NOT NULL PRIMARY KEY, first_name varchar(45) NOT NULL, last_name varchar(45) NOT NULL, last_update timestamp ...
  • 每次当新版本如果有新增表或者表字段时,都需要客户方把数据库删除,重新启动项目,项目会自动把数据库表创建出来,这么做,在测试阶段当然可以,但是在正式使用时,就不行了。 这个时候,就需要客户拿到新版本的...
  • SQL语句增加、修改、删除以及添加外键语句 1.增加: alter table 表名 add 列名 数据类型 2.1. 修改类型: alter table 表名 alter column 列名 数据类型(如int) 2.2. 修改的名称: EXEC sp_rename ...
  • sql语句给数据库表新增字段

    千次阅读 2017-01-10 14:23:50
    BEGIN TRANSACTION SET QUOTED_IDENTIFIER ON SET ARITHABORT ON SET NUMERIC_ROUNDABORT OFF SET CONCAT_NULL_YIELDS_NULL ON SET ANSI_NULLS ON SET ANSI_PADDING ON SET ANSI_WARNINGS ON ...BEGIN
  • oracle 给数据库添加

    千次阅读 2020-04-23 10:21:54
    ALTER TABLE LAW_ENFORCE_OBJECT add ( SEWAGE_CLASSIFY VARCHAR2(100) , MANAGE_MENTYPE VARCHAR2(50) , LICENSE_NUMBER VARCHAR2(50) , CERTIFYING_AUTHORITY VARCHAR2(100) ...comment on column LAW_ENFOR...
  • 数据库面试

    千次阅读 多人点赞 2019-02-13 09:03:42
    一、数据库问答题 1. SQL语言包括哪些类型? 数据定义DDL:Create Table,Alter Table,Drop Table, Create/Drop Index等 数据操纵DML:Select ,insert,update,delete, 数据控制DCL:grant,revoke 2. 内联接,外联接...
  • ALTER TABLE T_SMSJ ADD F_CJBLCOUNT DECIMAL(18, 2) NOT NULL DEFAULT ((0))
  • 需求缘起 产品第一版:用户有用户名、...第二版,产品经理增加了年龄,性别两个属性,结构可能要变成: user(uid, name, passwd, nick, age, sex) 假设数据量和并发量比较大,怎么变? (1)alter table add
  • mysql表新增添加一

    万次阅读 多人点赞 2017-10-10 17:27:41
    mysql如果想在一个已经建好的中添加...但就仅新增这个问题,可以有以下操作: 针对数据库:mysqlALTER ... ADD COLUMN .... 在的最后一增加新的一ALTER TABLE `tbname` ADD COLUMN `state` TINYINT(2)
  • 数据库学习】数据库总结

    万次阅读 多人点赞 2018-07-26 13:26:41
    1,数据库 1)概念 数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。 常见数据库管理系统有:Access、mysql、sql server 2)特点 ①数据库数据特点 永久存储、有组织...
  • 怎样给数据库里的增加

    千次阅读 2016-08-05 18:22:41
    数据库里的增加,我用的这个命令,运行就把所有补充的补充上了。挺快 alter table ERPuser1 add [ZhiCheng] [varchar](50) , [BiYeYuanXiao] [varchar](50) NULL, [ZhuanYe] [varchar](50) NULL, ...
  • 创建,修改、扩展字段列名 sql
  • DbflowApp 一、DBFlow4.2.4介绍 DBFlow是一个基于AnnotationProcessing(注解处理器)的ORM框架。此框架设计为了速度、性能和可用性。...3.数据库升级(新增表+新增字段+默认值设置等)+自定义数据库存储路径 博客详情:
  • 最近项目中需要为数据库中已存在的添加新的字段,这也是当初设计时的不足,前人留坑,后人遭殃。。。。并且更过分的是,发现数据库设计的严重缺陷!!有很多个库,每个库中都有所有的,但是每个库用到的只是...
  • Oracle数据库中给增加一: alter table 表名 add 列名 类型 default 值 ;  案列:alter table ASSP_VOUCHER_MODEL_STAMP add MrDai number default 10000 not null;  Oracle数据库只供删除的一...
  • 数据库表 新增了一个字段,其默认值为NULL;例如 InfoType INT(11) DEFAULT NULL 1、而FTL文件:如 ${Obj.InfoType} 中 引用了该字段,出现:undefined 2、实体类中InfoType对应的字段 应为Integer,而不是int,...
  • 自增插入数据问题 在使用数据库时有时候我们会向自增插入数据,但是在自增中数据是无法插入的,这时候我们可以通过SET IDENTITY_INSERT方式来插入数据 自增使用注意事项: 1.自增只适用于int和bigint字符...
  • Oracle数据库添加一编号

    千次阅读 2020-06-11 21:23:43
    语法格式:row_number() over(partition by 分组 order by 排序 desc); sql语句: UPDATE WX_SCHOOL a SET a.SYS_CODE=(SELECT b.rowno FROM (SELECT row_number() over(ORDER BY t.id) rowno, ROWID ...
  • 通过django给数据库添加一个新的...python manage.py migrate #创建结构 给数据库添加数据 from django.http import HttpResponse from common.models import Em # 数据库操作 def testdb(request): test1

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 107,054
精华内容 42,821
关键字:

数据库表新增列的问题