精华内容
下载资源
问答
  • SQL 修改表结构

    千次阅读 2011-08-11 17:17:41
    数据库修改表结构SQL 修改表结构包括: 增加字段、删除字段、增加约束、删除约束、修改缺省值、修改字段数据类型、重命名字段、重命名表。 所有这些动作都是用 ALTER TABLE 命令执行的。 1、 增加字段 ...
    数据库修改表结构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 修改表结构

    千次阅读 2018-11-13 22:52:17
    sql alter 修改字段使用:以下语句意思为 给添加字段。 添加字段: ALTER TABLE j_leaveoffice ADD isChangeManager VARCHAR(4) COMMENT '是否更换项目负责人'; ALTER TABLE j_leaveoffice ADD ...

    sql  alter 修改字段使用:以下语句意思为 给表添加字段。

    添加字段:
    ALTER TABLE  j_leaveoffice  ADD isChangeManager VARCHAR(4)  COMMENT  '是否更换项目负责人';  

    ALTER TABLE j_leaveoffice ADD changeManagerUser VARCHAR(20) COMMENT '负责人id';

    ALTER TABLE  j_leaveoffice  ADD isChangeMainAuditUser VARCHAR(4)  COMMENT  '是否更换项目主审';  

    ALTER TABLE j_leaveoffice ADD changeMainAuditUser VARCHAR(20) COMMENT '项目主审id';

    1.group concat

    分组拼接函数。


     

    展开全文
  • SQL_修改表结构

    万次阅读 2014-10-03 20:10:03
    SQL_修改表结构 说明 实验环境:利用scott用户数据,简单举例修改表结构范例 SQL> create table emp1 as select * from emp; Table created --创建实验表 1. 表中添加新列 (1)、语法 SQL> alter table 表名 add ...

     ***********************************************声明*********************************************************************** 

    原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任。

    深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/39758393

    ****************************************************************************************************************************

    SQL_修改表结构

    说明

    实验环境:利用scott用户数据,简单举例修改表结构范例
    SQL> create table emp1 as select * from emp;
    Table created
    --创建实验表

    1. 表中添加新列

    (1)、语法
    SQL> alter table 表名 add (列名 数据类型 [,列名 数据类型] ...);

     

    (2)、注意事项
    新添加的列会按顺序续接原表的列进行排列。

     

    (3)、实验演示

    SQL> alter table emp1 add (evaluatetime DATE);
    Table altered
    --添加分析时间列
    SQL> select * from emp1;
    --查看表数据内容
    EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO EVALUATETIME
    ----- ---------- --------- ----- ----------- --------- --------- ------ ------------
     7369 SMITH      CLERK      7902 1980/12/17     800.00               20 
     7499 ALLEN      SALESMAN   7698 1981/2/20     1600.00    300.00     30 
     7521 WARD       SALESMAN   7698 1981/2/22     1250.00    500.00     30 
     7566 JONES      MANAGER    7839 1981/4/2      2975.00               20 
     7654 MARTIN     SALESMAN   7698 1981/9/28     1250.00   1400.00     30 
     7698 BLAKE      MANAGER    7839 1981/5/1      2850.00               30 
     7782 CLARK      MANAGER    7839 1981/6/9      2450.00               10 
     7788 SCOTT      ANALYST    7566 1987/4/19     3000.00               20 
     7839 KING       PRESIDENT       1981/11/17    5000.00               10 
     7844 TURNER     SALESMAN   7698 1981/9/8      1500.00      0.00     30 
     7876 ADAMS      CLERK      7788 1987/5/23     1100.00               20 
     7900 JAMES      CLERK      7698 1981/12/3      950.00               30 
     7902 FORD       ANALYST    7566 1981/12/3     3000.00               20 
     7934 MILLER     CLERK      7782 1982/1/23     1300.00               10 
    14 rows selected
    
    SQL> desc emp1;
    --查看表结构
    Name         Type         Nullable Default Comments 
    ------------ ------------ -------- ------- -------- 
    EMPNO        NUMBER(4)    Y                         
    ENAME        VARCHAR2(10) Y                         
    JOB          VARCHAR2(9)  Y                         
    MGR          NUMBER(4)    Y                         
    HIREDATE     DATE         Y                         
    SAL          NUMBER(7,2)  Y                         
    COMM         NUMBER(7,2)  Y                         
    DEPTNO       NUMBER(2)    Y                         
    EVALUATETIME DATE         Y  
     
    SQL> alter table emp1 add (city varchar2(10) , workscore number(4));
    Table altered
    --添加城市列、工作得分列
    SQL> select * from emp1;
    --查看现在数据的内容,内容没有变化,但看以发现表结构已经发生变化,多了两个列
    <span style="font-size:10px;">EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO EVALUATETIME CITY       WORKSCORE
    ----- ---------- --------- ----- ----------- --------- --------- ------ ------------ ---------- ---------
     7369 SMITH      CLERK      7902 1980/12/17     800.00               20                         
     7499 ALLEN      SALESMAN   7698 1981/2/20     1600.00    300.00     30                         
     7521 WARD       SALESMAN   7698 1981/2/22     1250.00    500.00     30                         
     7566 JONES      MANAGER    7839 1981/4/2      2975.00               20                         
     7654 MARTIN     SALESMAN   7698 1981/9/28     1250.00   1400.00     30                         
     7698 BLAKE      MANAGER    7839 1981/5/1      2850.00               30                         
     7782 CLARK      MANAGER    7839 1981/6/9      2450.00               10                         
     7788 SCOTT      ANALYST    7566 1987/4/19     3000.00               20                         
     7839 KING       PRESIDENT       1981/11/17    5000.00               10                         
     7844 TURNER     SALESMAN   7698 1981/9/8      1500.00      0.00     30                         
     7876 ADAMS      CLERK      7788 1987/5/23     1100.00               20                         
     7900 JAMES      CLERK      7698 1981/12/3      950.00               30                         
     7902 FORD       ANALYST    7566 1981/12/3     3000.00               20                         
     7934 MILLER     CLERK      7782 1982/1/23     1300.00               10                         
    14 rows selected
    </span>SQL> desc emp1;
    --查看表结构
    Name         Type         Nullable Default Comments 
    ------------ ------------ -------- ------- -------- 
    EMPNO        NUMBER(4)    Y                         
    ENAME        VARCHAR2(10) Y                         
    JOB          VARCHAR2(9)  Y                         
    MGR          NUMBER(4)    Y                         
    HIREDATE     DATE         Y                         
    SAL          NUMBER(7,2)  Y                         
    COMM         NUMBER(7,2)  Y                         
    DEPTNO       NUMBER(2)    Y                         
    EVALUATETIME DATE         Y                         
    CITY         VARCHAR2(10) Y                         
    WORKSCORE    NUMBER(4)    Y    

    2. 修改表中存在的列

    (1)、语法
    SQL> alter table 表名 modify (列名 数据类型 [,列名 数据类型] ...);

    (2)、注意事项
    可以增加字符类型的列宽度;
    可以增加数字类型的列的宽度、精度;
    减少列的宽度,需要该列的值为空;
    改变某一列数据类型,需要该列的值为空;
    如果改变某列的默认值,只会影响以后的操作。

    (3)、实验演示

    SQL> desc emp1;
    Name         Type         Nullable Default Comments 
    ------------ ------------ -------- ------- -------- 
    EMPNO        NUMBER(4)    Y                         
    ENAME        VARCHAR2(10) Y                         
    JOB          VARCHAR2(9)  Y                         
    MGR          NUMBER(4)    Y                         
    HIREDATE     DATE         Y                         
    SAL          NUMBER(7,2)  Y                         
    COMM         NUMBER(7,2)  Y                         
    DEPTNO       NUMBER(2)    Y                         
    EVALUATETIME DATE         Y                         
    CITY         VARCHAR2(10) Y                         
    WORKSCORE    NUMBER(4)    Y       
    SQL> alter table emp1 modify (workscore number(10));
    --增加列的宽度
    Table altered
    SQL> alter table emp1 modify (workscore varchar2(20));
    --改变列的数据类型
    Table altered
    
    SQL> desc emp1;
    --查询表结构
    Name         Type         Nullable Default Comments 
    ------------ ------------ -------- ------- -------- 
    EMPNO        NUMBER(4)    Y                         
    ENAME        VARCHAR2(10) Y                         
    JOB          VARCHAR2(9)  Y                         
    MGR          NUMBER(4)    Y                         
    HIREDATE     DATE         Y                         
    SAL          NUMBER(7,2)  Y                         
    COMM         NUMBER(7,2)  Y                         
    DEPTNO       NUMBER(2)    Y                         
    EVALUATETIME DATE         Y                         
    CITY         VARCHAR2(10) Y                         
    WORKSCORE    VARCHAR2(20) Y
    
    SQL> alter table emp1 modify (workscore number(20));
    --改变列的数据类型
    Table altered
    
    SQL> alter table emp1 modify (workscore number(4));
    --减少列的宽度
    Table altered
    
    SQL> desc emp1;
    --查询表结构
    Name         Type         Nullable Default Comments 
    ------------ ------------ -------- ------- -------- 
    EMPNO        NUMBER(4)    Y                         
    ENAME        VARCHAR2(10) Y                         
    JOB          VARCHAR2(9)  Y                         
    MGR          NUMBER(4)    Y                         
    HIREDATE     DATE         Y                         
    SAL          NUMBER(7,2)  Y                         
    COMM         NUMBER(7,2)  Y                         
    DEPTNO       NUMBER(2)    Y                         
    EVALUATETIME DATE         Y                         
    CITY         VARCHAR2(10) Y                         
    WORKSCORE    NUMBER(4)    Y       
    
    SQL> alter table emp1 modify (job char(9));
    --将列为varchar2类型变为char类型
    Table altered
    
    SQL> desc emp1;
    Name         Type         Nullable Default Comments 
    ------------ ------------ -------- ------- -------- 
    EMPNO        NUMBER(4)    Y                         
    ENAME        VARCHAR2(10) Y                         
    JOB          CHAR(9)      Y                         
    MGR          NUMBER(4)    Y                         
    HIREDATE     DATE         Y                         
    SAL          NUMBER(7,2)  Y                         
    COMM         NUMBER(7,2)  Y                         
    DEPTNO       NUMBER(2)    Y                         
    EVALUATETIME DATE         Y                         
    CITY         VARCHAR2(10) Y                         
    WORKSCORE    NUMBER(4)    Y                         
    
    SQL> alter table emp1 modify (job varchar2(9));
    --将列有char类型改回varchar2类型
    Table altered
    
    SQL> alter table emp1 modify (evaluatetime default sysdate);
    --修改评估时间的默认值为sysdate
    Table altered
    
    SQL> alter table emp1 modify (hiredate default sysdate);
    Table altered
    --修改雇佣时间的默认值为sysdate
    
    SQL> select * from emp1;
    --改变了评估时间的默认值,但该列仍然为空,因为改变只针对修改后的插入的数据
    EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO EVALUATETIME CITY       WORKSCORE
    ----- ---------- --------- ----- ----------- --------- --------- ------ ------------ ---------- ---------
     7369 SMITH      CLERK      7902 1980/12/17     800.00               20                         
     7499 ALLEN      SALESMAN   7698 1981/2/20     1600.00    300.00     30                         
     7521 WARD       SALESMAN   7698 1981/2/22     1250.00    500.00     30                         
     7566 JONES      MANAGER    7839 1981/4/2      2975.00               20                         
     7654 MARTIN     SALESMAN   7698 1981/9/28     1250.00   1400.00     30                         
     7698 BLAKE      MANAGER    7839 1981/5/1      2850.00               30                         
     7782 CLARK      MANAGER    7839 1981/6/9      2450.00               10                         
     7788 SCOTT      ANALYST    7566 1987/4/19     3000.00               20                         
     7839 KING       PRESIDENT       1981/11/17    5000.00               10                         
     7844 TURNER     SALESMAN   7698 1981/9/8      1500.00      0.00     30                         
     7876 ADAMS      SALESMAN   7788 1987/5/23     1100.00               20                         
     7900 JAMES      CLERK      7698 1981/12/3      950.00               30                         
     7902 FORD       ANALYST    7566 1981/12/3     3000.00               20                         
     7934 MILLER     CLERK      7782 1982/1/23     1300.00               10                         
    14 rows selected
    
    SQL> insert into emp1(empno,ename,job,mgr,hiredate,sal,comm,deptno,evaluatetime,city,workscore) values (8000,'HYL','DBA','7839','','5000','','10',default,'beijing','90');
    --插入一条实验数据
    1 row inserted
    SQL> insert into emp1 (empno,ename,job,evaluatetime) values (8001,'HF','DBA',default);
    1 row inserted
    --再插入一条实验数据
    
    SQL> select * from emp1;
    --可以发现实验数据中的结果,两条默认值更改为sysdate的数据,在新插入数据时相应的列已经变为了系统时间
    EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO EVALUATETIME CITY       WORKSCORE
    ----- ---------- --------- ----- ----------- --------- --------- ------ ------------ ---------- ---------
     7369 SMITH      CLERK      7902 1980/12/17     800.00               20                         
     7499 ALLEN      SALESMAN   7698 1981/2/20     1600.00    300.00     30                         
     7521 WARD       SALESMAN   7698 1981/2/22     1250.00    500.00     30                         
     7566 JONES      MANAGER    7839 1981/4/2      2975.00               20                         
     7654 MARTIN     SALESMAN   7698 1981/9/28     1250.00   1400.00     30                         
     7698 BLAKE      MANAGER    7839 1981/5/1      2850.00               30                         
     7782 CLARK      MANAGER    7839 1981/6/9      2450.00               10                         
     7788 SCOTT      ANALYST    7566 1987/4/19     3000.00               20                         
     7839 KING       PRESIDENT       1981/11/17    5000.00               10                         
     7844 TURNER     SALESMAN   7698 1981/9/8      1500.00      0.00     30                         
     7876 ADAMS      SALESMAN   7788 1987/5/23     1100.00               20                         
     7900 JAMES      CLERK      7698 1981/12/3      950.00               30                         
     7902 FORD       ANALYST    7566 1981/12/3     3000.00               20                         
     7934 MILLER     CLERK      7782 1982/1/23     1300.00               10                         
     8000 HYL        DBA        7839               5000.00               10 2014/10/3 19 beijing           90
     8001 HF         DBA             2014/10/3 1                            2014/10/3 19            
    16 rows selected

    3. 表中删除一个列

    (1)、语法
    SQL> alter table 表名 drop column 列名;

    (2)、注意事项
    一次只能删除一列;
    所删除的列不是表中的唯一列;
    删除列将无法回滚,所以删除前请确认无误再进行操作。

    (3)、实验演示

    SQL> select * from emp1;
    --查询表中的数据,计划将列EVALUATETIME、CITY、WORKSCORE删除掉
    EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO EVALUATETIME CITY       WORKSCORE
    ----- ---------- --------- ----- ----------- --------- --------- ------ ------------ ---------- ---------
     7369 SMITH      CLERK      7902 1980/12/17     800.00               20                         
     7499 ALLEN      SALESMAN   7698 1981/2/20     1600.00    300.00     30                         
     7521 WARD       SALESMAN   7698 1981/2/22     1250.00    500.00     30                         
     7566 JONES      MANAGER    7839 1981/4/2      2975.00               20                         
     7654 MARTIN     SALESMAN   7698 1981/9/28     1250.00   1400.00     30                         
     7698 BLAKE      MANAGER    7839 1981/5/1      2850.00               30                         
     7782 CLARK      MANAGER    7839 1981/6/9      2450.00               10                         
     7788 SCOTT      ANALYST    7566 1987/4/19     3000.00               20                         
     7839 KING       PRESIDENT       1981/11/17    5000.00               10                         
     7844 TURNER     SALESMAN   7698 1981/9/8      1500.00      0.00     30                         
     7876 ADAMS      SALESMAN   7788 1987/5/23     1100.00               20                         
     7900 JAMES      CLERK      7698 1981/12/3      950.00               30                         
     7902 FORD       ANALYST    7566 1981/12/3     3000.00               20                         
     7934 MILLER     CLERK      7782 1982/1/23     1300.00               10                         
     8000 HYL        DBA        7839               5000.00               10 2014/10/3 19 beijing           90
     8001 HF         DBA             2014/10/3 1                            2014/10/3 19            
    16 rows selected
    SQL> alter table emp1 drop column EVALUATETIME,CITY;
    --尝试一次删除两个列,报错了
    alter table emp1 drop column EVALUATETIME,CITY
    ORA-00933: SQL command not properly ended
    
    SQL> alter table emp1 drop column EVALUATETIME;
    --删除EVALUATETIME列
    Table altered
    
    SQL> alter table emp1 drop column CITY;
    --删除CITY列
    Table altered
    
    SQL> alter table emp1 drop column WORKSCORE;
    --删除WORKSCORE列
    Table altered
    
    SQL> select * from emp1;
    --再次查询,删除的三个列已经被成功删除了
    EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
    ----- ---------- --------- ----- ----------- --------- --------- ------
     7369 SMITH      CLERK      7902 1980/12/17     800.00               20
     7499 ALLEN      SALESMAN   7698 1981/2/20     1600.00    300.00     30
     7521 WARD       SALESMAN   7698 1981/2/22     1250.00    500.00     30
     7566 JONES      MANAGER    7839 1981/4/2      2975.00               20
     7654 MARTIN     SALESMAN   7698 1981/9/28     1250.00   1400.00     30
     7698 BLAKE      MANAGER    7839 1981/5/1      2850.00               30
     7782 CLARK      MANAGER    7839 1981/6/9      2450.00               10
     7788 SCOTT      ANALYST    7566 1987/4/19     3000.00               20
     7839 KING       PRESIDENT       1981/11/17    5000.00               10
     7844 TURNER     SALESMAN   7698 1981/9/8      1500.00      0.00     30
     7876 ADAMS      SALESMAN   7788 1987/5/23     1100.00               20
     7900 JAMES      CLERK      7698 1981/12/3      950.00               30
     7902 FORD       ANALYST    7566 1981/12/3     3000.00               20
     7934 MILLER     CLERK      7782 1982/1/23     1300.00               10
     8000 HYL        DBA        7839               5000.00               10
     8001 HF         DBA             2014/10/3 1                     
    16 rows selected

    4. 把表的列设置成无用(UNUSED)

    (1)、语法
    SQL> alter table 表名 set unused(列名);

    SQL> alter table 表名 set unused column 列名;

    SQL> drop table 表名 drop unused columns;

    (2)、注意事项
        把表的列设置成unused是为了解决在业务高峰期的删除操作任务。因为在业务高峰期对数据量较大的某列执行删除操作的话,将影响系统的运行效率。此时我们就可以使用设置unused的方法临时性迂回的完成删除任务。待过了高峰期后,再手工使用drop命令删除原计划删除的列。因为设置unused只是做了一个删除的标记,实际的数据依然存在在数据库中,但是这样的数据是查询不到的,因此之后还需要手工删除。

    (3)、实验演示

    SQL> select * from emp1;
    --先来看看表中的数据内容
    EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
    ----- ---------- --------- ----- ----------- --------- --------- ------
     7369 SMITH      CLERK      7902 1980/12/17     800.00               20
     7499 ALLEN      SALESMAN   7698 1981/2/20     1600.00    300.00     30
     7521 WARD       SALESMAN   7698 1981/2/22     1250.00    500.00     30
     7566 JONES      MANAGER    7839 1981/4/2      2975.00               20
     7654 MARTIN     SALESMAN   7698 1981/9/28     1250.00   1400.00     30
     7698 BLAKE      MANAGER    7839 1981/5/1      2850.00               30
     7782 CLARK      MANAGER    7839 1981/6/9      2450.00               10
     7788 SCOTT      ANALYST    7566 1987/4/19     3000.00               20
     7839 KING       PRESIDENT       1981/11/17    5000.00               10
     7844 TURNER     SALESMAN   7698 1981/9/8      1500.00      0.00     30
     7876 ADAMS      SALESMAN   7788 1987/5/23     1100.00               20
     7900 JAMES      CLERK      7698 1981/12/3      950.00               30
     7902 FORD       ANALYST    7566 1981/12/3     3000.00               20
     7934 MILLER     CLERK      7782 1982/1/23     1300.00               10
     8000 HYL        DBA        7839               5000.00               10
     8001 HF         DBA             2014/10/3 1                     
    16 rows selected
    
    SQL> alter table emp1 set unused (comm,sal);
    --将表中要删除的两列设置为unused
    Table altered
    
    SQL> select * from emp1;
    --删除两个列后,查询表的数据,你会发现这两个已经无法查看到
    EMPNO ENAME      JOB         MGR HIREDATE    DEPTNO
    ----- ---------- --------- ----- ----------- ------
     7369 SMITH      CLERK      7902 1980/12/17      20
     7499 ALLEN      SALESMAN   7698 1981/2/20       30
     7521 WARD       SALESMAN   7698 1981/2/22       30
     7566 JONES      MANAGER    7839 1981/4/2        20
     7654 MARTIN     SALESMAN   7698 1981/9/28       30
     7698 BLAKE      MANAGER    7839 1981/5/1        30
     7782 CLARK      MANAGER    7839 1981/6/9        10
     7788 SCOTT      ANALYST    7566 1987/4/19       20
     7839 KING       PRESIDENT       1981/11/17      10
     7844 TURNER     SALESMAN   7698 1981/9/8        30
     7876 ADAMS      SALESMAN   7788 1987/5/23       20
     7900 JAMES      CLERK      7698 1981/12/3       30
     7902 FORD       ANALYST    7566 1981/12/3       20
     7934 MILLER     CLERK      7782 1982/1/23       10
     8000 HYL        DBA        7839                 10
     8001 HF         DBA             2014/10/3 1 
    16 rows selected
    
    SQL> desc emp1;
    --即使查看表结构,也不会发现被设置为unused的两个列,因为目前对于数据库而言,这两个列已经是删除的列了
    Name     Type         Nullable Default Comments 
    -------- ------------ -------- ------- -------- 
    EMPNO    NUMBER(4)    Y                         
    ENAME    VARCHAR2(10) Y                         
    JOB      CHAR(9)      Y                         
    MGR      NUMBER(4)    Y                         
    HIREDATE DATE         Y        sysdate          
    DEPTNO   NUMBER(2)    Y     
    
    SQL> alter table emp1 drop unused columns;
    --之后手工删除掉emp1表中标记为unused的列的数据
    Table altered

    ***********************************************声明*********************************************************************** 

    原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任。

    深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/39758393

    ****************************************************************************************************************************

    系列链接_20150523:

    蓝的成长记——追逐DBA(1):奔波于路上,挺进山东 

    蓝的成长记——追逐DBA(2):安装!安装!久违的记忆,引起我对DBA的重新认知

    蓝的成长记——追逐DBA(3):古董上操作,数据导入导出成了问题 

    蓝的成长记——追逐DBA(4):追忆少年情愁,再探oracle安装(Linux下10g、11g) 

    蓝的成长记——追逐DBA(5):不谈技术谈业务,恼人的应用系统

    蓝的成长记——追逐DBA(6): 做事与做人:小技术,大为人

    蓝的成长记——追逐DBA(7):基础命令,地基之石 

    蓝的成长记——追逐DBA(8):重拾SP报告,回忆oracle的STATSPACK实验

    蓝的成长记— —追逐DBA(9):国庆渐去,追逐DBA,新规划,新启程

    蓝的成长记——追逐DBA(10):飞刀防身,熟络而非专长:摆弄中间件Websphere 

    蓝的成长记——追逐DBA(11):回家后的安逸,晕晕乎乎醒了过来 

    蓝的成长记——追逐DBA(12):七天七收获的SQL

    蓝的成长记——追逐DBA(13):协调硬件厂商,六个故事:所见所感的“服务器、存储、交换机......”

    蓝的成长记——追逐DBA(14):难忘的“云”端,起步的hadoop部署 

    蓝的成长记——追逐DBA(15):以为FTP很“简单”,谁成想一波三折

    蓝的成长记——追逐DBA(16):DBA也喝酒,被捭阖了

     

    展开全文
  • SQL脚本修改表结构

    千次阅读 2010-12-14 18:11:00
    SQL脚本修改表结构

    SQL脚本修改表结构
    新建表:
    create table [表名]
    (
    [自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,
    [字段1] nVarChar(50) default '默认值' null ,
    [字段2] ntext null ,
    [字段3] datetime,
    [字段4] money null ,
    [字段5] int default 0,
    [字段6] Decimal (12,4) default 0,
    [字段7] image null ,
    )

    删除表:
    Drop table [表名]

    Truncate table [表名] --不写log 而且自增字段复位从1开始

    插入数据:
    INSERT INTO [表名] (字段1,字段2) VALUES (1,'ABC')

    删除数据:
    DELETE FROM [表名] WHERE [字段名]>100

    更新数据:
    UPDATE [表名] SET [字段1] = 1,[字段2] = 'ABC' WHERE [字段三] = 'what'

    新增字段:
    ALTER TABLE [表名] ADD [字段名] NVARCHAR (50) NULL

    删除字段:
    ALTER TABLE [表名] DROP COLUMN [字段名]

    修改字段:
    ALTER TABLE [表名] ALTER COLUMN [字段名] NVARCHAR (50) NULL

    重命名表:(Access 重命名表,请参考文章:在Access数据库中重命名表)
    sp_rename '表名', '新表名', 'OBJECT'

    新建约束:
    ALTER TABLE [表名] ADD CONSTRAINT 约束名 CHECK ([约束字段] <= '2010-12-1')

    删除约束:
    ALTER TABLE [表名] DROP CONSTRAINT 约束名

    新建默认值
    ALTER TABLE [表名] ADD CONSTRAINT 默认值名 DEFAULT 'ABC' FOR [字段名]

    删除默认值
    ALTER TABLE [表名] DROP CONSTRAINT 默认值名

    展开全文
  • sql语句修改表结构

    千次阅读 2013-08-07 17:33:00
    也说明了表结构的细节设计如约束等,但是没有说明如果创建了一个表结构后修改这个结构,是重新创建还是可以直接修改,学员经常会提出这些问题,下面对使用sql语句修改表结构做一个说明。 修改表结构包括:增加字段...
  • 这是一个基于MSSQLSERVER使用动态SQL实现修改表结构的案例,欢迎各位数据库爱好者借鉴或使用
  • sql server 修改表结构

    千次阅读 2014-06-06 22:50:18
    SQL脚本修改表结构 新建表: create table [表名] ( [自动编号字段] int IDENTITY (1,1) PRIMARY KEY , [字段1] nVarChar(50) default '默认值' null , [字段2] ntext null , [字段3] datetime, [字段4] ...
  • SQL Server 修改表结构

    万次阅读 2018-08-16 16:33:58
    查看指定表结构 exec sp_help Reports 修改表名 exec sp_rename 'Reports','Reports2' 删除数据表 不能删除有外键约束的表。 drop table Reports 表字段 alter table Reports add NewColumn ...
  • 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
  • sql 修改表结构 视图如何更新

    千次阅读 2011-11-04 11:45:29
    方法一、 如果你很确定, 而且只想让某个视图的结构自动更新, 则用下面的语句: EXEC sp_refreshview '视图名 ' 如:EXEC sp_refreshview 'v_...最省事的方法, 修改表后, 执行下面的语句: EXEC sp_r
  • SQL Server修改表结构,添加约束

    千次阅读 2020-03-04 13:05:17
    文章目录修改表结构修改字段数据类型添加字段删除字段修改字段特征(约束)添加标识列约束(IDENTITY)添加主键约束(PRIMARY KEY)添加唯一约束(UNIQUE)添加默认约束(DEFAULT)添加检查约束(CHECK )添加非空约束(NOT NULL)...
  • MYSQL的修改表结构SQL语句

    千次阅读 2019-07-07 22:02:41
    MYSQL的修改表结构SQL语句: -- 查看创表语句 SHOW CREATE TABLE t_login; -- 查看表结构 desc t_login1; -- 增加列 ALTER TABLE t_login1 ADD COLUMN COL_1 VARCHAR(10); -- 修改列 ALTER TABLE t_login1 ...
  • 使用一些表管理工具,或对数据库的物理表结构进行改动时,可以通过数据库的语法脚本实现。 1.创建表 CREATE TABLE dbo.表名 ( 列名1 [列名数据类型](数据长度) 是否为Null, 列名2 [列名数据类型](数据长度)...
  • sql语言修改表结构的一些方法

    万次阅读 2011-11-10 11:33:30
    也说明了表结构的细节设计如约束等,但是没有说明如果创建了一个表结构后修改这个结构,是重新创建还是可以直接修改,学员经常会提出这些问题,下面对使用sql语句修改表结构做一个说明。 修改表结构包括:增加字段...
  • 如何进行修改SQL表结构

    千次阅读 2017-10-18 21:18:32
    alter table alter column 字段名 类型的长度--varchar(60) 例:把城市的城市名字段有原来的长度20改为30 alter table Testcity alter column cityname varchar(30) ②更改字段类型 alter table ...
  • mysql 修改表表结构常用sql语句

    万次阅读 2018-11-13 17:52:43
    批量修改表名的sql语句 alter table old_name rename new_name; --修改表名 alter table test add column add_name varchar(10); --添加列 alter table test drop column del_name; --删除列 alter table ...
  • SQL语句修改SQL表结构

    千次阅读 2010-03-12 19:27:00
    当用户在在SQL Server 2008企业管理器中更改表结构时,必须要先删除原来的表,然后重新创建新表,才能完成表的更改,如果强行更改会出现以下提示: 不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法...
  • alter table footprint add constraint pk_footprint primary key (uid,pid) --添加主键约束 alter table footprint add constraint FK_product_footprint foreign key(pid) references product(pid) --添加外键 ...
  • SQLServer修改表结构无法保存的问题

    千次阅读 2018-03-01 09:39:48
    装了SqlServer2008很久了,今天是第一次使用,结果在修改一张表的结构保存时,提示您对无法重新创建的标进行了更改或者启用了阻止保存要求... 原来是当用户在在SQL Server 2008企业管理器中更改表结构时,必须要...
  • SQl 语句(常见) 新建,删除,修改表结构
  • 怎么使用SQL修改access数据库库表结构(改动较大),同时避开表之间的关系连接,改动包括新增字段、修改字段长度、新增表
  • SQL语句修改数据库表结构

    千次阅读 2013-03-13 19:54:37
    一、查看表结构  1、查看表的基本结构语句:  DESCRIBE `DEPT`;  2、查看表详细结构语句:  SHOW CREATE TABLE `DEPT`; 二、对表的操作 增加表 CREATE TABLE `dept` (  `id` int(10) unsigned NOT NULL AUTO_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 374,864
精华内容 149,945
关键字:

在sql修改表结构