zoukankan      html  css  js  c++  java
  • 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 约束名

  • 相关阅读:
    算法训练 表达式计算
    基础练习 十六进制转十进制
    基础练习 十六进制转十进制
    基础练习 十六进制转十进制
    New ways to verify that Multipath TCP works through your network
    TCP的拥塞控制 (Tahoe Reno NewReno SACK)
    Multipath TCP Port for Android 4.1.2
    How to enable ping response in windows 7?
    NS3
    Multipath TCP Port for Android
  • 原文地址:https://www.cnblogs.com/bedfly/p/12333921.html
Copyright © 2011-2022 走看看