zoukankan      html  css  js  c++  java
  • 数据表的基本操作

    1. SQL语句
    1.1. CREATE语句
    创建BOOKINFO表:
    CREATE TABLE BOOKINFO
    (
    BOOKID NUMBER ,
    BOOKNAME CHAR ,
    PUBLISH VARCHAR2(20),
    PUBDATE VARCHAR2(20),
    PRICE DECIMAL(7,2) DEFAULT 0.0,
    AUTHOR CHAR,
    STORE INT DEFAULT 0 NOT NULL,
    READER NUMBER,
    REMARKS VARCHAR2(50)
    );
    1.2. 修改用户密码
    ALTER USER SYSTEM BY IDENTIFIED BY ROOT123;
    ALTER USER SYSTEM ACCOUNT UNLOCK;
    GRANT CONNECT TO SYSTEM IDENTIFIED BY ROOT123;
    1.3. 查看当前用户表
    SHOW USER;
    SELECT TABLE_NAME FROM TABS;
    SELECT TABLE_NAME FROM USER_TABLES;
    SELECT TNAME FROM TAB;
    1.4. 约束
    1、约束
    约束用于确保数据库数据满足特定的商业规则。在Oracle中,约束包括:not null、unique、primary key, foreign key和check五种。
    A、not null(非空)
    如果在列上定义了not null,那么当插入数据时,必须为列提供数据。
    B、unique(唯一)
    当定义了唯一约束后,该列值是不能重复的,但是可以为null。
    C、primary key(主键)
    用于唯一的标识表行的数据,当定义主键约束后,该列不但不能重复而且不能为NULL。一张表最多只能有一个主键,但是可以由多个unique约束。
    D、foreign key(外键)
    用于定义主表和从表之间的关系,外键约束要定义在从表上,主要则必须具有主键约束或是unique约束,当定义外键约束后,要求外键列数据必须在主表的主键列存在或是为NULL。
    E、check
    用于强制行数据必须满足的条件,假定在sal列上定义了check约束,并要求sal列值在1000~2000之间,如果不在1000~2000之间就会提示出错。

    1.4.1. 检查约束
    创建语法:
    CONSTRAINT constraint_name CHECK (condition)
    Condition:用来唯一标识表中一个列,一个表中的主键约束只能有一个,但是可以在一个主键约束中包含多个列;
    CREATE TABLE BOOKINFO
    (
    BOOKID NUMBER ,
    BOOKNAME CHAR ,
    PUBLISH VARCHAR2(20),
    PUBDATE VARCHAR2(20),
    PRICE DECIMAL(7,2) DEFAULT 0.0,
    AUTHOR CHAR,
    STORE INT DEFAULT 0 NOT NULL,
    READER NUMBER,
    REMARKS VARCHAR2(50),
    CONSTRAINT CK_PRICE CHECK (PRICE>= 0 AND PRICE<=100)
    );
    1.4.2. 非空约束表
    给字段后面添加NOT NULL;
    CREATE TABLE BOOKINFO_01
    (
    BOOKID NUMBER NOT NULL ,
    BOOKNAME CHAR NOT NULL,
    PUBLISH VARCHAR2(20),
    PUBDATE VARCHAR2(20),
    PRICE DECIMAL(7,2) DEFAULT 0.0,
    AUTHOR CHAR,
    STORE INT DEFAULT 0 NOT NULL,
    READER NUMBER,
    REMARKS VARCHAR2(50)
    );
    1.4.3. 唯一约束的表
    语法:
    CONSTRAINT constraint_name UNIQUE(colume_name)
    CREATE TABLE BOOKINFO_02
    (
    BOOKID NUMBER NOT NULL ,
    BOOKNAME CHAR NOT NULL,
    PUBLISH VARCHAR2(20),
    PUBDATE VARCHAR2(20),
    PRICE DECIMAL(7,2) DEFAULT 0.0,
    AUTHOR CHAR,
    STORE INT DEFAULT 0 NOT NULL,
    READER NUMBER,
    REMARKS VARCHAR2(50),
    CONSTRAINT UN_BOOKNAME UNIQUE(BOOKNAME)
    );
    1.4.4. 外键约束表
    语法:
    CONSTRAINT constraint_name FOREIGE KEY(colume_name)
    REFERENCE table_name(colume_name)
    关键字说明:
    CONSTRAINT:创建约束的关键字
    FOREIGE KEY:外键约束的关键字
    REFERENCE:引用外表的关键字
    table_name(colume_name):引用外表(父表),colume_name表示该表的列
    注意:主外键字段的数据类型必须要相同;
    --创建父表
    CREATE TABLE PUBLISHINFO
    (
    PUBLISHID VARCHAR2(20) PRIMARY KEY,
    PUBLISHNAME VARCHAR2(30)
    );
    --创建字表
    CREATE TABLE BOOKINFO_03
    (
    BOOKID NUMBER NOT NULL ,
    BOOKNAME CHAR NOT NULL,
    PUBLISH VARCHAR2(20),
    PUBDATE VARCHAR2(20),
    PRICE DECIMAL(7,2) DEFAULT 0.0,
    AUTHOR CHAR,
    STORE INT DEFAULT 0 NOT NULL,
    READER NUMBER,
    REMARKS VARCHAR2(50),
    CONSTRAINT FK_PUBLISH FOREIGN KEY(PUBLISH) REFERENCES PUBLISHINFO(PUBLISHID)
    );
    1.4.5. 含多个约束的表
    CREATE TABLE BOOKINFO_05
    (
    BOOKID NUMBER NOT NULL ,
    BOOKNAME CHAR NOT NULL,
    PUBLISH VARCHAR2(20),
    PUBDATE VARCHAR2(20),
    PRICE DECIMAL(7,2) DEFAULT 0.0,
    AUTHOR CHAR,
    STORE INT DEFAULT 0 NOT NULL,
    READER NUMBER,
    REMARKS VARCHAR2(50),
    CONSTRAINT UN_BOOKNAME_05 UNIQUE(BOOKNAME),
    CONSTRAINT CK_PRICE_05 CHECK (PRICE <= 100)
    )
    1.5. 修改表
    1.5.1. 修改表结构
    语法:
    ALTER TABLE table_name ADD colume_name | MODIFY colume_name | DROP COLUME colume_name
    --ADD
    ALTER TABLE BOOKINFO ADD ISBN VARCHAR2(10);
    --MODIFY
    ALTER TABLE BOOKINFO MODIFY PUBLISH VARCHAR2(80) NOT NULL;
    --DROP
    ALTER TABLE BOOKINFO DROP COLUMN ISBN;
    1.5.2. 给表添加约束(主键)
    语法:
    ALTER TABLE table_name ADD colume_name CONSTRAINTS constraint_name PRIMARY KEY(colume_name)
    --添加主键
    ALTER TABLE BOOKINFO ADD CONSTRAINT PK_BOOKINFO PRIMARY KEY (BOOKID);
    --删除主键
    ALTER TABLE BOOKINFO DROP CONSTRAINT PK_BOOKINFO;
    1.6. 表
    1.6.1. 删除表
    语法:
    DROP TABLE <table_name>;
    DROP TABLE BOOKINFO_05;
    1.6.2. 清空表内容
    语法:
    DELETE FROM table_name;
    DELETE FROM BOOKINFO_02;
    语法:(截断表)
    TRUNCATE TABLE table_name;
    TRUNCATE TABLE BOOKINFO_03;
    语法
    delete from aa
    truncate table aa
    区别
    1.delete from后面可以写条件,truncate不可以。
    2.delete from记录是一条条删的,所删除的每行记录都会进日志,而truncate一次性删掉整个页,因此日至里面只记录页释放,简言之,delete from更新日志,truncate基本不,所用的事务日志空间较少。
    3.delete from删空表后,会保留一个空的页,truncate在表中不会留有任何页。
    4.当使用行锁执行DELETE语句时,将锁定表中各行以便删除。truncate始终锁定表和页,而不是锁定各行。
    5.如果有identity产生的自增id列,delete from后仍然从上次的数开始增加,即种子不变,而truncate后,种子会恢复初始。
    6.truncate不会触发delete的触发器,因为truncate操作不记录各个行删除。
    总结
    1.truncate和 delete只删除数据不删除表的结构(定义) drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态。
    2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger。
    3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动显然drop语句将表所占用的空间全部释放truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage;truncate会将高水线复位(回到最开始)。
    4.速度,一般来说: drop> truncate > delete。
    5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及。
    6.使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大,想删除表,当然用drop想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。
    1.6.3. 重命名表
    语法:
    RENAME oldname TO newname;

  • 相关阅读:
    XAF 有条件的对象访问权限
    XAF 顯示 UnInplace Report(設置自定義條件顯示報表,不是根據選擇ListView記錄條件顯示報表)
    XAF 如何自定义PivotGrid单元格显示文本?
    XAF 如何布局详细视图上的按钮
    XAF How to set size of a popup detail view
    XAF Delta Replication Module for Devexpress eXpressApp Framework
    XAF 帮助文档翻译 EasyTest Basics(基础)
    XAF 用户双击ListView记录时禁止显示DetailView
    XAF How to enable LayoutView mode in the GridControl in List Views
    XAF 如何实现ListView单元格批量更改?
  • 原文地址:https://www.cnblogs.com/qlwang/p/6660379.html
Copyright © 2011-2022 走看看