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 ...
随机推荐
- iOS屏幕适配 支持新手机 iPhone XR iPhone XS 超简单
随着苹果爸爸发布了 超牛叉的iPhone iPhone X .iPhone XR.iPhone XS .iPhone XS Max.开发者的适配工作要开始了. 停,
- 【XSS】对抗蠕虫 —— 如何让按钮不被 JS 自动点击
前言 XSS 自动点按钮有什么危害? 在社交网络里,很多操作都是通过点击按钮发起的,例如发表留言.假如留言系统有 XSS,用户中招后除了基本攻击外,还能进行传播 -- XSS 自动填入留言内容,并模拟 ...
- Java经典面试题+答案(全)
这套面试题主要目的是帮助那些还没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的朋友在笔试时更好地赢得笔试和面试. 1.一个".java"源文件中是否可以包括多 ...
- GBDT和XGBOOST算法原理
GBDT 以多分类问题为例介绍GBDT的算法,针对多分类问题,每次迭代都需要生成K个树(K为分类的个数),记为\(F_{mk}(x)\),其中m为迭代次数,k为分类. 针对每个训练样本,使用的损失函数 ...
- MySQL配置参数说明
MYSQL服务器my.cnf配置参数详解: 硬件:内存16G [client] port = 3306 socket = /data/mysql.sock [mysql] no-auto-rehash ...
- SQL慢查询测试实践
1.开启慢查询的目的 开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能. 2.设置mysql慢查询 方法一:全局变量设置(临时生效) ...
- docker~yml里使用现有网络
回到目录 我们在进行docker swarm部署高可用集群时,在yml文件里可能要配置一些服务,而这些服务可能要使用一些公用的数据库,这些数据库可能已经运行在某个容器里,而这些容器有自己的网络,doc ...
- Nginx反向代理后,java获取客户端真实IP地址
一般情况下,java获取客户端IP地址的方法为request.getRemoteAddr();但这只是在没有网关或者代理的情况下,如果客户端将请求发送到nginx,再由nginx进行反向代理到目标服务 ...
- 时间序列算法(平稳时间序列模型,AR(p),MA(q),ARMA(p,q)模型和非平稳时间序列模型,ARIMA(p,d,q)模型)的模型以及需要的概念基础学习笔记梳理
在做很多与时间序列有关的预测时,比如股票预测,餐厅菜品销量预测时常常会用到时间序列算法,之前在学习这方面的知识时发现这方面的知识讲解不多,所以自己对时间序列算法中的常用概念和模型进行梳理总结(但是为了 ...
- c# 制作正方形图片
using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D ...