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
);

原文地址:https://www.cnblogs.com/zxrxzw/p/10754271.html

时间: 2024-10-26 01:33:43

SQL练习题题目的相关文章

经典SQL练习题

今天在网上找了几道经典的SQL练习题做了一下,虽然都不难,但是对打基础是很有好处的,在明白的基础上可以进一步做分析,来研究一下各种解法的优劣,甚至进行简单的优化..现在将题目和答案分享一下.我使用的是MYSQL 5.0,但是绝大部分都是标准SQL.表结构:CREATE TABLE STUDENT(SNO VARCHAR(3) NOT NULL, SNAME VARCHAR(4) NOT NULL,SSEX VARCHAR(2) NOT NULL, SBIRTHDAY DATETIME,CLASS

(转)经典SQL练习题

今天在网上找了几道经典的SQL练习题做了一下,虽然都不难,但是对打基础是很有好处的,在明白的基础上可以进一步做分析,来研究一下各种解法的优劣,甚至进行简单的优化..现在将题目和答案分享一下.我使用的是MySQL 5.0,但是绝大部分都是标准SQL.表结构:CREATE TABLE STUDENT(SNO VARCHAR(3) NOT NULL, SNAME VARCHAR(4) NOT NULL,SSEX VARCHAR(2) NOT NULL, SBIRTHDAY DATETIME,CLASS

基本SQL练习题--选课经典例题

为管理岗位业务培训信息,建立3个表: S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号.学员姓名.所属单位.学员年龄 C (C#,CN ) C#,CN 分别代表课程编号.课程名称 SC ( S#,C#,G ) S#,C#,G 分别代表学号.所选修的课程编号.学习成绩 1. 使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名 --实现代码: Select SN,SD FROM S Where [S#] IN( Select [S#] FROM C,SC Whe

50道SQL练习题及答案与详细分析!!!

以前在学校还没有很认真地意识到,现在到了企业才发现sql是那么的重要,看到网上有很多的sql 练习题,特地拿来练练手! 数据表介绍 --1.学生表 Student(SId,Sname,Sage,Ssex) --SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course(CId,Cname,TId) --CId 课程编号,Cname 课程名称,TId 教师编号 --3.教师表 Teacher(TId,Tname) --TId 教师编号,Tname

50道sql练习题和答案

最近两年的工作没有写过多少SQL,感觉水平下降十分严重,网上找了50道练习题学习和复习 原文地址:50道SQL练习题及答案与详细分析 1.0数据表介绍 --1.学生表 Student(SId,Sname,Sage,Ssex) --SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course(CId,Cname,TId) --CId 课程编号,Cname 课程名称,TId 教师编号 --3.教师表 Teacher(TId,Tname) --TId 教

几道经典的SQL笔试题目

几道经典的SQL笔试题目(有答案) (1)表名:购物信息 购物人      商品名称     数量 A            甲          2 B            乙          4 C            丙          1 A            丁          2 B            丙          5 …… (其他用户实验的记录大家可自行插入) 给出所有购入商品为两种或两种以上的购物人记录 答:select * from 购物信息 wher

SQL 面试题目及答案

SQL 面试题目及答案 By Lee - Last updated: 星期五, 五月 31, 2013 Leave a Comment 学生成绩表(stuscore):姓名:name     课程:subject     分数:score     学号:stuid张三     数学     89     1张三     语文     80     1张三     英语     70     1李四     数学     90     2李四     语文     70     2李四     英

sql练习题(2)

-- 11.查询没有学全所有课程的同学的信息 -- 解法一:所学课程数量 < 课程数量 SELECT s.* FROM student s LEFT JOIN score s1 ON s.`s_id` = s1.`s_id` GROUP BY s1.`s_id` HAVING COUNT(s1.`c_id`) < (SELECT COUNT(1) FROM course) -- 解法二 SELECT * FROM student WHERE s_id NOT IN( SELECT s_id F

接近50道经典SQL练习题,附建表SQL解题SQL

说明 本文章整理了47道常见sql联系题,包括建表语句,表结构,习题列表,解题答案都涵盖在本文章内.文末提供了所用SQL脚本下载链接.所有解题答案都是本人自己写的,广大读者如果在阅读使用中,有任何问题欢迎留言,对我写的有问题的,欢迎指正,谢谢. 数据库:oracle11g 表结构 可使用plsql-工具-导入表,导入如下sql脚本. 表结构与数据.sql 学生表 Student(SId,Sname,Sage,Ssex)SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别