原理就是先声明常量,包括列数,行数,各列的属性,然后在程序的其它过程用这些常量来控制Cells。非常方便,便于修改和移植!
以下为窗体整体代码,中间有说明。此段代码不光有动态AdvStringGrid的完美示例,还有一般窗体的常用的过程,比较窗体初始化,刷新过程。
此窗体,只需要简单准备如下,即可运行:
1,添加一个TAdvStringGrid,并命名为strGrid1。
2,设置:TAdvStringGrid–>option–>goEditing=true
TAdvStringGrid–>enableGraphics=true
3,修改Form名称为form1,或替换以下代码中的form1为当前窗体的名字。
4,将以下代码覆盖原来的代码。
5,关联以下过程(只需要在窗体和strGrid1控件属性-事件页中双击相关项即可完成关联。)
FormCreate FormShow strGrid1CanEditCell strGrid1GetAlignment
strGrid1GetCellColor strGrid1GetEditorType 复制代码 代码如下:unit ENMA0101; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms, Dialogs, Grids, AdvGrid; const cUnit_ID=’ENMA0101′;
//声明常量,保存单元名称 //声明常量,用于保存Cells的列数 cColQty1=8;
//声明常量数组,保存Cells的各种属性,各种属性含义如下: {0-显示 1-编辑
2-必输 3-类型 4-对齐 5-颜色 6-宽度 7-标题 8-是否从数据库中读取
9-数据表名称 10-字段名 11-字段长度 12-文本中读取 13-文本中位置 }
cColProp1: array[0..cColQty1-1] of array[0..13] of string=( //列属性
//显示编辑必输类型对齐 颜色 宽度 标题 // 0 1 2 3 4 5 6 7 8 9 10 11
(‘Y’,’N’,’N’,’E’,’R’,’clBtnFace’,’25’,’NO.’,’N’,”,”,’0′,’N’,’0′), // 0
(‘Y’,’N’,’N’,’E’,’L’,’clInfoBk’,’150′,’Part
No’,’Y’,’POJBSUB’,’PART_NO’,’30’,’Y’,’2′), // 1
(‘Y’,’Y’,’N’,’E’,’R’,’clWindow’,’60’,’Qty’,’Y’,’POJBSUB’,’ORDER_QUANTITY’,’9′,’Y’,’3′),
// 2
(‘Y’,’N’,’N’,’E’,’C’,’clMoneyGreen’,’40’,’U/M’,’Y’,’POJBSUB’,’UNIT_OF_MEASURE’,’2′,’Y’,’4′),
// 3
(‘Y’,’Y’,’N’,’C’,’C’,’clWindow’,’60’,’Dept’,’Y’,’POJBSUB’,’DELIVERY_TO_DEPT’,’3′,’Y’,’5′),
// 4
(‘Y’,’Y’,’N’,’C’,’C’,’clWindow’,’50’,’Grp’,’Y’,’POJBSUB’,’GROUP_A’,’3′,’Y’,’7′),
// 5 (‘Y’,’N’,’N’,’E’,’L’,’clSkyBlue’,’160′,’Part
Name’,’Y’,’POJBSUB’,’PART_NAME_C’,’70’,’Y’,’8′), // 6
(‘Y’,’Y’,’N’,’M’,’L’,’clWindow’,’50’,’DF’,’Y’,’POJBSUB’,’VENDOR_NO’,’5′,’Y’,’6′)
// 7 ); //声明常量,定义列号,便于修改与引用 cC1NO=0; cC1PART_NO=1;
cC1ORDER_QUANTITY=2; cC1UNIT_OF_MEASURE=3; cC1DELIVERY_TO_DEPT=4;
cC1GROUP_A=5; cC1PART_NAME_C=6; cC1Data_Flag=7; type TForm1 = class
strGrid1: TAdvStringGrid; procedure FormCreate; procedure FormShow;
procedure strGrid1CanEditCell(Sender: TObject; ARow, ACol: Integer; var
CanEdit: Boolean); procedure strGrid1GetAlignment(Sender: TObject; ARow,
ACol: Integer; var AAlignment: TAlignment); procedure
strGrid1GetCellColor(Sender: TObject; ARow, ACol: Integer; AState:
TGridDrawState; ABrush: TBrush; AFont: TFont); procedure
strGrid1GetEditorType(Sender: TObject; ACol, ARow: Integer; var AEditor:
TEditorType); private { Private declarations } procedure prClear;
procedure prRefresh; procedure prStgInitialize1; procedure prStg1Clear;
public { Public declarations } end; var Form1: TForm1; implementation
{$R *.dfm} //窗体创建时执行代码 procedure TForm1.FormCreate; Var
i,j:integer; begin //设定行数最大值,用于设置CheckedBox
strGrid1.RowCount:=1000;
//设置cColProp1[3,J]=’C’的单元格为CheckedBox格式 for i:=1 to
strGrid1.rowcount-1 do begin
//通过以下属性数组设置未通过,当两列checkbox时,只能设置一列。 {for j:=0
to cColQty1-1 do begin if cColProp1[3,J]=’C’ then
strGrid1.AddCheckBox; end;} //改为以下方式直接定义。
strGrid1.AddCheckBox; strGrid1.AddCheckBox; end; end;
//窗体显示时执行代码 procedure TForm1.FormShow; begin form1.caption:=
cUnit_ID + ‘ ‘ + form1.caption; prClear; end; //窗体清空代码 procedure
TForm1.prClear; begin case pMode of 0:begin prStgInitialize1; end;
1:begin prStg1Clear; end; end; //其它清空内容 end; //窗体刷新代码
procedure Tform1.prRefresh; begin //窗体刷新内容 end;
//AdvStringGrid初始化过程 procedure TForm1.prStgInitialize1; Var
I:Integer; begin //设定零件表初始行数和列数 strGrid1.RowCount:=2;
strGrid1.ColCount:=cColQty1; strGrid1.FixedRows:=1;
strGrid1.FixedCols:=1; //设定列宽度和列标题 for I:=0 to cColQty1-1 do
begin strGrid1.Cells[I,0]:=cColProp1[I,7]; //标题 if
cColProp1[I,0]=’Y’ then strGrid1.ColWidths[I]:=strToInt //列宽 else
strGrid1.ColWidths[I]:=0; //列宽 end; end; //AdvStringGrid清空过程
procedure TForm1.prStg1Clear; Var I:integer; J:integer; begin for I:=1
to strGrid1.RowCount-1 do begin for J:=0 to cColQty1-1 do begin
strGrid1.Cells[J,I]:=”; strGrid1.SetCheckBoxState; end; end;
strGrid1.RowCount:=2; end; //设定单元表各列是否可以编辑 procedure
TForm1.strGrid1CanEditCell(Sender: TObject; ARow, ACol: Integer; var
CanEdit: Boolean); Var I:integer; begin //直接定义 {if
stgPList.Cells[cNCols1[3]-2,ARow]=’1′ then CanEdit:=false else begin
if ACol=cNCols1[2]-2 then CanEdit:=true else CanEdit:=false; end;} {if
aRow=0 then CanEdit:=false else if} //用属性数组定义 for I:=0 to
cColQty1 do begin if ACol=I then begin if cColProp1[I,1]=’Y’ then
CanEdit:=true; if cColProp1[I,1]=’N’ then CanEdit:=False; end; end;
//以下代码首先根据列cC1Data_Flag的值设定一行是否可以编辑,然后再根据属性数组设定。
{if (strGrid1.cells[cC1Data_Flag,ARow]=”) or
(strGrid1.cells[cC1Data_Flag,ARow]=’C’) then begin canEdit:=false;
exit; end else begin for I:=0 to cColQty1 do begin if ACol=I then begin
if strGrid1.cells[cC1Data_Flag,aRow]=’C’ then CanEdit:=false else
begin if cColProp1[I,1]=’Y’ then CanEdit:=true; if
cColProp1[I,1]=’N’ then CanEdit:=False; end; end; end; end;} end;
//设定单元表各列对齐方式 procedure TForm1.strGrid1GetAlignment(Sender:
TObject; ARow, ACol: Integer; var AAlignment: TAlignment); Var
I:integer; begin //直接定义 {if ARow=0 then AAlignment:=tacenter else
begin case ACol of 0: AAlignment:=taRightJustify; 1:
AAlignment:=taCenter; 2: AAlignment:=taCenter; 3:
AAlignment:=taRightJustify; 4: AAlignment:=taCenter; 6:
AAlignment:=taCenter; 8: AAlignment:=taCenter; 9: AAlignment:=taCenter;
else AAlignment:=taLeftJustify; end; end; } //用属性数组定义 if ARow=0
then AAlignment:=taCenter else begin for I:=0 to cColQty1-1 do begin if
ACol=I then begin //case strToInt if cColProp1[I,4]=’C’ then
AAlignment:=taCenter; if cColProp1[I,4]=’L’ then
AAlignment:=taLeftJustify; if cColProp1[I,4]=’R’ then
AAlignment:=taRightJustify; end; end; end; end; //设定单元表各列颜色
procedure TForm1.strGrid1GetCellColor(Sender: TObject; ARow, ACol:
Integer; AState: TGridDrawState; ABrush: TBrush; AFont: TFont); Var
I:integer; begin //直接定义 {if ARow>0 then begin Case ACol of 1:
ABrush.Color:=RGB; 2: ABrush.Color:=RGB; 3: ABrush.Color:=RGB; 4:
ABrush.Color:=RGB; 12: ABrush.Color:=RGB; 14: ABrush.Color:=RGB; 24:
ABrush.Color:=RGB; 48: ABrush.Color:=RGB; 51: ABrush.Color:=RGB; End;
end;} //用属性数组定义 if ARow=0 then abrush.Color:=clBtnFace //
首行为灰色 else begin for I:=0 to cColQty1 do begin //
非首行按属性数组设置颜色 if ACol=I then abrush.Color:=StringToColor;
end; end; end; //设定单元表各列控件类型 procedure
TForm1.strGrid1GetEditorType(Sender: TObject; ACol, ARow: Integer; var
AEditor: TEditorType); Var I:integer; begin for I:=0 to cColQty1 do
begin if ACol=I then begin if cColProp1[I,3]=’M’ then begin
AEditor:=edComBoEdit; strGrid1.ClearComboString;
strGrid1.AddComboString; strGrid1.AddComboString; end; end; end; end;
end.
这样,如果修改Cells相关的属性,只需要修改数组cColProp1相关的值就可以实现了,很方便的。
关于修改cColProp1,你可以直接在上面的代码窗口中修改,但如果列相当多的话,这样改起来也是相当麻烦的,而且容易改错,也是不方便的!
对此,我做了一个excel模板:动态Cells设定工具表,如附件。
通过这个模板,可以自动生成静态数组cColProp1和静态列号,修改起来也很直观,很方便。
修改后,将生成的静态数组cColProp1和静态列号复制到代码里即可。
动态Cells设定工具表

此窗体,只需要简单准备如下,即可运行:
    1,添加一个TAdvStringGrid,并命名为strGrid1。
    2,设置:TAdvStringGrid–>option–>goEditing=true
             TAdvStringGrid–>enableGraphics=true
    3,修改Form名称为form1,或替换以下代码中的form1为当前窗体的名字。
    4,将以下代码覆盖原来的代码。
   
5,关联以下过程(只需要在窗体和strGrid1控件属性-事件页中双击相关项即可完成关联。)
        FormCreate
        FormShow
        strGrid1CanEditCell
        strGrid1GetAlignment
        strGrid1GetCellColor
        strGrid1GetEditorType

有一张工资表SALARY如下,

当查询中多次用到某一部分时,可以用Oracle
with语句创建一个公共临时表。因为子查询在内存临时表中,避免了重复解析,所以执行效率会提高不少。临时表在一次查询结束自动清除。

添加字段的语法:alter table tablename add (column datatype [default
value][null/not null],….);

unit ENMA0101;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
  Dialogs, Grids, AdvGrid;

const
    cUnit_ID=’ENMA0101′;   //声明常量,保存单元名称

    //声明常量,用于保存Cells的列数
    cColQty1=8; 

    //声明常量数组,保存Cells的各种属性,各种属性含义如下:
    {0-显示
    1-编辑
    2-必输
    3-类型
    4-对齐
    5-颜色
    6-宽度
    7-标题
    8-是否从数据库中读取
    9-数据表名称
    10-字段名
    11-字段长度
    12-文本中读取
    13-文本中位置    }
  cColProp1: array[0..cColQty1-1] of array[0..13] of string=(  
//列属性
   //显示编辑必输类型对齐 颜色     宽度    标题
    // 0  1   2   3   4     5        6     7     8  9  10 11
   
(‘Y’,’N’,’N’,’E’,’R’,’clBtnFace’,’25’,’NO.’,’N’,”,”,’0′,’N’,’0′),   
// 0
    (‘Y’,’N’,’N’,’E’,’L’,’clInfoBk’,’150′,’Part
No’,’Y’,’POJBSUB’,’PART_NO’,’30’,’Y’,’2′),    // 1
   
(‘Y’,’Y’,’N’,’E’,’R’,’clWindow’,’60’,’Qty’,’Y’,’POJBSUB’,’ORDER_QUANTITY’,’9′,’Y’,’3′),   
// 2
   
(‘Y’,’N’,’N’,’E’,’C’,’clMoneyGreen’,’40’,’U/M’,’Y’,’POJBSUB’,’UNIT_OF_MEASURE’,’2′,’Y’,’4′),   
// 3
   
(‘Y’,’Y’,’N’,’C’,’C’,’clWindow’,’60’,’Dept’,’Y’,’POJBSUB’,’DELIVERY_TO_DEPT’,’3′,’Y’,’5′),   
// 4
   
(‘Y’,’Y’,’N’,’C’,’C’,’clWindow’,’50’,’Grp’,’Y’,’POJBSUB’,’GROUP_A’,’3′,’Y’,’7′),   
// 5
    (‘Y’,’N’,’N’,’E’,’L’,’clSkyBlue’,’160′,’Part
Name’,’Y’,’POJBSUB’,’PART_NAME_C’,’70’,’Y’,’8′),    // 6
   
(‘Y’,’Y’,’N’,’M’,’L’,’clWindow’,’50’,’DF’,’Y’,’POJBSUB’,’VENDOR_NO’,’5′,’Y’,’6′)   
// 7
);
    //声明常量,定义列号,便于修改与引用
    cC1NO=0;
    cC1PART_NO=1;
    cC1ORDER_QUANTITY=2;
    cC1UNIT_OF_MEASURE=3;
    cC1DELIVERY_TO_DEPT=4;
    cC1GROUP_A=5;
    cC1PART_NAME_C=6;
    cC1Data_Flag=7;

type
  TForm1 = class(TForm)
    strGrid1: TAdvStringGrid;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure strGrid1CanEditCell(Sender: TObject; ARow,
      ACol: Integer; var CanEdit: Boolean);
    procedure strGrid1GetAlignment(Sender: TObject; ARow,
      ACol: Integer; var AAlignment: TAlignment);
    procedure strGrid1GetCellColor(Sender: TObject; ARow,
      ACol: Integer; AState: TGridDrawState; ABrush: TBrush; AFont:
TFont);
    procedure strGrid1GetEditorType(Sender: TObject; ACol,
      ARow: Integer; var AEditor: TEditorType);

  private
    { Private declarations }
    procedure prClear(pMode:byte);
    procedure prRefresh(pMode: byte);

    procedure prStgInitialize1;
    procedure prStg1Clear;

  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//窗体创建时执行代码
procedure TForm1.FormCreate(Sender: TObject);
Var
  i,j:integer;
begin
    //设定行数最大值,用于设置CheckedBox
    strGrid1.RowCount:=1000;

    //设置cColProp1[3,J]=’C’的单元格为CheckedBox格式
    for i:=1 to strGrid1.rowcount-1 do begin

       
//通过以下属性数组设置未通过,当两列checkbox时,只能设置一列。
        {for j:=0 to cColQty1-1 do begin
            if cColProp1[3,J]=’C’ then
                strGrid1.AddCheckBox(j,i,false,false);
        end;}
        //改为以下方式直接定义。
        strGrid1.AddCheckBox(4,i,false,false);
        strGrid1.AddCheckBox(5,i,false,false);
    end;
end;

//窗体显示时执行代码
procedure TForm1.FormShow(Sender: TObject);
begin
    form1.caption:= cUnit_ID + ‘ ‘ + form1.caption;
    prClear(0);
end;

//窗体清空代码
procedure TForm1.prClear(pMode:byte);
begin
    case pMode of
    0:begin
        prStgInitialize1;
    end;
    1:begin
        prStg1Clear;
    end;
    end;

    //其它清空内容

end;

//窗体刷新代码
procedure Tform1.prRefresh(pMode: byte);
begin
    //窗体刷新内容

end;

//AdvStringGrid初始化过程
procedure TForm1.prStgInitialize1;
Var
  I:Integer;
begin

    //设定零件表初始行数和列数
    strGrid1.RowCount:=2;
    strGrid1.ColCount:=cColQty1;
    strGrid1.FixedRows:=1;
    strGrid1.FixedCols:=1;

    //设定列宽度和列标题
    for I:=0 to cColQty1-1 do begin
        strGrid1.Cells[I,0]:=cColProp1[I,7];                
//标题
        if cColProp1[I,0]=’Y’ then
            strGrid1.ColWidths[I]:=strToInt(cColProp1[I,6]) 
//列宽
        else
            strGrid1.ColWidths[I]:=0;                       
//列宽
    end;

end;

//AdvStringGrid清空过程
procedure TForm1.prStg1Clear;
Var
  I:integer;
  J:integer;
begin
    for I:=1 to strGrid1.RowCount-1 do begin
        for J:=0 to cColQty1-1 do begin
            strGrid1.Cells[J,I]:=”;
            strGrid1.SetCheckBoxState(J,I,false);
        end;
    end;
    strGrid1.RowCount:=2;
end;

//设定单元表各列是否可以编辑
procedure TForm1.strGrid1CanEditCell(Sender: TObject; ARow,
  ACol: Integer; var CanEdit: Boolean);
Var
  I:integer;
begin

    //直接定义
    {if stgPList.Cells[cNCols1[3]-2,ARow]=’1′ then
        CanEdit:=false
    else begin
        if ACol=cNCols1[2]-2 then
            CanEdit:=true
        else
            CanEdit:=false;
    end;}
    {if aRow=0 then
        CanEdit:=false
    else if}

    //用属性数组定义
    for I:=0 to cColQty1 do begin
        if ACol=I then begin
            if cColProp1[I,1]=’Y’ then CanEdit:=true;
            if cColProp1[I,1]=’N’ then CanEdit:=False;
        end;
    end;

   
//以下代码首先根据列cC1Data_Flag的值设定一行是否可以编辑,然后再根据属性数组设定。
    {if (strGrid1.cells[cC1Data_Flag,ARow]=”) or
(strGrid1.cells[cC1Data_Flag,ARow]=’C’) then begin
        canEdit:=false;
        exit;
    end  else begin
        for I:=0 to cColQty1 do begin
            if ACol=I then begin
                if strGrid1.cells[cC1Data_Flag,aRow]=’C’ then
CanEdit:=false
                else begin
                    if cColProp1[I,1]=’Y’ then CanEdit:=true;
                    if cColProp1[I,1]=’N’ then CanEdit:=False;
                end;
            end;
        end;
    end;}
end;

//设定单元表各列对齐方式
procedure TForm1.strGrid1GetAlignment(Sender: TObject; ARow, ACol:
Integer; var AAlignment: TAlignment);
Var
  I:integer;
begin
    //直接定义
    {if ARow=0 then AAlignment:=tacenter
    else begin
        case ACol of
        0:   AAlignment:=taRightJustify;
        1:   AAlignment:=taCenter;
        2:   AAlignment:=taCenter;
        3:   AAlignment:=taRightJustify;
        4:   AAlignment:=taCenter;
        6:   AAlignment:=taCenter;
        8:   AAlignment:=taCenter;
        9:  AAlignment:=taCenter;
        else AAlignment:=taLeftJustify;
        end;
    end;  }
    //用属性数组定义
    if ARow=0 then AAlignment:=taCenter
    else begin
        for I:=0 to cColQty1-1 do begin
            if ACol=I then begin
                //case strToInt(cColProp1[I,4])
                if cColProp1[I,4]=’C’ then AAlignment:=taCenter;
                if cColProp1[I,4]=’L’ then
AAlignment:=taLeftJustify;
                if cColProp1[I,4]=’R’ then
AAlignment:=taRightJustify;
            end;
        end;
    end;

end;

//设定单元表各列颜色
procedure TForm1.strGrid1GetCellColor(Sender: TObject; ARow,
  ACol: Integer; AState: TGridDrawState; ABrush: TBrush; AFont:
TFont);
Var
  I:integer;
begin

    //直接定义
    {if ARow>0 then begin
        Case ACol of
            1: ABrush.Color:=RGB(227,249,248);
            2: ABrush.Color:=RGB(250,232,193);
            3: ABrush.Color:=RGB(227,249,248);
            4: ABrush.Color:=RGB(250,232,193);
            12: ABrush.Color:=RGB(227,249,248);
            14: ABrush.Color:=RGB(250,232,193);
            24: ABrush.Color:=RGB(227,249,248);
            48: ABrush.Color:=RGB(250,232,193);
            51: ABrush.Color:=RGB(227,249,248);
        End;
    end;}

    //用属性数组定义
    if ARow=0 then
            abrush.Color:=clBtnFace        // 首行为灰色
    else begin
        for I:=0 to cColQty1 do begin      //
非首行按属性数组设置颜色
            if ACol=I then
abrush.Color:=StringToColor(cColProp1[I,5]);
        end;
    end;

end;

//设定单元表各列控件类型
procedure TForm1.strGrid1GetEditorType(Sender: TObject; ACol,
  ARow: Integer; var AEditor: TEditorType);
Var
  I:integer;
begin

    for I:=0 to cColQty1 do begin
         if ACol=I then begin
             if cColProp1[I,3]=’M’ then begin
                 AEditor:=edComBoEdit;
                 strGrid1.ClearComboString;
                 strGrid1.AddComboString(‘Y : 同意’);
                 strGrid1.AddComboString(‘N : 拒绝’);
             end;
         end;
    end;
   
end;

end.

NO NAME ITEM MONEY001 张三 工资 80 001 张三 补贴 86 001 张三 奖金 75 002
李四 工资 78 002 李四 补贴 85 002 李四 奖金 78

一般语法格式:

修改字段的语法:alter table tablename modify (column datatype [default
value][null/not null],….);

    (以上过程在Delphi6中测试通过。)

求每个人的总工资以及所有人的总工资,结果如下表:

复制代码 代码如下:with alias_name1 as ,
alias_name2 as , …… alias_nameN as select col1,col2…… col3from
alias_name1,alias_name2……,alias_nameN

删除字段的语法:alter table tablename drop ;

   
这样,如果修改Cells相关的属性,只需要修改数组cColProp1相关的值就可以实现了,很方便的。
   
关于修改cColProp1,你可以直接在上面的代码窗口中修改,但如果列相当多的话,这样改起来也是相当麻烦的,而且容易改错,也是不方便的!
    对此,我做了一个excel模板:动态Cells设定工具表,如附件。

姓名 工资 补贴 奖金 总工资李四 780 850 780 2410张三 800 860 750 2410总计
1580 1710 1530 4820

Oracle with语句的例子:

添加、修改、删除多列的话,用逗号隔开。

   
通过这个模板,可以自动生成静态数组cColProp1和静态列号,修改起来也很直观,很方便。
    修改后,将生成的静态数组cColProp1和静态列号复制到代码里即可。

SELECT DECODE, 1, '总计', NAME) 姓名,SUM(DECODE) 工资,SUM(DECODE) 补贴,SUM(DECODE) 奖金,SUM 总工资FROM SALARYGROUP BY ROLLUP;

复制代码 代码如下:WITH Q1 AS (SELECT 3 +
5 S FROM DUAL), Q2 AS (SELECT 3 * 5 M FROM DUAL), Q3 AS (SELECT S, M, S

使用alter table 来增加、删除和修改一个列的例子。

 

其中:GROUPING函数接受一列,列值为空返回1,非空返回0,只能在使用ROLLUP或CUBE的查询中使用;DECODE
是指ITME的值与‘工资’比较,如果相等返回MONEY,不等返回0

  • M, S * M FROM Q1, Q2) SELECT * FROM Q3;

创建表结构:复制代码 代码如下:create
table test1 not null);增加一个字段:复制代码 代码如下:alter table test1add default
‘无名氏’ not null);使用一个SQL语句同时添加三个字段:复制代码 代码如下:alter table test1add default
‘无名氏’ not null,

 动态Cells设定工具表:
DynamicCells_Setting.xls  

总结

输出结果:复制代码 代码如下:181523120

age integer default 22 not null,

以上就是本文关于oracle求和代码示例的内容了,希望对大家有所帮助。感兴趣的朋友可以浏览:oracle
数据库启动阶段分析 、oracle 虚拟专用数据库详细介绍、
oracle数据库导入TXT文件方法介绍
等。感谢大家对脚本之家网站的支持。如果你有什么问题或者想要了解的,可以随时给我们留言,小编会及时回复的。

has_money number;修改一个字段复制代码
代码如下:alter table test1modify default
‘unknown’);另:比较正规的写法是:复制代码
代码如下:– Add/modify columns alter table TABLE_NAME rename column
FIELD_NAME to NEW_FIELD_NAME;

删除一个字段复制代码 代码如下:alter table
test1drop column name;

需要注意的是如果某一列中已经存在值,如果你要修改的为比这些值还要小的列宽这样将会出现一个错误。

例如前面如果我们插入一个值复制代码
代码如下:insert into test1values ;

然后曾修改列: alter table test1modify ;将会得到以下错误:ERROR 位于第 2
行:ORA-01441: 无法减小列长度, 因为一些值过大

高级用法:

重命名表复制代码 代码如下:ALTER TABLE
table_name RENAME TO new_table_name;修改列的名称

语法:复制代码 代码如下:ALTER TABLE
table_name RENAME COLUMN supplier_name to sname;

范例:复制代码 代码如下:alter table
s_dept rename column age to age1;

附:创建带主键的表>>复制代码
代码如下:create table student (studentid int primary key not
null,studentname varchar;1、创建表的同时创建主键约束无命名复制代码 代码如下:create table student
(studentid int primary key not null,studentname varchar;

有命名复制代码 代码如下:create table
students (studentid int ,studentname varchar,age int,constraint yy
primary key;

2、删除表中已有的主键约束

无命名

可用 SELECT * from
user_cons_columns;查找表中主键名称得student表中的主键名为SYS_C002715alter
table student drop constraint SYS_C002715;

有命名复制代码 代码如下:alter table
students drop constraint yy;

3、向表中添加主键约束复制代码
代码如下:alter table student add constraint pk_student primary key;

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图