精华内容
下载资源
问答
  • oracle语句速查

    2017-11-22 18:37:00
    定义,修改,删除操作 在ORACLE数据库系统中,表是数据库基本对象,与桌面数据库中文件类似,我们可以把所有基本实体都看成为表...建立表结构是每个应用系统都必须进行工作。由于建立表结构是一项统一规...
    表的定义,修改,删除操作
    ORACLE数据库系统中,表是数据库的基本对象,与桌面数据库中的文件类似,我们可以把所有的基本实体都看成为表,不管应用中的表有多复杂,都可以使用(拆成)一个或多个表来表示。用以存放实体的数据。下面针对建表所需要的知识作简单的介绍。
    §3.1 建立表结构
    建立表结构是每个应用系统都必须进行的工作。由于建立表结构是一项统一规划和统一设计的工作。应该是由总设计师根据用户的具体应用需要来定。表的设计是否合理关系到应用系统将来的成败与性能问题。因此,任何担当总设计师角色的人都不要轻视这项工作。
    §3.1.1 建立表结构命令
    由于创建表的命令非常长,这里仅给出一些主要的部分,详细的请参考《ORACLE8i SQL REFERENCE》 。
    CREATE TABLE 命令简要语法如下:
    CREATE TABLE [USER.] table_name
    ( { COLUMN1 DATATYPE
    [DEFAULT EXPN] [COLUMN_CONSTRAINT] |TABLE_CONSTRAINT }
    [, { COLUMN1 DATATYPE
    [DEFAULT EXPN] [COLUMN_CONSTRAINT] |
    TABLE_CONSTRAINT }] ... )
    [CLUSTER CLUSTER (COLUMN1 [,COLUMN2] ...) ]
    [PCTFREE N]
    [PCTUSED N]
    [INITRANS N]
    [MAXTRANS N]
    [STORAGE N]
    [TABLESPACE TABLESPACE]
    [ ENABLE | DISABLE]
    [ AS QUERY]
    其中:
    schema    包括基表的模式(缺省:当前用户的帐号)
    table_name表名
    column    列名(字段名),ORACLE7最多254列,ORACLE8可达1000个列。
    datatype  列数据类型
    DEFAULT             当前列的缺省值(常数)
    Column constraint   列约束
    Table_constraint    表约束
    PCTFREE   用于更新(update)的空间百分比(1-99
               0表示在插入时完全填满数据块,缺省为10
    PCTUSED   为表的每个数据块保留的可用空间的最小百分比取值1-99,缺省为40
    PCTFREEPCTUSED的组合决定了将插入的数据放入已存在的数据块还是放入一个新的块中。
    INITRANS 指定一个在每一个数据块中分配的事务入口的初始数1-255
                     缺省为1,每一个更新块的事务都需要在块中有一个事务入口
                     (大小依OS),一般不需要指此参。
    MAXTRANS   指定用于更新分配给表的数据块的并发事务的最大数,1-
                            255,用户一般不应改此参。
    TABLESPACE   表空间。如果缺省则表建在用户缺省的表空间(如果建立用户不指定表空间
                 则该用户的缺省表空间为system)。
    STORAGE         存储分配参数
                     INITIAL      integer   初始大小
                     NEXT         integer   下一次的大小
                     MINEXTENTS   integer   最小分配次数
                     MAXEXTENTS   integer   最大分配次数
                     PCTINCREASE integer   增长百分比(>=0
    ENABLE        激活完整性约束
    DISABLE       取消完整性约束
    As subquery      建表中查出数据给新表,此语句如果使用,则表的数据类型不需指定,
                       而是继承原表的类型。
    FREELIST   GROUP  在并行服务器中指定表或分类、索引组的列表数目。
    FREEUST     在并行服务器中指定表、簇、索引的列表数。
    提示1
    一般情况下,如果表含有long字段,这样势必需大量的空间,系统会在每次插入新记录时,经常分配空间给表,不久就会出现:
    "ORA-01547:Failed   to   allocate   extent   of   size   xxxxx   in 
    tablespace    'xxxx' "
         此种情况如果表空间还剩较多的连续空间的话。则可能是该表分配的空间次数已达最大值。为了对该表能插入新数据,需对该表的存储参数作修改,比如:
         SQL>alter   table   xxx   storage(MAXEXTENTS    999 )
    提示2:建议不要对表结构或索引使用 pctincrease大于0的参数以避免将来在运行中产生空间超支问题.
    提示3:建立表结构最重要的部分是存储参数(STORAGE)的说明。设置者要特别重视存储参数的估计,设置合理的大小。详细见〈Oracle8i/9i 初级数据库管理〉
    §3.1.2 建立表结构例子
    1:在SCOTT模式下建立表emp,并指定表空间和存储参数:
    Create   table   scott.emp
    (
             Empno   number(5)   primary   key,
             Ename   varchar2(15)   not   null,
             Job     varchar2(10),
             Mgr     number(5),
             Hiredate   date   default   sysdate,
             Sal     number(7,2)   CHECK(sal>100),
             Comm    number(3)   default 0.0 ,
             Dept    number   constraint 
             dept_fkey     References   scott.dept
    )
    Tablespace   users
    PCTFREE   10
    PCTUSED   70
    STORAGE
          (
          INITIAL   50K
          NEXT       50k
          MAXEXTENTS   10
          )
    2:在建立表过程中对有限制的列使用NOT NULL:
    CREATE TABLE CHECKUP_HISTORY
    (CHECKUP_NO NUMBER(10,0) NOT NULL,
    ID_NO NUMBER(10,0),
    CHECKUP_TYPE VARCHAR2(30),
    CHECKUP_DATE DATE,
    DOCTOR_NAME VARCHAR2(50));
    本例除了要求CHECKUP_NO非空外,其它无任何限制.
    3:在建立表时指定列CHECKUP_TYPE 为外部列:
    CREATE TABLE SEAPARK.CHECKUP_HISTORY
    (
    CHECKUP_NO NUMBER(10) NOT NULL,
    ID_NO NUMBER(10,0),
    CHECKUP_TYPE VARCHAR2(30),
    CHECKUP_DATE DATE,
    DOCTOR_NAME VARCHAR2(50),
    FOREIGN KEY (CHECKUP_TYPE) REFERENCES
    SEAPARK.CHECKUP (CHECKUP_TYPE),
    PRIMARY KEY (CHECKUP_NO)
    )
    PCTFREE 20
    PCTUSED 60
    INITRANS 2
    MAXTRANS 255
    STORAGE ( INITIAL 1250K
    NEXT 2K
    MINEXTENTS 1
    MAXEXTENTS 121
    Pctincrease 0)
    TABLESPACE user_data;
    例子指定了所有者,主键,外部键,表空间及存储参数等,主键和外部键在后面章节介绍。
    §3.1.3 建立临时表结构
    Oracle现在可以使用 CREATE GLOBAL TEMPORARY TABLE命令来实现建立临时表结构。这样的表它的数据只在用户会话期间存在,当会话完成后就自动清除。看下面例子:
    SQL> create global temporary table myemp as select * from emp;
    表已创建。
    SQL> desc myemp
     名称                                      空?     类型
     ----------------------------------------- -------- --------------
     ENAME                                              VARCHAR2(20)
     SAL                                                NUMBER(9,2)
     DEPTNO                                             NUMBER(4)
     TEL                                                VARCHAR2(20)
    SQL> select * from myemp;
    未选定行
    SQL> insert into myemp values('赵元杰',32456.99,10,'12');
    已创建 行。
    SQL> select * from myemp;
    ENAME                       SAL     DEPTNO TEL
    -------------------- ---------- ---------- ------------------
    赵元杰                 32456.99         10 12
    SQL> connect sys/sys
    已连接。
    SQL> connect zhao/zhao
    已连接。
    SQL> l
     1* select * from myemp
    SQL> /
    未选定行
    从上面可看出当连接到SYS在连接回来后数据就不存在了。对于临时表,可以用DROP TABLE来删除其结构。如:
    SQL> drop table myemp;
    表已丢弃。
    §3.3修改表结构
    修改表结构是对已经创建完成(实际是存放在数据库字典里)的表的结构进行修改。不同的Oracle版本允许对表的修改也不一样。新版的Oracle8i可以对表中的列进行删除。
    §3.3.1 修改表结构命令
    修改表结构的命令由ALTER TABLE来完成。该命令的参数较多,下面仅给出一些基本的部分。详细请参考《ORACLE8i SQL REFERENCE》 。
    ALTER   TABLE   [user.]   table
    [ADD   ({colum_element|table_constraint}
            [,{column_element|table_constraint}]...)]
    [MODIFY(column_element[,column_element]...)]
    [DROP   CONSTRAINT   constraint]...
    [PCTFREE   integer][PCTUSED   integer]
    [INITRANS   integer][MAXTRANS   integer]
    [STORAGE   storage]
    [BACKUP]
    ALTER TABLE可以作的操作有:
    l      增加一个列(字段)宽度;
    l      减少一个列(字段)宽度(该列必须无数据)
    l      增加一个列(字段);
    l      修改列的定义 ;
    l      或一个限制;(如数据类型,NOT NULL);仅当某列的值为空时才能修改其类型;
    l      去掉限制;
    l      修改存储分配;
    l      记录表已作过BACKUP
    l      删除已存在的列(Oracle8i及以后版本)
    l      重新定位和组织表(Oracle8i及以后版本)
    l      将表标识为不可用(Oracle8i及以后版本)
    §3.3.2  修改表结构例子
    1:对已经存在的表增加一新的列:
    SQL>alter   table   dept   add   ( headcount   number(3) );
    2:对表的列修改其大小:
    SQL>alter   table   dept   modify( Dname   char(20) );
    如果被修改的列没有空(已有数据),则被提示:
    ORA-01439: Column to be modified must be empty to change
    datatype
    ORA-01441: Column to be modified must be empty to decrease
    column length
    3:复制一个表:
    CREATE TABLE HOLD_TANK AS SELECT TANK_NO, CHIEF_CARETAKER_NAME
    FROM TANK;
    4:参照某个已存在的表建立一个表结构(不需要数据)
    create table emp2 as select * from emp where rownum<1;
    5:修改已存在表存储参数:
    Alter table emp2 storage( next 256k pctincrease 0 );
    6:删除表中的列:
    这是Oracle8i的新功能,它的基本语法为:
    ALTER TABLE . . . . . . DROP COLUMN [ CASCADE CONSTRAINTS ];
    :
    Alter table emp   drop column comm ;
    7:重新定位和组织表:
    这是Oracle8i的新功能,可以实现:
    l      将未分区的 表从一个表空间移到另一个表空间;
    l      重新组织一个未分区表的存储。
    它的基本语法为:
    ALTER TABLE . . . . . . MOVE TABLESPACE ;
    :
    Alter table emp   move tablespace users;
    8:将表标识为不可用:
    这是Oracle8i的新功能,可以实现对空间的收回等。
    基本语法为:
    ALTER TABLE . . . . . . SET UNUSED COLUMN;
    :
    Alter table emp   set UNUSED COLUMN xyz;
    提示:虽然Oracle允许用户对表的结构进行修改。但建议你在工作中不要采用方式。因为表结构被多次修改会影响应用系统的性能。
    §3.3.3 删除表结构
    Oracle提供DROP TABLE命令可以实现删除表数据和结构。提醒初学者,不要轻易使用DROP TABLE命令。DROP TABLE 命令语法:
    DROP TABLE [user.]table_name[CASCADE CONSTRAINTS]
    CASCADE CONSTRAINTS表示所有指向本表的主键,外部键被删掉。当删除一个表时,下面的对象也随之被删掉。
    l      表的索引;
    l      指向本表的外部键;
    l      本表的触发器;
    l      本表中的分区;
    l      本表的快照;
    l      本表的角色和用户权限;
    l      加在本表的所有限制。
    提示:如果你在定义表结构时,采用了主键、外部键来定义了一序列表。则在删除表结构时要小心。不要轻易用CASCADE子句。
    §3.3.4 使用CHECK作限制约束
    Oracle提供了一个很有用的子句CHECK,它可以实现对数据的自动检查。它的用法是在创建表结构时使用。如:
         









    本文转自 jxwpx 51CTO博客,原文链接:http://blog.51cto.com/jxwpx/222360,如需转载请自行联系原作者
    展开全文
  • C#数据结构

    2013-12-10 11:49:54
    结构类型的成分可以是非结构的,也可以是结构的。例如, C#语言中数组的成分可以是整型等基本类型,也可以是数组等结构类型。 5、数据结构(Data Structure) 数据结构是相互之间存在一种或多种特定关系的数据元素的...
  • 《数据结构 1800题》

    热门讨论 2012-12-27 16:52:03
    13. 下面程序段中带有下划线的语句的执行次数的数量级是( ) 【合肥工业大学 2001 三、1(2分)】 i:=n*n WHILE i<>1 DO i:=i div 2; 14. 计算机执行下面的语句时,语句 s的执行次数为 _______ 。【南京理工大学 ...
  • 数据结构

    2012-09-10 14:48:39
    28.下面程序时间复杂为( )。 for(i=1,s=0; i; i++) { t=1; for(j=1;j;j++) t=t*j;s=s+t; } A.O(n) B.O(n2) C.O(n3) D.O(n4) 29.递归过程中必定用到数据结构是( )。 A.循环队列 B.堆栈 C.二叉树...
  • 数据表结构的创建、查看、删除、修改2.1 创建数据表:2.2 查看数据表2.3 修改数据表2.4 删除数据表3.数据表记录的插入、查询、删除3.1 插入记录3.2 查询记录3.3 修改记录3.4 删除记录 注: ① SQL 对大小写不敏感:...


    注:
    ① SQL 对大小写不敏感:如SELECT 与 select 是相同的。

    ② SQL语句需要加上分号表示语句结束。

    下面从最基本的创建数据库和创建表进行SQL语法的学习,linux下的mysql安装和远程登录配置可以看这两篇博客:
    MySQL数据库安装和基本操作
    Navicat 数据库可视化工具远程连接MySQL及基本操作

    1.数据库的创建、查看、删除

    创建一个新的数据库:

    create database 数据库名;
    

    例如创建一个新的数据库boys

    create database boys;
    

    查看当前的所有数据库:

    show databases;
    

    删除数据库:

    drop database <数据库名>;
    
    image-20200617100631591

    2.数据表结构的创建、查看、删除、修改

    一个数据库中会包含有一张或者多张数据表,数据表的基本操作如下。

    2.1 创建数据表:

    在创建之前需要指定使用的数据库:

    use <数据库名>;
    

    然后创建数据表:

    create table <数据表名>(字段1名 字段1类型,字段2名 字段2类型,...);
    

    数据表的字段可以有多个,使用逗号隔开即可。

    在创建数据表之前,先来看看MySQL的数据类型:

    • 数值类型

      整数类型:tinyint,smallint,mediumint,int/integer,bigint,所占字节大小分别为:

      1、2、3、4、8。

      小数类型:float,double,单精度和双精度分别占4、8字节。还有一种比较特殊的小数类型:decimal,用法:decimal(M,D),占用字节数由M和D决定,如果M>D,为M+2否则为D+2。decimal(M,D)表示整数部分占M-D位,小数部分为D占D位,如decimal(3,2)表示小数部分保留两位,多余的会四舍五入,整数部分保留3-2=1位,插入数值不对会报错。

    • 日期和时间类型

      date:日期,格式:2020-01-01(年-月-日),范围:1000-01-01/9999-12-31;

      time:时间,格式:12:10:52(时-分-秒),范围: ‘-838:59:59’/‘838:59:59’;

      year:年份,格式:2020,范围:1901/2155;

      datetime:日期+时间:2020-01-01 12:10:52,范围:1000-01-01 00:00:00/9999-12-31 23:59:59;

      timestamp:时间戳,与上面的datetime类似,占用4字节。

      注:日期和时间类型都是字符串格式的,插入时要用双引号,如:

      ​ insert into test(Date,Time) values (“2020-01-01 12:10:59”,“2020-06-01 12:10:59”);

    • 字符串类型

      常用的两种:

      char:定长字符串,大小:0-255字节;

      varchar:变长字符串,大小:0-65535字节;

    创建数据表实例:

    在student数据库中创建一个学生信息表,包含字段如下,用于记录学生成绩。

    学号id:数值类型,宽度为5;

    姓名name:字符类型,长度不固定;

    成绩score:数值类型,0~100;

    出生日期date:日期类型,年月日;

    create table info(id int(5) not null, name varchar(5) not null,score int(3) not null, birthday date not null);
    

    not null是约束条件,表示不能为空。int(5)表示宽度为5,varchar(5)也是同样的,表示字符串最大长度为5。

    image-20200619110826746

    2.2 查看数据表

    查看所有数据表:

    show tables;
    

    查看某个数据表的详细结构:

    desc <表名>;
    

    2.3 修改数据表

    使用alter命令可以对数据表的字段结构进行添加删除和修改。

    • 修改字段结构:

    添加一个字段使用add子句:

    alter table table_name add <新字段> <新字段类型>;
    

    创建一个新的字段:

    image-20200619111909688

    删除字段加上drop子句:

    alter table table_name drop <字段名称>;
    

    删除上面的字段:

    image-20200619112407279

    使用change子句修改当前存在的字段:

    alter table  table_name change <旧字段> <新字段> <新字段类型>;
    

    例如,创建一个新的字段old(int),修改为new(char):

    image-20200619113216032
    • 修改表名

      使用rename子句可以重命名数据表名,格式如下:

      alter table <旧数据表名> rename <新数据表名>;
      

      例如:
      image-20200620155243097

    2.4 删除数据表

    使用drop命令进行删除:

    drop table <表名>;
    

    3.数据表记录的插入、查询、删除

    3.1 插入记录

    插入数据到数据表,使用insert语句,基本格式如下:

    insert into <数据表名>(field1, field2,...fieldN )
                           values
                         (value1, value2,...valueN );
    

    fieldN是待插入的字段,valueN是对应前面字段N的值。

    向前面的学生信息表中插入一组记录:

    insert into info(id,name,score,birthday) values (10001,"Tom",98,"1999-06-06");
    
    image-20200619124234890

    还可以一次插入多条记录,每条记录之间使用逗号进行隔开,使用格式:

    insert into table_name(field1, field2,...fieldN)  
    		values
    		(valueA1,valueA2,...valueAN),
    		(valueB1,valueB2,...valueBN),
    		(valueC1,valueC2,...valueCN)......;
    

    例如:

    image-20200619125352685

    单独插入某一个或几个字段的列也是可以的,如:

    3.2 查询记录

    查询使用select语句,前面已经使用过,基本格式:

    SELECT colum1_name,colum2_name,..,columN_name FROM table_name;
    

    根据需要查询所需字段,如:

    image-20200620151633811

    使用通配符*查询所有字段内容,前面已经举例。

    可以配合where子句进行条件查询,如:

    image-20200620152150356

    3.3 修改记录

    ​ 修改数据表数据记录可使用update语句,基本格式如下:

    UPDATE table_name SET field1=new-value1, field2=new-value2 
    [WHERE Clause];
    

    一般配合where子句进行条件匹配修改数据记录,使用示例:

    修改Tom的成绩为100:

    image-20200620152814634

    3.4 删除记录

    删除数据记录可使用delete语句,基本格式:

    DELETE FROM table_name [WHERE Clause];
    

    同样使用where子句进行匹配删除,例如通过id匹配删除July的记录:

    image-20200620153715871
    展开全文
  • 数据结构(C++)有关练习题

    热门讨论 2008-01-02 11:27:18
    内容及步骤: 1、 设计一个图类,采用临接法进行存储,该图每个结点数据类型类模板模板参数进行定义(注:需先设计一个结点类Node); 2、 为该类分别设计一个实现深度优先搜索和广度优先搜索成员...
  •  本书是一本关于oracle database 9i、10g 和11g 数据库体系结构的权威图书,涵盖了所有重要的oracle 体系结构特性,包括文件、内存结构和进程,锁和闩,事务、并发和多版本,和索引,数据类型,分区和并行,以及...
  • "文档树"在前面第二章我们已经提到过,它是文档元素分级结构的形象表示。一个文档结构树包含根元素,根元素是最顶级的元素,(就是紧接着XML声明语句后的第一个元素)。看例子: <filelist> <title>... ...
  • Oraclet中触发器

    2011-06-04 21:58:17
    (2)触发器建立在一级,它与特定数据修改事件相对应。 触发器类型 触发器在数据库里以独立对象存储,它与存储过程不同是,存储过程通过其它程序来启动运行或直接启动运行,而触发器是由一个事件来启动...
  • finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法, 可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 24、...
  • 出处:风流的CG网络日志 时间:Mon, 28 Aug 2006 07:24:34 +0000 ...switch是对多重if-elseif-else结构的最好的替换: switch ($i) { case 0: print "i equals 0"; case 1: print "i equals 1"; case 2: print "i ...
  • 8. 用SQL语言ALTER语句修改表结构; a) STUDENT表中SNO设为非空和唯一; b) STUDENT表中增加一个字段SBIRTH,类型设置为日期时间类型,增加一个ADDRESS字段,类型为文本(字符); c) 删除STUDENT表中ADDRESS字段; d...
  •  本书是一本关于Oracle 9i & 10g数据库体系结构的权威图书,涵盖了所有最重要的Oracle体系结构特性,包括文件、内存结构和进程,锁和闩,事务、并发和多版本,和索引,数据类型,以及分区和并行,并利用具体的...
  • 你必须知道495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    2.17 C语言中有和Pascal的with等价的语句吗? 2.18 既然数组名可以用作数组的基地址,为什么对结构不能这样? 2.19 程序运行正确,但退出时却“coredump”(核心转储)了,怎么回事? 联合 2.20 结构和联合有...
  • 各种编程语言特点

    2013-12-09 15:24:13
    * 代码的表达能力,也就是简单性,能用最少的语句和单词实现同样的功能。 * 代码的结构性,如函数、模块、类。 语言功能的强大从下面几点来说: * 是否拥有大量的库支持。这是最重要的,要求编写任何功能的程序都有...
  • 将数据源列映射到数据集数据列:提供有关如何建立和修改和数据集表的列名之间映射说明。 预览数据适配器结果:提供有关测试数据适配器填充数据集方式说明。 数据连接 与 ADO 早期版本和其他数据...
  • 随着博客人数增加, Blog 作为一种新生活方式、新工作方式、新学习方式已经被越来越多人所接受,并且在改变传统网络和社会结构:网络信息不再是虚假不可验证,交流和沟通更有明确选择和方向性,单一...
  • 《你必须知道495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    2.17 C语言中有和Pascal的with等价的语句吗? 29 2.18 既然数组名可以用作数组的基地址,为什么对结构不能这样? 29 2.19 程序运行正确,但退出时却“core dump ”(核心转储)了,怎么回事? 29 联合 30 2.20...
  • finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 16、sleep...
  • 2.17 C语言中有和Pascal的with等价的语句吗? 29 2.18 既然数组名可以用作数组的基地址,为什么对结构不能这样? 29 2.19 程序运行正确,但退出时却“core dump ”(核心转储)了,怎么回事? 29 联合 30 2.20...
  • (一)、非Access数据库的新建及库结构的修改VB专业版中的数据库存取对象变量可以分为两类,一类用于数据库结构的维护和管理,另一类用于数据的存取。其中表示数据库结构时可以使用下面的对象: DataBase、TableDef...
  • 章讨论其他形式,包括数组(存储多个同类型值)、结构(存储多个不同类型值)、指针(标识内存位置) 。读者还将学习如何创建和存储文本字符串及如何使用C—风格字符数组和C抖string类来处理文本输入和 输出。最后,...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 164
精华内容 65
关键字:

下面表示修改表结构的语句是