索引:提升查找数据的效率
用于提升数据查找效率的一个数据库对象
索引的创建对应着表中的列
--手动创建索引,给ename创建。说明:经常使用enmae做条件 create index emp_name on emp(ename)
创建索引的原则:
(1)经常用于where字句或作为连接条件的列
(2)所含数值范围比较大的列
(3)含有大量空值得列
(4)表比较大,但大部分查询返回的结果集小于总记录的2-4%
不需要创建索引:
(1)表很小
(2)很少在查询中出现的列
(3)查询结果大于表的2-4%
(4)频繁更新的表
plsq 编程:
例如:删除表中的数据,有条件删除。有两种方式
(1)在java程序中编写delete语句,把删除语句发送到数据库执行
(2)数据库直接写删除语句——函数deleteEmp
在java程序中,调用删除函数即可
例:
--plsq函数 declare v_ename varchar2(10) := '皮皮虾'; v_eno number(5,0); begin v_eno := 7878; dbms_output.put_line(v_ename || '的编号是:' || v_eno); end;
NVL(列,0),当指定的列为空时,用0替代
通过查询的方式赋值
--查询赋值 declare emp_id emp.empno%type; emp_name emp.ename%type; emp_wage emp.sal%type; begin emp_id := 7788; select ename,nvl(sal,0)+nvl(emp.comm,0) into emp_name,emp_wage from emp where empno=emp_id; dbms_output.put_line('姓名是: '||emp_name ||' '||'总薪资是: '||emp_wage); end; 输出、 姓名是: SCOTT 总薪资是: 3000
根据提示框插入数据
--提示框插入数据 declare v_deptno dept1.deptno%type; v_dname dept1.dname%type; v_local dept1.loc%type; begin v_deptno := &deno; v_dname := '&name'; v_local := '&loc'; insert into dept1 values(v_deptno,v_dname,v_local); end;
复制一条或多条数据到另一个表
--赋值一条数据到另一个表 declare emp_no emp.empno%type := &eno; begin insert into emp1 select * from emp where emp.empno = emp_no; end;
---恢复内容结束---
---恢复内容开始---
索引:提升查找数据的效率
用于提升数据查找效率的一个数据库对象
索引的创建对应着表中的列
--手动创建索引,给ename创建。说明:经常使用enmae做条件 create index emp_name on emp(ename)
创建索引的原则:
(1)经常用于where字句或作为连接条件的列
(2)所含数值范围比较大的列
(3)含有大量空值得列
(4)表比较大,但大部分查询返回的结果集小于总记录的2-4%
不需要创建索引:
(1)表很小
(2)很少在查询中出现的列
(3)查询结果大于表的2-4%
(4)频繁更新的表
plsq 编程:
例如:删除表中的数据,有条件删除。有两种方式
(1)在java程序中编写delete语句,把删除语句发送到数据库执行
(2)数据库直接写删除语句——函数deleteEmp
在java程序中,调用删除函数即可
例:
--plsq函数 declare v_ename varchar2(10) := '皮皮虾'; v_eno number(5,0); begin v_eno := 7878; dbms_output.put_line(v_ename || '的编号是:' || v_eno); end;
NVL(列,0),当指定的列为空时,用0替代
通过查询的方式赋值
--查询赋值 declare emp_id emp.empno%type; emp_name emp.ename%type; emp_wage emp.sal%type; begin emp_id := 7788; select ename,nvl(sal,0)+nvl(emp.comm,0) into emp_name,emp_wage from emp where empno=emp_id; dbms_output.put_line('姓名是: '||emp_name ||' '||'总薪资是: '||emp_wage); end; 输出、 姓名是: SCOTT 总薪资是: 3000
根据提示框插入数据
--提示框插入数据 declare v_deptno dept1.deptno%type; v_dname dept1.dname%type; v_local dept1.loc%type; begin v_deptno := &deno; v_dname := '&name'; v_local := '&loc'; insert into dept1 values(v_deptno,v_dname,v_local); end;
复制一条或多条数据到另一个表
--赋值一条数据到另一个表 declare emp_no emp.empno%type := &eno; begin insert into emp1 select * from emp where emp.empno = emp_no; end;
if分支判断
语法1:
IF 条件 THEN 语句1;
语句2;
END IF;
语法2:
IF 条件 THEN 语句序列1;
ELSE 语句序列 2;
END IF;
语法3:
IF 条件 THEN 语句;
ELSIF 语句 THEN 语句;
ELSE 语句;
END IF;
--输入员工编号,输出此人的薪资,与平均工资的比较结果 declare emp2_no emp2.empno%type := &eno; emp2_avgsal emp2.sal%type; emp2_sal emp2.sal%type; begin --得到平均工资 select avg(sal) into emp2_avgsal from emp2; --得到这个人的工资 select sal into emp2_sal from emp2 where emp2.empno = emp2_no; if emp2_avgsal < emp2_sal then dbms_output.put_line('低于平均工资'); else dbms_output.put_line('高于平均工资'); end if; end;
case then 语法
--输出每个人的名字。薪资,薪资级别 查询语句 select emp.ename,emp.sal, case when emp.sal < 1500 then '低' when emp.sal >1500 and emp.sal < 3000 then '中' when emp.sal > 3000 then '高' end case from emp;
--输入一个人的编号,输出薪资级别 declare emp_no emp.empno%type := &empno; emp_sal emp.sal%type; begin --查询这个人的工资 select sal into emp_sal from emp where emp.empno = emp_no; case when emp_sal < 1500 then dbms_output.put_line('低'); when emp_sal > 1500 and emp_sal < 3000 then dbms_output.put_line('中'); else dbms_output.put_line('高'); end case; end;
Loop 语法
语法1:
--loop循环 declare var_sal emp.sal%type; begin var_sal := 1; loop if var_sal > 200 then exit; end if; var_sal := var_sal +5; end loop; dbms_output.put_line(var_sal); end;
语法2:
输出1——100的和
declare var_num number := 1; var_sum number := 0; begin while var_num <= 100 loop var_sum := var_sum + var_num; var_num := var_num+1; end loop; dbms_output.put_line(var_sum); end;
语法3:for循环
declare var_sum number := 0; begin for i in 1..100 loop var_sum := var_sum + i; end loop; dbms_output.put_line(var_sum); end;