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 约束名

原文地址:https://www.cnblogs.com/bedfly/p/12333921.html