qlsql 编程

来源:互联网 发布:艾米莉狄金森 知乎 编辑:程序博客网 时间:2024/05/17 07:53

Select e.empno,e.ename,m.empno,m.enmae
From
Emp emp e,emo m
where
e.mgr=m.empno;

1.自连表查询 行变列

select empno,ename from emp;
select rownum,empno,ename from emp;

2.rownum:伪列

select rownum,empno,ename from emp where rownum<=5; ##true
select rownum,empno,ename from emp where rownum<=5 ##fault

3.分页:1-5

select * from(
select rownum r,empno,ename from emp
where rownum<=5
)t
where t.r>0;

分页:6-10

select * from(
select rownum r,empno,ename from emp
where rownum<=10
)t
where t.r>5;

4.使用 max/min 查询最高工资

select max(sal) from emp;
select min(sal) from emp;

5.使用 avg 查询平均工资

select avg(sal) from emp;

6.使用 sum 查询工资总和

select sum(sal) from emp;

7.统计员工人数

select count(*) from emp;

8.模糊查询

select ename from emp where ename like ‘%S%’;

9. 查询系统时间 (dual:模式表)

select sysdate from dual;

10.切换用户

conn holly/sys;

select * from classes;

出现关联表的时候,先删除从表,再删除主表

11.创建用户

create table student(
sid number(10) not null primary key,
sname varchar2(20) not null,
studytime date,
score number(10,2) not null
);

12.创建序列

create sequence seq_student;

14.第一个 PL/SQL 块

set serverout on
– 声明部分
declare
—— 定义变量
v_name varchar2(20);
– 执行部分
begin
– 执行赋值操作
v_name:=’holly’;
–打印输出
dbms_output.put_line(‘v_name’||v_name)
end;
/

conn scott/tiger;

15.查询 emp 表中id 为7369 的ename 值,并赋值给 v_ename变量,并打印输出

set serverout on
declare
v_ename emp.ename%type
begin
select ename into v_ename from emp where empno=7369
dbms_output.put_line(‘7369的员工姓名位:’||v_ename);
end;
/

16.查询 emp 表中id 为XXXX 的ename 值,并赋值给 v_ename变量,并打印输出

set serverout on
declare
– Scanner input = new Scanner();
– int p_empno = input.nextInt();
– int v_emppno = p_empno;

v_emppno emp.empno%type:=&p_empno; #&:接受参数的固定写法v_ename emp.ename%type;

begin
select ename into v_ename from emp where empno=v_empno;
dbms_output.put_line(v_empno||’的员工姓名为:’||v_ename);
end;
/

17.根据编号查询许多字符串

set serverout on
declare
–用%TYPE 类型定义与表相配的字段
TYPE T_Recor IS RECORD(
T_no emp.empno%TYPE,
T_name emp.ename%TYPE,
T_sal emp.sal%TYPE);
–声明接受数据的变量
v_emp T_Record;
v_emppno emp.empno%type:=&p_empno;
BEGIN
select empno,ename,sal INTO v_emp FROM emp WHERE
empno=v_emppno;
DBMS_OUTPUT.PUT_LINE
(TO_CHAR(v_emp.t_no)||chr(10)||v_emp.t_name||chr(10)||
TO_CHAR(v_emp.t_sal));
END;
/

18.%ROWTYPE 返回行数据

set serverout on
declare
v_empno emp.empno%TYP:=&no;
rec emp%ROWTYPE;
BEGIN
SELECT * INTO rec FROM emp WHERE empno=v_empno;
DBMS_OUTPUT.PUT_LINE(‘姓名:’||rec.ename||’工资’||rec.sal
||’工作时间:’||rec.hiredate);
END;
/

19.insert

insert into student
(seq_student.nextval,’holly’,
to_date(‘2015-05-06’,’yyyy-MM-dd’),78.8);
commit;

20,插入一条记录并显示

set serverout on
DECLARE
ROW_id ROWID;
info VARCHAR2(40);
BEGIN
UPDATE dept SET DNAME=’财务室’ WHERE DEPTNO=10
RETURNING rowid,dname||’:’||deptno||’:’
||loc
INTO row_id,info;
DBMS_OUTPUT.PUTLINE(‘ROWID:’||row_id);
DBMS_OUTPUT.PUTLINE(info);
END;
/

原创粉丝点击