SQL练习题题目
基本语法
*********************************************************************************************************
1. 打印员工号为186的员工的last_name值
declare
v_last_name employees.last_name%type;
begin
select last_name into v_last_name
from employees
where EMPLOYEE_ID=186;
dbms_output.put_line(v_last_name);
end;
----------------------------------------------------------
2. 打印员工号为186的员工的last_name,email,salary,job_id的值
declare
v_last_name employees.last_name%type;
v_email employees.email%type;
v_salary employees.salary%type;
v_job_id employees.job_id%type;
begin
select last_name,email,salary,job_id
into v_last_name,v_email,v_salary,v_job_id
from employees
where EMPLOYEE_ID=186;
dbms_output.put_line(v_last_name);
dbms_output.put_line(v_email);
dbms_output.put_line(v_salary);
dbms_output.put_line(v_job_id);
end;
----------------------------------------------------------------
记录类型
----------------------------------------------------------------
3.1 自定义记录类型,包括:姓名、员工号。给姓名、员工号赋值,并打印输出
declare
-- 定义记录的类型
type test_rec is record(
name varchar2(10),
id number(4)
);
v_record test_rec; --定义record类型的变量
begin
-- 对变量赋值
v_record.name :='tom';
v_record.id :=123;
dbms_output.put_line(v_record.name||','||v_record.id);
end;
3.2 自定义记录类型,打印员工号186的员工的last_name, email, salary, job_id
declare
-- 定义记录的类型
type test_rec is record(
last_name varchar2(30),
email varchar2(30),
salary number(8,2),
job_id varchar(10)
);
employees_record test_rec; --定义record类型的变量
begin
-- 对变量赋值
select last_name,email,salary,job_id
into employees_record.last_name,
employees_record.email,
employees_record.salary,
employees_record.job_id
from employees
where EMPLOYEE_ID=186;
dbms_output.put_line(employees_record.last_name
||','||employees_record.email
||','||employees_record.salary
||','||employees_record.job_id
);
end;
4. 定义一个记录类型,并使用 %type 定义变量,动态的获取数据的声明类型,打印员工号186的员工的last_name, email, salary, job_id
declare
-- 定义记录的类型
type test_rec is record(
last_name employees.last_name%type,
email employees.email%type,
salary employees.salary%type,
job_id employees.job_id%type
);
employees_record test_rec; --定义record类型的变量
begin
-- 对变量赋值
select last_name,email,salary,job_id
into employees_record.last_name,
employees_record.email,
employees_record.salary,
employees_record.job_id
from employees
where EMPLOYEE_ID=186;
dbms_output.put_line(employees_record.last_name
||','||employees_record.email
||','||employees_record.salary
||','||employees_record.job_id
);
end;
5. 使用 %rowtype ,打印员工号186的员工的全部信息
declare
v_employees employees%rowtype; --定义record类型的变量
begin
-- 对变量赋值
select *
into v_employees
from employees
where EMPLOYEE_ID=186;
dbms_output.put_line(v_employees.last_name
||','||v_employees.email
||','||v_employees.salary
||','||v_employees.job_id
);
end;
----------------------------------
6.1 使用赋值符号位变量进行赋值,通过变量实现查询186员工的全部信息
declare
type dep_table_type is table of employees%rowtype;
my_dep_table dep_table_type :=dep_table_type();
begin
my_dep_table.extend(5);
for i in 1..5 loop
select * into my_dep_table(i)
from employees
where EMPLOYEE_ID=186;
end loop;
dbms_output.put_line(my_dep_table.count());
dbms_output.put_line(my_dep_table(1).EMPLOYEE_ID
);
dbms_output.put_line(my_dep_table(1).FIRST_NAME
);
dbms_output.put_line(my_dep_table(1).LAST_NAME
);
dbms_output.put_line(my_dep_table(1).PHONE_NUMBER
);
dbms_output.put_line(my_dep_table(1).HIRE_DATE
);
dbms_output.put_line(my_dep_table(1).JOB_ID
);
dbms_output.put_line(my_dep_table(1).SALARY
);
dbms_output.put_line(my_dep_table(1).COMMISSION_PCT
);
dbms_output.put_line(my_dep_table(1).MANAGER_ID
);
dbms_output.put_line(my_dep_table(1).DEPARTMENT_ID
);
end;
-------------------
6.2 通过变量实现DELETE、INSERT、UPDATE等操作
declare
v_empno number(4) :=8889;
v_ename varchar2(20) := 'zhangsan';
begin
insert into emp(empno,ename,hiredate) values(v_empno,v_ename,to_date('2019-04-22','yyyy-mm-dd'));
--delete from emp where empno=v_empno;
--update emp set ename='张三' where empno=v_empno;
commit;
end;
补充:使用嵌套表类型,查询部门号在110-200之间的全部部门信息
declare
type dep_table_type is table of departments%rowtype;
my_dep_table dep_table_type :=dep_table_type();
begin
my_dep_table.extend(10);
for i in 1..10 loop
select * into my_dep_table(i)
from departments
where department_id=100+10*i;
end loop;
dbms_output.put_line(my_dep_table.count());
dbms_output.put_line(my_dep_table(1).department_id
);
dbms_output.put_line(my_dep_table(2).department_id
);
dbms_output.put_line(my_dep_table(3).department_id
);
dbms_output.put_line(my_dep_table(4).department_id
);
dbms_output.put_line(my_dep_table(5).department_id
);
dbms_output.put_line(my_dep_table(6).department_id
);
dbms_output.put_line(my_dep_table(7).department_id
);
dbms_output.put_line(my_dep_table(8).department_id
);
dbms_output.put_line(my_dep_table(9).department_id
);
dbms_output.put_line(my_dep_table(10).department_id
);
SQL练习题题目的更多相关文章
- 50道sql练习题和答案
最近两年的工作没有写过多少SQL,感觉水平下降十分严重,网上找了50道练习题学习和复习 原文地址:50道SQL练习题及答案与详细分析 1.0数据表介绍 --1.学生表 Student(SId,Snam ...
- SQL练习题汇总(Sqlserver和Mysql版本)
所需表及数据执行脚本: CREATE TABLE STUDENT (SNO ) NOT NULL, SNAME ) NOT NULL, SSEX ) NOT NULL, SBIRTHDAY DATET ...
- 面试题: 数据库 sql优化 sql练习题 有用 学生表,课程表,成绩表,教师表 练习
什么是存储过程?有哪些优缺点? 什么是存储过程?有哪些优缺点? 存储过程就像我们编程语言中的函数一样,封装了我们的代码(PLSQL.T-SQL). 存储过程的优点: 能够将代码封装起来 保存在数据库之 ...
- 50道SQL练习题及答案与详细分析!!!
以前在学校还没有很认真地意识到,现在到了企业才发现sql是那么的重要,看到网上有很多的sql 练习题,特地拿来练练手! 数据表介绍 --1.学生表 Student(SId,Sname,Sage,Sse ...
- 50道SQL练习题及答案与详细分析(MySQL)
50道SQL练习题及答案与详细分析(MySQL) 网上的经典50到SQL题,经过一阵子的半抄带做,基于个人理解使用MySQL重新完成一遍,感觉个人比较喜欢用join,联合查询较少 希望与大家一起学习研 ...
- SQL练习题完整(做完你就是高手)
SQL 练习题答案 一.补充作业一. 设有三个关系: S(SNO, SNAME, AGE, SEX,Sdept) SC(SNO, CNO ...
- j接近50道经典SQL练习题,附建表SQL解题SQL
说明 本文章整理了47道常见sql联系题,包括建表语句,表结构,习题列表,解题答案都涵盖在本文章内.文末提供了所用SQL脚本下载链接.所有解题答案都是本人自己写的,广大读者如果在阅读使用中,有任何问题 ...
- 几道经典的SQL笔试题目
几道经典的SQL笔试题目(有答案) (1)表名:购物信息 购物人 商品名称 数量 A 甲 2 B 乙 ...
- 很不错的sql练习题(select)
创建表和输入数据 CREATE TABLE STUDENT (SNO VARCHAR(3) NOT NULL, SNAME VARCHAR(4) NOT NULL, SSEX VARC ...
随机推荐
- qt+vs2017环境下XIMEA相机库的配置
从第一篇博客出来之后就没再更新过博客,这一次再更新博客的时候已经是换了项目了,现在在搞双目视觉方面.刚开始接触这一方面,前几天一直在研究相机原本的库函数的调用问题 网上这一方面的很少,而且很多都是在u ...
- gittalk报错Error
最近通过github和jekyll搭了一个博客,申请使用了gittalk的评论. 但是博客的页面一直报Error:Not found,如下 发现是gittalk中的信息填写错了,name随便写:Hom ...
- 基于python语言的tensorflow的‘端到端’的字符型验证码识别源码整理(github源码分享)
基于python语言的tensorflow的‘端到端’的字符型验证码识别 1 Abstract 验证码(CAPTCHA)的诞生本身是为了自动区分 自然人 和 机器人 的一套公开方法, 但是近几年的 ...
- Scanner类详解
Scanner类用于获取键盘输入(是一个基于正则表达式的文本扫描器),它可以从文件.字符串.输入流中解析出基本类型值和字符串值.Scanner类提供了多个构造器,不同的构造器可以接收文件.字符串和输入 ...
- 《深入理解Java虚拟机》-----第8章 虚拟机字节码执行引擎——Java高级开发必须懂的
概述 执行引擎是Java虚拟机最核心的组成部分之一.“虚拟机”是一个相对于“物理机”的概念 ,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器.硬件.指令集和操作系统层面上的,而 ...
- .net 配置swagger
第一步: 在nuget.org中查找Swashbuckle并下载 在nuget.org中查找Swagger.net.UI,并下载 第二步: 下载完之后,App_Start多了三个文件 Swagger. ...
- 在ASP.NET Core中构建路由的5种方法
原文链接 :https://stormpath.com/blog/routing-in-asp-net-core 在ASP.NET Core中构建路由的5种方法 原文链接 :https://storm ...
- 关于PHP打开之后找不到数据库问题的记录
昨天发现了一个奇怪的问题,一直正常使用的某个网站打不开了,这个网站是PHP写的,数据库用的my sql.打开之后就提示密码错误,无法正常打开页面. 由于平时基本上没用过my sql,按照使用sql s ...
- SpringCloud-config分布式配置中心
为什么要统一管理微服务配置? 随着微服务不断的增多,每个微服务都有自己对应的配置文件.在研发过程中有测试环境.UAT环境.生产环境,因此每个微服务又对应至少三个不同环境的配置文件.这么多的配置文件,如 ...
- 原生js实例对象方法
Array中的方法 ☞ toString() // 把数组转换为字符串,使用逗号分隔☞ valueOf() // 返回数组对象本身 ☞ 栈方法(先进后出)ary.push() // 该方法有一个返回值 ...