DDL表结构修改

*1)创建表

create table 表名(

字段名 类型,

....

);

//以现有表复制一个新表

create table j012 as

select id,name,salary from j010 where 1<>1;

2)删除表

drop table 表名;//删除,放入回收站

drop table 表名 purge;//直接删除,不放入回收站

*3)修改表结构

a.添加一列字段

alter table 表名 add (字段名 类型);

//向j014表中添加一列sex

alter table j014 add (sex char(1));

b.修改一列字段

可以修改类型、大小、是否允许为空,不能修改字段名

alter table 表名 modify (字段名 类型);

//将sex字段大小改为3,不允许为空

alter table j014 modify

(sex char(3) not null);

//取消not null约束限定

alter table j014 modify

(sex char(3) null);

提示:在修改原表的类型、大小、是否允许为空时,

由于表中数据不符合规则,会导致语句失败。

c.删除一列字段

alter table 表名 drop column 字段名;

//删除j014表中的age列

alter table j014 drop column age;

*4)设置字段默认值

create table j015(

id number(7) not null,

name varchar2(20),

salary number(7,2) default 10000,

login_time timestamp default systimestamp);

//不指定salary和login_time,会采用默认值

insert into j015(id,name) values(101,‘scott‘);

//salary采用指定的值,login_time采用默认值

insert into j015(id,name,salary)

values(102,‘tiger‘,5000);

//salary采用指定的6000,login_time采用指定的null

insert into j015(id,name,salary,login_time)

values(103,‘bob‘,6000,null);

提示:字段默认值设置,只在不指定字段时有效,

如果插入时指定了值,会采用指定值,即使null

也会写入,不会采用默认值。

5*)修改表名称

rename 表名 to 新表名;

//将表j015改为s015

rename j015 to s015;

b.查看表结构

desc 表名;

c.删除表结构

drop table 表名;//将表删除放入回收站

drop table 表名 purge;//将表直接删除不放入回收站

d.恢复表结构和数据

flashback table 表名 to before drop;

时间: 2024-10-12 05:21:28

DDL表结构修改的相关文章

【转】Mysql千万级数据表结构修改

当需要对表进行ddl操作如加索引.增删列时,数据量小时直接在线修改表结构影响不大当表达到百万.千万数据就不能直接在线修改表结构 下面是具体的过程:1.备份数据select * from ih_order into outfile '/bak/order.txt';mysql> select * from ih_order into outfile 'D:/bak/order.txt';Query OK, 10001000 rows affected (1 min 30.18 sec) 2.复制原

Oracle表结构修改触发视图无法正常使用问题

一.问题描述 当对视图使用的基表进行表结构修改后,会触发视图的无效以及编译出错问题,必须重建视图解决. 二.问题再现 1.Oracle10g环境 1.1 创建视图测试用两张基表:TestTable和TestUser 1.2  创建测试视图VW_TABLEUSERALL和VW_TABLEUSER 前者使用了TestTable.*, 后者显示指定列. 查询视图的状态如下:全部是Valid状态 1.3 修改TestTable表结构:增加一列Col1 再次查询视图的状态如下:全部是INVALID状态  

表结构修改的内幕

经常会人有这样问我:DBA,我需要修改表结构,你评估一下.往往针对不同的修改,都需要去审核和给出建议.表结构修改的类型是很多种,下文总结一些基本的点. 并不是任何一个ALTER TABLE操作都需要将所有的数据行修改一遍.ALTER TABLE三种基本的实现方式: 只修改元数据 为了保证修改的兼容性需要验证每一行数据,然后只修改元数据 物理性的修改每一行 很多时候,SQL Server只需要通过修改元数据去完成表结构的修改,而不需要修改行数据.比如: 删除列 新增允许为NULL的列 不允许为NU

DDL表和库管理语言

DDL表和库的管理 #1. 创建表dept1 NAME   NULL?  TYPE id     INT(7) NAME       VARCHAR(25) USE test; CREATE TABLE dept1( id INT(7), NAME VARCHAR(25) ); #2. 将表departments中的数据插入新表dept2中 CREATE TABLE dept2 SELECT department_id,department_name FROM myemployees.depar

Oracle_SQL(4) DDL 表和约束

数据库对象分为占存储空间的对象和不占存储存储空间的对象.占存储空间的对象主要包括:表.索引等.select distinct segment_type from dba_segments order by segment_type;不占存储空间的对象主要包括:视图.序列.函数.存储过程.包.触发器等.select distinct object_type from dba_objects order by object_type; DDL是用来创建(create).替换(replace).更改(

MySql表结构修改详解

修改表的语法 先创建两个表: 表一:tbl_department 部门表 create table tbl_department ( dept_id int(10) not null unsigned auto_increment, dept_name varchar(20) not null, dept_describ varchar(100) , primary key(dept_id) ) 表二:tbl_person 人员信息表 create table tbl_person( p_id

dblink 的源数据表结构修改后在存储过程里执行报错

原情况:A服务器表A服务器B也有一张表A服务器B上有一个存储过程要把本地的head表向A服务器表里插入数据.变更后:在A服务器表里增加了一个字段inserttime,服务器B存储过程本地表向A服务器插入时,记录插入的时间.问题修改语句如下:insert into [email protected]  select t.*,sysdate from A;这个语句单独执行没有问题.但在存储过程里执行一直报错,报值过多. 解决: 猜想可能是dblink的问题,把原来的dblink删除,重新新建一个db

15.表结构修改-修改表定义和表名

修改列定义和表名 修改列定义 ALTER  TABLE  S MODIFY  type TINYINT  UNSIGNED  NOT NULL;(modify是调整 稍作修改的意思,UNSIGNED表示是无符号的,是一个正数如果直接不用UNSIGNED,那int可以是正数负数和零) 演示: 修改表字段 --type(字段名称)  数据类型:tinyint(小整型) 默认是1 将type int ,默认值为2 ALETER TABLE member MODIFY  type  INT UNSIGN

表结构修改以及sql增删改查

修改表结构 修改表名 alter table 表名 rename 新名 增加字段 alter table 表名 add 字段名 数据类型 约束 删除字段 alter table 表名 drop 字段名 修改字段 alter table 表名 change 旧字段名 新字段名 数据类型 约束条件 修改字段顺序 alter table 表名 add 字段名 数据类型 约束条件 first #将该字段放在第一行 alter table 表名 add 字段名 数据类型 约束条件 after 字段名2 #