精华内容
下载资源
问答
  • 文章目录获取所有表列表查看表结构查看某表注释查看某表字段注释 获取所有表列表 相知道相应用户下有哪些表,可以通过以下 SQL 语句进行查询 select table_name from user_tables; //当前用户表 select...

    获取所有表的列表

    相知道相应用户下有哪些表,可以通过以下 SQL 语句进行查询

    select table_name from user_tables; //当前用户的表        
      
    select table_name from all_tables; //所有用户的表    
      
    select table_name from dba_tables; //包括系统表  
      
    select table_name from dba_tables where owner='xxx'  
    

    示例:
    在这里插入图片描述

    查看表结构

    (1)可以在 SQL 界面通过 desc 表名来查看
    (2)也可以通过以下 SQL 语句查询

    select * 
    from user_tab_columns 
    where table_name='要查询的表名';
    

    在这里插入图片描述
    精准查询:select COLUMN_NAME,DATA_TYPE,DATA_LENGTH from user_tab_columns where table_name='表名';
    在这里插入图片描述

    查看某表的注释

    select *   
    from user_tab_comments
    where Table_Name='表名'
    

    在这里插入图片描述

    查看某表的字段注释

    select *   
    from user_col_comments   
    where Table_Name='表名'
    

    在这里插入图片描述

    展开全文
  • 1、查看表结构 desc 表名 2、修改表字段SQL语句 使用rename关键字来实现字段名修改: alter table 表名 rename column旧字段名 to 新字段名名; 使用modify关键字来实现对数据类型修改: alter table ...

    1、查看表结构

    desc 表名

    2、修改表字段SQL语句

    使用rename关键字来实现字段名的修改:

    alter table 表名 rename column旧的字段名 to 新的字段名名;

    使用modify关键字来实现对数据类型的修改:

    alter table 表名 modify 字段名 数据类型;

    使用add关键字来实现字段名的增加

    alter table 表名 add 字段名 数据类型;

    使用drop column关键字来实现字段名的增加

    alter table drop column permile;

    展开全文
  • Sql语句 含义 备注 DESC EMP; 查询表结构 EMP为表名 SELECT table_name FROM user_tables; 查看当前用户下所有表名字 select*from emp; 查询emp表中所有记录 DELETE FROM 表名称 WHERE 列名称 = 值 DELETE ...

    Sql语句 含义 备注
    DESC EMP; 查询表结构 EMP为表名
    SELECT table_name FROM user_tables; 查看当前用户下的所有表的名字
    select*from emp; 查询emp表中的所有记录
    DELETE FROM 表名称 WHERE 列名称 = 值 DELETE 语句用于删除表中的行。 DELETE FROM Person WHERE LastName = 'Wilson' 
    DELETE  FROM table_name where id=1 删除id为1 的记录
    DELETE  FROM table_name 所有表记录删除
    drop table subject; 删除表subject
    select Ename,job from emp; 查询ename和job这两个字段的值(列)
    SELECT DISTINCT 列名称 FROM 表名称 去除查询出来的重复值 DISTINCT只能在select后边,去重的时候,要在一整行记录都重复的情况下才会去重,否则打破数据对应关系
    select id*2 as id2 from emp 查询id*2的值显示为id2 as也可以用空格代替,给表取别名的时候只能用空格

    eg:--查询编号  姓名  年薪  月薪   日薪   
    select EMPNO AS 编号, ENAME AS 姓名,SAL*12 AS 年薪,SAL as 月薪,SAL/30 AS 日薪 from EMP; 
    || 拼接字符串 select '编号:'|| empno ||'姓名:'|| ename ||'月薪'||sal 描述
    from emp ;
    ORDER BY  用于对结果集进行排序。 select  * from emp order by id  DESC   按照ID降序排序                       
      ASC是升序(默认)
    DESC是降序,
    当定义两个字段排序时,会优先拍好第一个字段,然后第一个字段相同时,才会把第二个字段按照第二个条件来排序
    is noll、is not null 判断null
    =  null 判断值是否为null
    a>200 and     c  <300  或者 between 200 and 300 范围查询【闭区间】
    IN(10,20,30) 取10,20或者30
    NOT IN(10,20) 不取10或20
    like 模糊查询
    %  表示任意个任意字符
    _  (下划线)表示一个任意字符
    select * from emp where job like '%S%';      包含S的
    select * from emp where job like '_S%';        第二个字符为S的
    select * from emp where job like 'S%';       以S开头的
    select * from emp where job like '%S';      以S结尾的
    SELECT table_name FROM user_tables; 查看当前用户下的所有表的名字
    UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 Update 语句用于修改表中的数据。 update emp SET  sal=400 where empno=7369;
    NVL(列,数值)

    NVL(列,'文本')

    ------------------------

    NVL2(expr1,expr2,expr3) 

    如果这个之值为空,则替换为数值

    如果这个之值为空,则替换为文本

    -------------------------------------------

    如果expr1为null,返回expr3,如果expr1不为null,则返回expre2

    select sal+nvl(comm,0) as 工资 from emp;

    ---------------------------------------------------------------------------------------






    多表关联查询

    (原则:外键=主键)[查出所有的满足条件的字段]      先做笛卡尔积,再笛卡尔积的结果中进行删选

    单行函数

    字符函数 upper(str) 把str变为大写
    lower(str) 把str变为小写
    initcap(str) 把str首字母变大写
    replace(str,f,s) 把f换为s
    length(str) 长度
    substr(str,index1,index2) 截取    左闭右开区间
    substr(str,3) 截取3到结尾
    substr(str,-3) 截取后三位
    ASCII('a') 获取字符ASCII码
    CHAR(100) 把ASCII码转化为字符
    Ltrim(str) 去除str左边空白
    trim(str) 去除str两边空白字符
    Rtrim(str) 去除str右边空白
    LPAD 填充       select LPAD('cc',10,'*')          用*代替cc左边不足10位的字符
    RPAD 填充       select RPAD('cc',10,'*')          用*代替cc右边边不足10位的字符
    instr(‘hello’,‘ll’) 返回ll在hello中的索引
    concat    和    || 拼接
    数值型函数 round(1.234) 四舍五入保留整数
    round(1.234,2) 四舍五入保留2位小数
    trunc(1.23) 直接舍弃小数
    trunc(1.23,2) 保留两位小数截取
    MOD(10,3) 10/3的余数(取模运算)
    Ceil(45.67) 向上取整
    Floor(45.56) 向下取整
    日期函数 systimestamp 获取当前时间
    add_months(sysdate,3) 在sysdate日期之后3个月的日期
    add_months(sysdate,-3) 在sysdate日期之前3个月的日期
    next_day(sysdate,'Sunday') 下一个星期天的日期
    last_day(sysdate) 返回本月最后一天
    Months_between(sysdate,hiredate) 返回两个日期的月差
    extract(year from sysdate) 从sysdate中获取年份
    extract(month from sysdate) 从sysdate中获取月份
    extract(day from sysdate) 从sysdate中获取天
    extract(hour from systimestamp) 从sysdate中获取时
    extract(minute from systimestamp) 从sysdate中获取分
    extract(second from systimestamp) 从sysdate中获取秒
    SELECT to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') FROM dual; 查询当前系统时间,要求显示年月日时分秒
    SELECT to_date('1997-01-01','yyyy-mm-dd')
     FROM dual;
    将字符串转为日期
    to_timestamp(‘2018-12-12 12:3:4’,‘yyyy-mm-dd  hh24:mi:ss’) 格式化时间格式(字符串转日期)
    SELECT to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') FROM dual; 查询当前系统时间,要求显示年月日时分秒
    SELECT to_date('1997-01-01','yyyy-mm-dd')
    FROM dual;
    '1997-01-01':是一个字符串,能否转换成时间?
    转换函数 SELECT to_char(123456.789,'99999999.9999')
    FROM dual;
    SELECT to_char(123456.789,'00000000.0000')
     FROM dual;
    SELECT to_char(123456.789,'99,999,999.9999')
     FROM dual;
    SELECT to_char(123456.789,'$99,999,999.9999')
     FROM dual;
    SELECT to_char(123456.789,'L99,999,999.9999')
    FROM dual;
    转化为相应的格式,9会在位数不够填充0,0会
    to_char(sysdate,‘yyyy-mm-dd  hh24:mi:ss’) 将日期格式转化为字符串
    to_char(1234567,'999,999,999,999') 将格式转化为货币格式,如果为9则不会补0,0则会
    to_number('8') 将字符8转换为数字
    通用函数 NVL2(comm,comm,0) 如果comm不为null,则取第二个,如果为null,取第三个
    NVL(comm,0) 将comm为null的值替换为0
    NULLIF(1,1) 判断两个值是否相等,相等返回null,不相等返回表达式1
    decode(表达式1,参数值1,结果1,参数2,结果2); 当表达式1的值与参数值相等的时候,返回参数后对应的结果
    coalesce(表达式1,表达式2,表达式3) 如果表达式1为null,则取表达式2,如果表达式2也是null,则取表达式3,……,如果都为null,则最终结果null
    分组函数
    count(*) 求出全部记录数目(统计某个字段的数目,把*换为字段名)
    sum(字段) 把摸个字段的所有值相加
    avg(字段) 平均值
    MAX(字段) 最大值
    Min(字段) 最小值
    where是在分组前对行进行筛选,后边不能跟分组函数

    集合函数(聚合函数)

    UNION:并集, 包含两个结果集全部的结果,重复的只保留一份,
     会按照结果集第一列排序升序排序
       SELECT first_name,id
    FROM s_emp
    WHERE id<15
    UNION
    SELECT first_name,id
    FROM s_emp
    WHERE id>5;
    UNION ALL 把两个结果集的结果加起来,不会排序,不会去重 SELECT first_name,id
    FROM s_emp
    WHERE id<15
    UNION ALL
    SELECT first_name,id
    FROM s_emp
    WHERE id>5
    INTERSECT:交集 取两个结果集中都有的结果,会排序,去重 SELECT first_name,id
    FROM s_emp
    WHERE id<15
    INTERSECT
    SELECT first_name,id
    FROM s_emp
    WHERE id>5;
    MINUS: 减,第一个结果集减去(第一个和第二个同时都有的),会去重,排序 SELECT first_name,id
    FROM s_emp
    WHERE id<15
    MINUS
    SELECT first_name,id
    FROM s_emp
    WHERE id>5;
    rownum 列号,代表结果集中的行号
     是一个伪列
     可以用来实现分页
     注意:结果集中的行号永远从1开始
      rownum条件只要不是从1开始,就是没有结果的


    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

                                        表结构操作

                           表记录操作

    ————------------— ———————  表结构————————————————


    desc student;//查询student表的结构

    修改表的名字:RENAME student TO newstudent;

    新增列:ALTER TABLE student ADD (phone varchar2(20));

    删除列:ALTER TABLE student DROP(phone);

    修改列:ALTER TABLE student MODIFY(age number(4)DEFAULT 0);

    DEFAULT 用于设置默认值

    ★添加约束:
    ALTER table student ADD constraint user_email_uk UNIQUE(email);
    ★删除约束:
    alter table 约束基于的表名  drop constraint 约束名
    ★更改表名:
    ALTER TABLE 表名 MODIFY(字段名 更改的内容)  【字段名和要改的内容,不改的字段不用写】
    EG:alter table student MODIFY(name varchar2(20) not null);
    -----------------------表记录————————————————————————————————————————————————————————

    修改表数据:update  student set sex='女' where id=2;
    删除某条记录:delete from student where id=2;
    清空记录:delete from student;
    新增记录:insert into student(id,NAME,age,sex) VALUES(2,'文丑',34,'男');

    展开全文
  • 根据数据字典表定义的表结构,生成创建表的SQL语句 日期:2004年12月12日 作者:jackgao 人气:4236 查看:[大字体 中字体 小字体] //1. 类名:TJZDbSqlCreate //2. 父类:Tcomponent //3. 主要属性...
    根据数据字典表定义的表结构,生成创建表的SQL语句
    日期:2004年12月12日 作者:jackgao 人气:4236 查看:[大字体 中字体 小字体]
    //1.  类名:TJZDbSqlCreate
    //2.  父类:Tcomponent
    //3.  主要属性:
    //         DataBaseName:String //数据源。数据字典存放路径(有大小写区别)
    //         TableName:String  //  欲生成Create Table 语句的表(有大小写区别)
    //         TableType:String   //表类型,从PARADOX,ACCESS,MSSQL中选择
    //                                        (无大小写区别)
    //         Sql;Tstings   //生成的sql语句(不可见)
    //4.  功能:根据数据字典表定义的表结构,生成创建该表的Sql语句,
    //               需要考虑的字段类型包括:字符、整数、数值、日期
    //5.  使用说明:
    //         举例如下:
    //VAR  TJZDbSqlCreate1: TJZDbSqlCreate;
    //TJZDbSqlCreate 1.DataBaseName:='JY';
    //TJZDbSqlCreate1 .TableName:='SCHOOL';
    //TJZDbSqlCreate1.TableType:='MSSQL';
    //在"MSSQL","PARADOX","ACCESS"中取值;
    //TJZDbSqlCreate1.exec;
    //Memo1.lines.assign(TJZDbSqlCreate1.sql);
    //*****************************************************************************
    unit JZDBSqlCreate;
    interface
    uses
     Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Db,
     DsgnIntf, DBTables;
    type
     TJZDBSqlCreate = class(TComponent)
     private
       { Private declarations }
       FDataBaseName:string;
       FTableName:string;
       Fsql:TStrings;
       FTableType:string;
       qry: TQuery;
     protected
       { Protected declarations }
     public
       property sql:TStrings read Fsql write Fsql;  
       { Public declarations }
      constructor Create(AOwner: TComponent); override;
       destructor Destroy;override;
      procedure Exec;
     published
       { Published declarations }
       property DatebaseName:string read FDataBaseName write FDataBaseName;
       property TableName:String read FTableName write FTableName;
       property TableType:String read FTableType write FTableType;
       //ocedure Exec;
     end;

     TTableTypePropEditor = class(TStringProperty)//Property editor for DataBaseName property
     public
       procedure GetValues(Proc:TGetStrProc);override;
       function  GetAttributes:TPropertyAttributes;override;  
     end;  
    TDatebaseNameEditor = class(TStringProperty)//Property editor for DataBaseName property
     public
           procedure GetValues(Proc:TGetStrProc);override;
           function  GetAttributes:TPropertyAttributes;override;
          // function  GetName:string;override;
     end;
    procedure Register;
    implementation
    constructor TJZDBSqlCreate.Create(AOwner: TComponent);
    begin       //创建成员
    inherited Create(AOwner);
    qry:=tquery.create(SELF)
    end;
    destructor TJZDBSqlCreate.Destroy;
    begin       //清空成员
     Qry.Close;
     Qry.Free;
     Fsql.free;
     inherited;
    end;
    procedure TTableTypePropEditor.GetValues(Proc:TGetStrProc);//Get list all uknown databases
    begin
     Proc('MSSQL');
     Proc('PARADOX');
     Proc('ACCESS');
    end;

    function  TTableTypePropEditor.GetAttributes:TPropertyAttributes;
    begin
     Result:=[paValueList,paSortList,paReadOnly];
    end;
    procedure TDatebaseNameEditor.GetValues(Proc:TGetStrProc);//Get list all uknown databases
    var
     List:TStringList;
     i:Integer;
    begin
         Session.Active:=True;
         List:=TStringList.Create;
         Session.GetDatabaseNames(List);
         for i :=0  to List.Count-1 do  Proc(List.Strings[i]);
         List.Free;
         Session.Active:=False;
         Proc('MSSQL');
     Proc('PARADOX');
     Proc('ACCESS');
    end;
    function  TDatebaseNameEditor.GetAttributes:TPropertyAttributes;
    begin
    Result:=[paValueList,paSortList];
    end;
    {function  TDBNameEditor.GetName:string;
    begin
    Result:='DataBaseName';
    end;}
    procedure Register;
    begin
     RegisterPropertyEditor(TypeInfo(String),TJZDBSqlCreate,'DatabaseName',TDatebaseNameEditor);
     RegisterPropertyEditor(TypeInfo(String),TJZDBSqlCreate,'TableType',TTableTypePropEditor);
     RegisterComponents('JZ', [TJZDBSqlCreate]);
    end;
    procedure TJZDBSqlCreate.Exec;
    var SQL1,Sql2,sqlkey,sqlnokey:STRING;
        sql3:string;//字段标注
        sqltype:string;
        sqllength:string;
        sqldegigits:string;
        sqlisnull:string;
        SQLISPKEY:STRING;
        SQLDEFAULT:STRING;
    begin
    SQLISPKEY:='';
    sqlkey:='' ;
    sqlnokey:='';
    Fsql := TSTRINGlist.Create;
    qry:=tquery.create(SELF) ;
    IF (FDataBaseName='') OR  (FTableName='') OR  (FTableType='') THEN
    BEGIN
    Application.MessageBox('属性没有设置','错误提示', MB_OK);
    exit;
    END;
    IF  (trim(UPPERCASE(FTABLETYPE))='ACCESS') OR  (trim(uppercase(FTableType))='MSSQL') OR  (trim(uppercase(FTableType))='PARADOX') THEN
    ELSE
    BEGIN
    Application.MessageBox('TableType属性设置错误!','错误提示', MB_OK);
    exit;
    END;
    try
    try
    Qry.SQl.text:='SELECT Ttables.CTABNAME, Ttables.CTABMEANS, '+
    ' Ttables.CMEM, Tcolumns.CCOLNAME, Tcolumns.CCOLMEANS, Tcolumns.CCOLTYPE,'+
    ' Tcolumns.ICOLLENGTH, Tcolumns.ICOLDIGITS, Tcolumns.ICOLISPKEY, Tcolumns.ICOLISNULL,'+
    ' Tcolumns.CCOLDEFAULT FROM TTABLES.db Ttables'+
    '  INNER JOIN TCOLUMNS.db Tcolumns'+
    '  ON  (Ttables.CTABNAME = Tcolumns.CTABNAME) WHERE  Ttables.CTABNAME=:TABNAME';
    Qry.DatabaseName:=FDataBaseName;
    Qry.ParamByName('TabName').asstring:=FTableName;
    Qry.Open;
    except  ON ed:EDATABASEERROR do
    begin
    Application.MessageBox('数据字典设置错误','错误提示', MB_OK);
    exit;
    end;
    end;
    Qry.First;
    if (not (qry.eof)) and  (not ((QRY.FieldByName('CTABMEANS').asstring)=''))
    AND (NOT(trim(UPPERCASE(FTABLETYPE))='ACCESS')) then
    Sql2:='   /*'+QRY.FieldByName('CTABMEANS').asstring+'*/'+chr(13)+chr(10); //设置标题
    While Not (Qry.Eof) DO
    BEGIN
    if QRY.FieldByName('CCOLMEANS').asstring='' then
    sql3:=''
    else
    IF trim(UPPERCASE(FTABLETYPE))='ACCESS' THEN
      sql3:=''//主要因为ACCESS注释如何写有疑问?
     ELSE
       sql3:='   /*'+QRY.FieldByName('CCOLMEANS').asstring+'*/';
    //--------------------------------------------
    IF trim(UPPERCASE(FTABLETYPE))='MSSQL' THEN      
    BEGIN
    sqldegigits:='';
    //确定字段类型
    IF trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='字符' then
    sqltype:='CHAR';
    IF trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='整数' then
    sqltype:='int';
    IF trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='数值' then
    sqltype:='float';
    IF trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='日期' then
    sqltype:='datetime';
    //确定字段是否为空 0为空,1为不空
    if Qry.FieldByName('icolisNull').asinteger=0 then
    sqlisnull:='NULL'
    ELSE
    sqlisnull:='NOT NULL';
    //确定主键
    {IF Qry.FieldByName('iColIsPKey').asINTEGER=0 THEN
    SQLISPKEY:=''
    ELSE
    SQLISPKEY:='primary key';}
    IF Qry.FieldByName('iColIsPKey').asINTEGER=1 THEN
    if SQLISPKEY='' then
    SQLISPKEY:='CONSTRAINT '+Qry.FieldByName('CTABNAME').ASSTRING+ 'constraint primary key ('+Qry.FieldByName('cCOLname').asstring
    else
     SQLISPKEY:= SQLISPKEY+','+Qry.FieldByName('cCOLname').asstring;

    //确定缺省
    IF trim(uppercase(Qry.FieldByName('ccolDefault').asstring))<>'' THEN
    begin
    IF trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='字符' then
    SQLDEFAULT:='default '''+ Qry.FieldByName('ccolDefault').asstring+''''
    else
    SQLDEFAULT:='default '+Qry.FieldByName('ccolDefault').asstring;
    end
    else
    SQLDEFAULT:='';
    // 确定字段长度
    IF (trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='整数') or
    (trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='日期') or
     (trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='数值') then
    sqllength:=''
    else
    sqllength:='('+Qry.FieldByName('icollength').asstring+')';
    Sql1:=sql1+' '+Qry.FieldByName('cCOLname').asstring+' '+sqltype+
    ' '+sqllength+
    ' '+sqldegigits+
    ' '+sqlisnull+
    ' '+SQLDEFAULT ;
    Qry.NEXT;
    //
    if not(qry.eof) then
    sql1:=sql1+','+sql3+CHR(13)+chr(10)
    else
    if SQLISPKEY='' then
     sql1:=sql1+sql3+CHR(13)+chr(10)
      else
       sql1:=sql1+','+sql3+CHR(13)+chr(10);
    end;//mssql第一个if
    //------------------------------------
    //paracox
    IF trim(UPPERCASE(FTABLETYPE))='PARADOX' THEN      
    BEGIN

    //确定小数点位置
    IF trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='数值' then
     begin
       if  QRY.FieldByName('icoldigits').asstring='' then
             sqldegigits:=',0)'
        else
             sqldegigits:=','+QRY.FieldByName('icoldigits').asstring+')' ;
      end
     else
       IF trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='字符' then
            sqldegigits:=')'
       else
       sqldegigits:='';
    //确定字段类型
    IF trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='字符' then
    sqltype:='character';
    IF trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='整数' then
    sqltype:='integer';
    IF trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='数值' then
    sqltype:='float';
    IF trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='日期' then
    sqltype:='date';
    //确定字段是否为空 0为空,1为不空
    {if Qry.FieldByName('icolisNull').asinteger=0 then  //有疑问
    sqlisnull:='NULL'
    ELSE
    sqlisnull:='NOT NULL';}
    sqlisnull:='';
    //确定主键
    IF Qry.FieldByName('iColIsPKey').asINTEGER=1 THEN
    if SQLISPKEY='' then
    SQLISPKEY:='primary key ('+Qry.FieldByName('cCOLname').asstring
    else
     SQLISPKEY:= SQLISPKEY+','+Qry.FieldByName('cCOLname').asstring;
    //

    SQLDEFAULT:='';
    // 确定字段长度
    IF (trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='整数') or
    (trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='日期') then
    sqllength:=''
    else
    sqllength:='('+Qry.FieldByName('icollength').asstring;
    //
    if Qry.FieldByName('iColIsPKey').asINTEGER=1 THEN
        begin
    Sqlkey:=sqlkey+' '+Qry.FieldByName('cCOLname').asstring+' '+sqltype+
    ' '+sqllength+
    ' '+sqldegigits+
    ' '+sqlisnull+
    ' '+SQLDEFAULT;
        end
    else
       begin
    Sqlnokey:=sqlnokey+' '+Qry.FieldByName('cCOLname').asstring+' '+sqltype+
    ' '+sqllength+
    ' '+sqldegigits+
    ' '+sqlisnull+
    ' '+SQLDEFAULT;
        end ;
    Qry.NEXT;
    //
    if not(qry.eof) then
    begin//11
       IF Qry.FieldByName('iColIsPKey').asINTEGER=1 THEN
             begin if sqlkey<>'' then sqlkey:=sqlkey+','+CHR(13)+chr(10) end
       else
            begin if sqlnokey<>'' then sqlnokey:=sqlnokey+','+CHR(13)+chr(10); end;
    end //11
    else
    begin//2
      if SQLISPKEY='' then
        begin//21
          if (sqlnokey<>'') and (sqlkey<>'') then
          sql1:=sqlkey+','+CHR(13)+chr(10)+sqlnokey
          else
            begin
            if sqlkey='' then sql1:=sqlnokey+CHR(13)+chr(10);
            if sqlnokey='' then sql1:=sqlkey+CHR(13)+chr(10);
            end;
        end//21
     else
       begin//22
          if (sqlnokey<>'') and (sqlkey<>'') then
          sql1:=sqlkey+','+CHR(13)+chr(10)+sqlnokey+','+CHR(13)+chr(10)
          else
            begin
            if sqlkey='' then sql1:=sqlnokey+CHR(13)+chr(10);
            if sqlnokey='' then sql1:=sqlkey+CHR(13)+chr(10);
            end;
       end;//22
    end//2

    {if SQLISPKEY='' then
     sql1:=sql1+sql3+CHR(13)+chr(10)
      else
       if sqlnokey<>'' then
       sql1:=sqlkey+','+sql3+CHR(13)+chr(10); }
    end;//PARADOX第一个if
    //-----------------------------------
    IF trim(UPPERCASE(FTABLETYPE))='ACCESS' THEN      
    BEGIN
    //确定小数点位置
    {IF trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='数值' then
     begin
       if  QRY.FieldByName('icoldigits').asstring='' then
             sqldegigits:=',0)'
        else
             sqldegigits:=','+QRY.FieldByName('icoldigits').asstring+')' ;
      end
     else }
       IF trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='字符' then
            sqldegigits:=')'
       else
       sqldegigits:='';
    //确定字段类型
    IF trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='字符' then
    sqltype:='char';
    IF trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='整数' then
    sqltype:='integer';
    IF trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='数值' then
    sqltype:='float';
    IF trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='日期' then
    sqltype:='datetime';
    //确定字段是否为空 0为空,1为不空
    if Qry.FieldByName('icolisNull').asinteger=0 then
    sqlisnull:='NULL'
    ELSE
    sqlisnull:='NOT NULL';
    //确定主键
    IF Qry.FieldByName('iColIsPKey').asINTEGER=1 THEN
    if SQLISPKEY='' then
    SQLISPKEY:='CONSTRAINT '+Qry.FieldByName('CTABNAME').ASSTRING+ 'constraint primary key ('+Qry.FieldByName('cCOLname').asstring
    else
     SQLISPKEY:= SQLISPKEY+','+Qry.FieldByName('cCOLname').asstring;
    SQLDEFAULT:='';
    // 确定字段长度
    IF (trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='整数') or
    (trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='日期') OR
     (trim(Uppercase(QRY.FieldByName('cCOLTYPe').asstring))='数值') then
    sqllength:=''
    else
    sqllength:='('+Qry.FieldByName('icollength').asstring;
    //
    Sql1:=sql1+' '+Qry.FieldByName('cCOLname').asstring+' '+sqltype+
    ' '+sqllength+
    ' '+sqldegigits+
    ' '+sqlisnull+
    ' '+SQLDEFAULT;
    Qry.NEXT;
    //

    if not(qry.eof) then
    sql1:=sql1+','+sql3+CHR(13)+chr(10)
    else
    if SQLISPKEY='' then
     sql1:=sql1+CHR(13)+chr(10)
      else
       sql1:=sql1+','+CHR(13)+chr(10);
    end;//
    //ACCESS第一个if  
    //-----------------------------

    end; //while
    if sql1='' then
    begin
    Application.MessageBox('数据字典记录为空!','错误提示', MB_OK);
    exit ;
    end ;
    if SQLISPKEY<>'' then
      sql1:=sql1+SQLISPKEY+')'+CHR(13)+chr(10);
    IF trim(UPPERCASE(FTABLETYPE))='PARADOX' THEN
      begin
      {if SQLISPKEY<>'' then
      sql1:=sql1+SQLISPKEY+')'+CHR(13)+chr(10);}
     
      sql1:='create table "'+FTableName+'.db"'+CHR(13)+chr(10)+'('+chr(13)+chr(10)+sql1 +')'  
      end
    else
    sql1:='create table '+FTableName+CHR(13)+chr(10)+'('+chr(13)+chr(10)+sql1 +')'  ;
    sql1:=sql2+sql1;
    fsql.ADD(sql1);
    except
    Fsql.FREE;
    qry.FREE;
    end
    end;
    end.

    展开全文
  • SQLServer中查询表结构(表主键 、列说明、列数据类型、所有表名)的Sql语句 1、查询数据库中的所有表名称: SELECT name FROM SysObjects Where XType='U' ORDER BY Name 结果: 2、查询数据库中指定表...
  • 测试必备Mysql常用sql语句系列 ... 前言 针对数据表操作语句叫做数据定义语言(DDL) ...查看数据表的创建语句 复制数据表 修改数据表 删除数据表 简称“增删改查“,点击右边目录即可跳转哦! --------------...
  • 查看数据表结构 作用:在创建完数据表后,查看定义是否正确 查看表基本结构语句DECRIBE 该语句可以查看表字段信息,其中包括:字段名,字段数据类型,是否为主键,是否有默认值等。 DESCRIBE&lt;表名&...
  • MySQL---查看数据表结构

    千次阅读 2019-08-29 14:57:47
    在MySQL中,查看表结构可以使用describe和show create table语句,下面详细介绍这两种语句: 1.查看表基本结构语句describe: describe/desc 语句可以查看表...【例】使用describe查看表tb_dept1的表结构SQL语句如...
  • 但在有些情况下,我们可能要查看我们定义的一些元素,比如我们定义的表都有哪些、表结构如何、存储过程的源码等等。这时候,我们学习的常规的SQL脚本可能就无法处理了。 比如您要写一个管理数据库的程序,就要...
  • 我们在工作中,经常可能需要查看数据库中的表结构来或者我们想知道一些信息。 但是我们可以通过哪一些方法或者这些数据呢? 一、 最简单方法,如果sql plus可用话,直接在sql plus中执行 desc 'tablename...
  • SQL语句复制数据表

    2013-04-07 09:46:00
    将a另外复制一个b(只复制结构,不含数据)select * into b from a where 1=0 将a另外复制一个b(包括制结构数据)select * into b from a 查看存储过程内容: sp_helptext存储过程名字 转载...
  • 一 分别使用DESCRIBE和DESC查看表tb_dept1和...1 查看tb_dept1表结构SQL语句如下: mysql> DESCRIBE tb_dept1; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | D...
  • 前言废话不多说直接上1.查看表结构基本语句describedescribe/desc语句可以查看表字段信息,其中包括:地段名、字段数据类型、是否为主键、是否有...查看tb_dept1表结构sql语句如下:其中,各个字段含义分别...
  • 了解当前系统中有多少个数据库,以及每个数据库中包含哪些,各个表的结构是怎样, 这是刚开始学习数据库时比经阶段。然而这些操作并没有SQL标准来制定,各个DBMS所采取策略也不同,暴露给用户使用接口也不...
  • 数据库管理一 、查看数据库结构1、查看数据库信息2、查看数据库中表信息3、显示数据表的结构(字段) 一 、查看数据库结构 1、查看数据库信息 语法 SHOW DATABASES 实例 2、查看数据库中表信息 语法: USE 数据库名 ...
  • 结构化查询语言(Structured Query Language),一种特殊目的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。 SQL语句使用特点 SQL语言基本上独立于数据库本身 ...
  • 获取mysql数据库的表结构数据,输出SQL文件 一、表输入 获取SQL查询语句,预览,点击确定 二、SQL输出 输入目标表,浏览文件名,点击确定 三、启动,查看结果 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,229
精华内容 491
关键字:

查看数据表结构的sql语句