• oracle知识点


    L查看缓冲区中的语句

    /执行

    save 目录 保存脚本文件

    get 目录

    ed 目录

    @路径

    show echo

    set echo on;

    foodback  超过6条显示行数

    initcap 首字母大写

    lower

    upper

    concat 把第一个字符川和第二个字符串连成一个

    substr (str,m,n) 把str从第m个开始截取n个字符

    instr  (列名|表达式,'字符串',【m】,【n】) 返回所给字符串的数字位置,从m开始,n表示出现的次数

    TRIM(【trailing】要去掉的字符 FROM 源字符串)

    replace(正文表达式,要搜索的字符串,替换字符串)

     数字型函数

    round(列名|表达式,n)四舍五入到小数点n位。

    TRUNC(列名|表达式,n)截取到小数点后n位。

    MOD(m,n)将m除以n并取余数。

    select sysdate-22/24 from dual; 减去22个小时

    日期函数

    MONTHS_BETWEEN(日期1, 日期2) 返回日期1和日期2之间的月数

    ADD_MONTHS(日期,n)函数是把n个月加到日期上

    NEXT_DAY(日期,字符串)返回下一个字符串(星期几)指定的日期。

    LAST_DAY返回该日期所在月的最后一天。

    不同数据类型之间的显式转换

    TO_CHAR(日期,‘fmt’)fmt为日期格式 DD/MM/YYYY   DY:用三个字母表示的星期几 MONTH, DAY:星期几的完整英文表示

    SP和TH 分别为数字的英文表示和数字的序数表示

    TO_CHAR(数字,‘fmt’)L:显式本地货币符号 MI:在数的右边显式减号  PR:把负数用尖括号括起来

    TO_NUMBER(字符串,【,‘fmt’】) 把字符串转换数字

    TO_DATE(字符串【,‘fmt’】) 转换日期

     HAVING 分组 得到的分组应用于分组的函数 满足条件的结果

    最好把having应用于group by之后

    分组函数的嵌套(只能嵌套两层)

    分组函数的控制问题

    除了COUNT(*)之外,其他分组函数都不处理NULL

    主键(primary key)某一列或某几列的集合,能唯一标任一行。

    实体完整性(Entity Integrity)主键不能包含空值(NULL)

    第一范式(1NF)

    1、所有的键属性(列)都已定义。
    2、没有任何重复组,每行每列交汇处可以且只能包含一个值,而不能包含一组值。

    3、所有的属性都依赖于主键。

    消除部分依赖:外键(foreign key)关系数据库表中的某一列或几列的组合,其值与另一个表中的某一列相匹配,或为NULL。

    引用完整性(Referential Integrity)

    1、外键必须为空或者有相匹配的项。

    2、外键可以没有相对应的键属性(列),但不可以有无效的项。

    第二范式(2NF)

    1、该表为第一范式(1NF)的表。

    2、该表不包含部分依赖。

    第三范式(3NF)

    1、该表为第二范式的表。

    2、该表不包含传递依赖。

    传递依赖(transitive dependency)指一个或多个属性(列)依赖于非主键的属性(列)。

    自连接   

    外连接:连接运算符(+),一定要放到一个表中,缺少响应信息的那一面。

    connect system/password

    ALTER TABLE 表名 ADD

    ALTER TABLE 表名 MODIFY

    ALTER TABLE 表名 DROP COLUMN 列名  从一个表中删除一行

    ALTER TABLE 表名 SET UNUSED [COLUMN] 列名 从一个表中把某一列置成无用(unused)

    RENAME 原表名  TO  新表名   改变对象的名称

    截断表和删除表

    TRUNCATE TABLE 表名    删除所有数据行,保留表结构   无法恢复

    DROP TABLE 表名      删除所有数据航和表结构、索引  无法恢复

     select * from cat;

    select INDEX_NAME,INDEX_TYPE,TABLE_NAME,UNIQUENESS from user_indexes;    查看索引

    select * from user_ind_columns;    查看索引列

    create index empcon_job_sal_idx on empcon(job,sal);    创建索引

    select * from user_ind_columns; 查看索引列

    COLUMN_POSITION 应该是同时创建索引的个数

    DML(Data Manipulation Language)数据操纵语言:

    适用范围:对数据库中的数据进行一些简单操作,如insert,delete,update,select等. 

    DDL(Data Definition Language)数据定义语言:

    适用范围:对数据库中的某些对象(例如,database,table)进行管理,如Create,Alter和Drop.

    当下列条件之一成立时,应该为表建立索引:

    1、表很大而且大多数的返回数据量很少(oracle推荐为小于总行数的2%~4%),因为如果返回数据量很大的话,就不如顺序的扫描这个表了。

    2、此列的取值范围很广,一般为随机分布。比如年龄

    3、一列或多列经常出现在where子句或连接条件中。

    4、表上的DML操作较少

    5、此列中包含大量的空值NULL

    6、此列不经常作为select语句中某个表达式的一部分。

    删除索引:DROP INDEX 索引名

    以&开始的替代变量

    set verify on;

    select empno,ename,sal,job,deptno from emp where job='&v_job';

    select ename,job,&&v_col from emp order by &v_col;

    undefind v_col;  取消变量

    使用DEFINE定义替代变量

    SQL> define v_clo;
    SP2-0135: 符号 v_clo 未定义
    SQL> define v_col=CLERK;
    SQL> l
      1  select ename,sal,job
      2  from emp
      3  where job='&v_col'
      4* order by sal
    SQL> /
    原值    3: where job='&v_col'
    新值    3: where job='CLERK'

    ENAME                       SAL JOB
    -------------------- ---------- ------------------
    SMITH                       800 CLERK
    JAMES                       950 CLERK
    ADAMS                      1100 CLERK
    MILLER                     1300 CLERK

    SQL> define v_job
    SP2-0135: 符号 v_job 未定义
    SQL> define v_col;
    DEFINE V_COL           = "CLERK" (CHAR)
    SQL> define
    DEFINE _DATE           = "23-2月 -20" (CHAR)
    DEFINE _CONNECT_IDENTIFIER = "test" (CHAR)
    DEFINE _USER           = "SCOTT" (CHAR)
    DEFINE _PRIVILEGE      = "" (CHAR)
    DEFINE _SQLPLUS_RELEASE = "1102000100" (CHAR)
    DEFINE _EDITOR         = "Notepad" (CHAR)
    DEFINE _O_VERSION      = "Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options" (CHAR)
    DEFINE _O_RELEASE      = "1102000100" (CHAR)
    DEFINE V_COL           = "CLERK" (CHAR)

    ACCEPT定义替代变量

    SQL> set line 150;
    SQL> l
      1  select ename,sal,job
      2  from emp
      3  where job=UPPER('&v_job')
      4* order by sal
    SQL> /
    原值    3: where job=UPPER('&v_job')
    新值    3: where job=UPPER('clerk')
    SQL> define v_job
    DEFINE V_JOB           = "clerk" (CHAR)
    SQL> undefine v_job;
    SQL> /
    输入 v_job 的值:  Clerk
    原值    3: where job=UPPER('&v_job')
    新值    3: where job=UPPER('Clerk')

    ACCEPT 变量名(存储传入值的变量名,如果不存在,自动创建) 【数据类型(数字型、日期型和字符型,字符型最大长度240字节)】【format 格式化模式(99,999.00或A28)【prompt 正文(在用户输入之前的系统提示)】【HIDE(系统不显示用户的输入值)】】

    第六章  数据的维护  包括数据操作语言DML和事务控制(Transaction Control)两大部分,

    DML只包含了INSERT、update和delete3个语句。

    INSERT

    insert into dept_dml(deptno,dname,loc) values(66,'美容','煤球胡同');

    select * from dept_dml;

    insert into dept_dml values(88,'','牛街');

    insert into dept_dml values(44,NULL,'安静大街');

    create table sales(code,name,salary,commission) as select empno,ename,sal,comm from emp;

    select * from sales;

    truncate table sales; 

    insert into sales(code,name,salary,commission)
    select empno,ename,sal,comm from emp where job like 'SALE%';

     insert into emp_dml(empno,ename,job,mgr,hiredate,sal,comm,deptno) values(&id,'&name','&job',7689,TO_DATE('&hiredate','YYYY MM DD'),666,77,88);

    save e:studyinsert

    oracle 系统的约束

    非空(not null)

    唯一(UNIQUE)在表中所定义的这列或者这些列的值都不能相同

    主键(primary key) 唯一的标识表中的每一行,用来维护一个表的实体完整性

    外键(Foreign key)用来维护从表和主表之间的引用完整性。

    条件约束(CHECK),表中每一行都要满足该约束条件。

    select owner,CONSTRAINT_NAME,TABLE_NAME    查询约束

    C:代表CHECK(条件约束)和NOT NULL约束

    P:代表Primary key  主键约束

    R:代表REFERENTIAL INTEGRITY,即Foreign key(外键约束)

    U:代表Unique (唯一约束)。

     约束类型:

    UK:UNIQUE KEY (唯一)约束

    PK:PRIMARY KEY (主键)约束

    FK:FOREIGN KEY(外键)约束

    CK:CHECK KEY (条件)约束

    NN:NOT NULL (非空)约束

    select * from user_constraints where table_name='DEPTCON';

    select * from user_cons_columns where table_name='DEPTCON';

    主键约束不允许插入NULL,唯一约束可以插入NULL;

    找到索引

    select * from user_indexes;

    select * from user_ind_columns;

    外键约束

    alter table empcon
    add constraint empcon_deptno_fk
    foreign key(deptno) references deptcon(deptno)

    外键约束对DML语句和DDL语句的影响

    1、在进行插入操作时,只有当操作是在子表或从表这一端时才会产生违反引用完整性(referential intergrity)的问题;当操作是在父表或主表端时则不会产生。

    2、在进行删除操作时,只有当操作时在父表或主表(parent table)这一端时才会产生违反引用完整性(referential intergrity)的问题;当操作时在子表或从表(chile table)端时则不会产生。

    3、在进行修改操作时,操作无论是在父表还是在子表端,都可能产生违反引用完整性的问题。

    4、在删除整个表时,只有当删除的是父表或主表时才会产生违反引用完整性的问题,当操作子表或从表时则不会。

    alter table empcon add constraint empcon_deptno_fk foreign key(deptno) references deptcon(deptno) on delete cascade;  如果删除主表deptcon中的记录会把从表中相关的记录全部删掉。

    alter table empcon
    add constraint empcon_deptno_fk
    foreign key(deptno) references deptcon(deptno) on delete set null;

    约束的维护

    关闭约束的命令:

    ALTER TABLE 表 disable constraint 约束名 【cascade】其中cascade子句用来关闭存在引用完整性关系的约束,disable子句即可以用在create table语句中,也可以用在ALTER TABLE 语句中。

    开启约束的 命令:

    ALTER TABLE 表 enable constraint 约束名

    删除约束

    ALTER TABLE 表 DROP CONSTRAINT 约束名

  • 相关阅读:
    OleView.exe:查看机器上的COM 组件。
    COM中导出GUID
    进程外组件以及进程间通信方式
    拼接多个 wchar_t *
    wstring to wchar_t*
    BSTR
    GetProcAddress 使用注意事项
    C++和.net的集合类对应
    COM的一些基本概念
    Error Lookup工具
  • 原文地址:https://www.cnblogs.com/bedfly/p/12333921.html
Copyright © 2020-2023  润新知