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

    2018-11-14 20:50:35
    SQL 修改表结构

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   

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

    原创作品,出自 “深蓝的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 selectedSQL> 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 alteredSQL> alter table emp1 modify (workscore varchar2(20));--改变列的数据类型Table alteredSQL> 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) YSQL> alter table emp1 modify (workscore number(20));--改变列的数据类型Table alteredSQL> alter table emp1 modify (workscore number(4));--减少列的宽度Table alteredSQL> 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 alteredSQL> 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 alteredSQL> alter table emp1 modify (evaluatetime default sysdate);--修改评估时间的默认值为sysdateTable alteredSQL> alter table emp1 modify (hiredate default sysdate);Table altered--修改雇佣时间的默认值为sysdateSQL> 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 selectedSQL> 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 insertedSQL> 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 selectedSQL> alter table emp1 drop column EVALUATETIME,CITY;--尝试一次删除两个列,报错了alter table emp1 drop column EVALUATETIME,CITYORA-00933: SQL command not properly endedSQL> alter table emp1 drop column EVALUATETIME;--删除EVALUATETIME列Table alteredSQL> alter table emp1 drop column CITY;--删除CITY列Table alteredSQL> alter table emp1 drop column WORKSCORE;--删除WORKSCORE列Table alteredSQL> 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 selectedSQL> alter table emp1 set unused (comm,sal);--将表中要删除的两列设置为unusedTable alteredSQL> 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 selectedSQL> 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也喝酒,被捭阖了

     

               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • SQL修改表结构

    2011-04-13 14:01:00
    SQL修改表结构

    SQL修改表结构

    1,增加列:
    相同
    alter table test add mail varchar(128);

    2,删除列:
    oracle 与mysql相同:
    alter table test drop column mail;

    db2 :
    不提供删除列功能(解决办法是删除表,重建)

    3,更改列名
    oracle :
    alter table test rename column mail to mail2;

    mysql :
    alter talbe test change mail mail2 varchar(128);

    db2 :
    不提供更改列名功能(解决办法同删除,或者通过建立一个新视图解决)

    4,更改列类型
    oracle :
    alter table test modify column (mail2 integer);

    mysql :
    alter table test modify column mail2 integer;

    db2 :
    alter table test alter mail varchar(256) 只可以加宽,不能更改类型

    5,更改列的限制(主键、非空)
    mysql :
    alter table test modify mail2 varchar(29) not null;

    oracle:
    alter table test modify mail2 null/not null;

    db2 :
    alter table test alter mail null/not null;

    展开全文
  • 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修改表结构

    2011-10-27 20:59:21
    修改表结构包括: 增加字段、删除字段、增加约束、删除约束、修改缺省值、修改字段数据类型、重命名字段、重命名表。 所有这些动作都是用 ALTER TABLE 命令执行的。 1、 增加字段 ALTER TABLE products ADD ...
     修改表结构包括:
    增加字段、删除字段、增加约束、删除约束、修改缺省值、修改字段数据类型、重命名字段、重命名表。
    所有这些动作都是用 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 修改表结构

    2012-12-09 16:45:34
    1.设置字段唯一 alter table 表名 add constraint only unique(字段名即属性名)
  • sql修改表结构语句.doc

    2011-06-10 16:48:38
    sql修改表结构语句.doc、、、、、、、、、、
  • sql 修改表结构 schema

    2019-07-23 20:01:36
    -- ALTER SCHEMA 新架构 ...例如:ALTER SCHEMA FLT TRANSFER dbo.TIME_TABLE_TRIP_OVERRIDE //修改表TIME_TABLE_TRIP_OVERRIDEG 的Schema由dbo变为FLT; 转载于:https://www.cnblogs.com/Martincheng/p/3656708....
  • 文章目录二维表修改表结构增加字段修改字段删除字段修改表名 二维表修改表结构 一般都是在项目初期会进行数据库表字段的增减操作,而在项目后期对字段的操作都会引起程序的大部分变动。 增加字段 语法:alter table ...
  • sql 修改表结构语法

    千次阅读 2016-11-08 13:17:21
    修改字段(不修改字段名称): alter table 表名 modify 字段名称 字段类型(字段长度) 字段约束; 删除字段: alter table 表名 drop 字段名称; 修改字段(修改字段名称): alter table 表名 change 原字段名称 新字段...
  • Sql 修改表结构的操作

    2018-03-28 15:41:00
    1、添加表字段 alter table 表名 add 字段名 类型(值) 示例:alter table user add name varchar(40); 2、删除表字段 alter table 表名 drop 字段名 ...示例: alter table user drop name;...alter table 表名 rename...
  • SQL修改表结构 总结

    2011-04-27 18:07:00
    修改表结构包括: 增加字段、删除字段、增加约束、删除约束、修改缺省值、修改字段数据类型、重命名字段、重命名表。 所有这些动作都是用 ALTER TABLE 命令执行的。 1、 增加字段 ALTER ...
  • alter table dbo.P_ZPROMOTION_DOC_ITEMS_TEMP alter column MCRANK varchar(20);...--创建局部临时 create table #tmpStudent(Tid int,Name varchar(50),Age int) insert into #tmpStudent values(...
  • sql 修改表结构 视图如何更新

    千次阅读 2011-11-04 11:45:29
    方法一、 如果你很确定, 而且只想让某个视图的结构自动更新, 则用下面的语句: EXEC sp_refreshview '视图名 ' 如:EXEC sp_refreshview 'v_...最省事的方法, 修改表后, 执行下面的语句: EXEC sp_r
  • 当用户在在SQL Server 2008企业管理器中更改表结构时,必须要先删除原来的表,然后重新创建新表,才能完成表的更改,如果强行更改会出现以下提示:不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法...
  • SQL修改表结构写法

    千次阅读 2007-05-23 22:52:00
    开始时创建CREATE TABLE A ( CREATEDATE DATETIME NOT NULL)GO现在我要将CREATEDATE字段设置有默认值DEFAULT GETDATE()。在不DROP这个字段的情况下,我怎么能用脚本添加这个默认值。为以下相应的SQL语句:alter ...
  • SQL修改表结构_sqlserver——菜鸟笔记

    千次阅读 2012-12-13 18:58:57
    修改表字段的类型或者大小:   alter table   表名   alter column   字段名  新字段类型 ( 新字段类型大小 );   例句:     alter   table   CUSTOM_MA_STORE   alter   column   Apply...
  • 设计一张时没有考虑到主键Id及自增长,现又需要,原脚本: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[ForbiddenType]( [Id] [int] NOT NULL, [Type] [nvarchar](100)...
  • 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) --添加外键 ...
  • 如果我们需要修改sql server表结构,应该怎么做呢?下面就将教您如何修改sql server表结构的方法,希望对您学习sql server表结构方面能够有所帮助。 向sql server表中增加一个varchar列: ALTER TABLE distributors ...
  • 数据库修改表结构SQL

    2012-03-21 10:05:50
    [size=medium][size=small]数据库修改表结构SQL 修改表结构包括: 增加字段、删除字段、增加约束、删除约束、修改缺省值、修改字段数据类型、重命名字段、重命名表。 所有这些动作都是用 ALTER TABLE 命令执行的...
  • SQL脚本修改表结构

    2019-09-25 23:17:47
    SQL脚本修改表结构 新建表: createtable[表名] ( [自动编号字段]intIDENTITY(1,1)PRIMARYKEY, [字段1]nVarChar(50)default'默认值'null, [字段2]ntextnull, [字段3]datetime, [字段4]moneynull, [字段5]...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,200
精华内容 2,480
关键字:

sql修改表结构