加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle和Mysql数据库技术

发布时间:2020-12-31 05:45:51 所属栏目:百科 来源:网络整理
导读:副标题#e# 1.查资料,回答下面问题: a.Oracle公司的诞生和发展 (1)1977年程序员埃里森和另外两名程序员创建了软件开发实验室(Software Development Laboratories)。 (2)1970年IBM的一名研究人员写了一篇名为《大型共享数据库的关系数据模型》的论文,埃里


ORM(Object relationship mapping对象关系映射)基本思想:
?表定义了数据结构,类似于Java中的类。
?字段定义了表的详细结构,类似于Java中类的属性。
?记录(行)定义了某个数据,类似于Java中某个类的对象。
使用上面思路,将实验用表:emp和dept之间的关系,使用两个Java类表示。
(1)emp表:
public class Emp{

private int empNo; //员工编号;
private String eName;//员工姓名;
private String job;//员工岗位;
private int mgr;//员工上级编号;
private String hireDate;//员工入职时间;
private double salary;//员工基本工资;
private double commit;//员工绩效;
private int depNo;//员工部门编号;

//构造方法,略;
//getter,setter方法,略;

}

(2)dept表:
public class Dept{
private int deptNo; //部门编号;
private String dName; //部门名称;
private String loc;//部门地址;

//构造方法,略;
//getter,setter方法,略;
}

?

6.【上机】完成下面的sql语句,并截图表示出结果。


i.每个员工的所有信息
分析:把员工表的所有内容都列出来;
select * from emp;
ii.每个人的部门编号,姓名,薪水
分析:这3项在一个表里吗?在,简单了。
同上题一样,也是14条纪录。把“*”换成指定的列名。
select deptno,ename,sal from emp;
iii.每个人的年薪
分析:还是查员工信息。没有“年薪”字段,但有”sal(月薪)”,可以通过计算得到年薪信息。
select ename,sal*12 from emp;
iv.计算2*3的值(利用虚拟表:dual)
select 2*3 from dual;
v.得到当前时间
select sysdate from dual;
vi.求每个人的年薪,列的别名:“年薪”;
分析:怎么给列起别名呢?“as”关键字;
select ename,sal*12 as 年薪 from emp;--“年薪”可以加或不加双引号,但单引号不行。
vii.计算每个人的全年的收入包括月薪和年终津贴(使用:nvl函数处理null值)
分析:
(1)年薪 是 (月薪+绩效)*12;
(2)但绩效(comm)有null值,当comm是null值时,月薪+绩效的结果也是null值;
(3)所以,当comm为null值时,需要把它当作0来处理。哪个函数能胜此重任呢?nvl();
(4)nvl()相当于一条if…else语句:如果字段值不为空,取原值;否则,空值当作0来处理。

select ename,sal*12+nvl(comm,0)as 年薪 from emp;

viii.求姓名和薪水和津贴,格式为smith-sal-123(利用拼接字符串)
分析:拼接字符串不同于java中用“+”,这里用”||“。这里拼接的字符串是作为数据出现在字段内容中的。
select ename||‘-‘||sal||‘-‘||nvl(comm,0) 收入信息 from emp;


7.Oracle中,||表示什么含义?


字符串拼接。见上题“分析”部分。


8.Oracle中,双引号一般用于什么地方?单引号用于什么地方?


(1)双引号:在给字段起别名时,双引号可以加在别名上(也可以不加);
如下例中的“年薪“:
select ename,sal*12 as “年薪” from emp;
(2)单引号:
i.字段数据中需要拼接字符串时,字符串常量要加单引号。如下例中的连字符“-“:
select ename||‘-‘||sal||‘-‘||nvl(comm,0)from emp;
ii.通过某varchar类型的字段数据值来查询记录时,这个用来查询的字段值要用单引号,如下例中的“KING“:
select * from emp where ename=‘KING‘;

?

9.【上机】完成下面的sql语句,并截图表示出结果。


i.求10这个部门的所有员工
分析:查员工信息;但只是查部分员工而不是全部员工的信息。那是哪部分员工呢?条件是:部门编号为10的员工。用where子句。员工表包含部门信息,所以还是单表查询。
select * from emp where deptno=10;
ii.求名字是KING的这个人的信息
select * from emp where ename=’KING’;
iii.求薪水大于2000的员工信息
select * from emp where sal>2000;
iv.求部门不是10的员工信息
(1)select * from emp where deptno<>10;
(2)select * from emp where deptno!=10;
v.求薪水在800和1500之间的员工信息(包含800和1500)
select * from emp where sal between 800 and 1500;
vi.列出deptno为10或者30,并且工资>2000的所有人
select * from emp where deptno in(10,30) and sal>2000;
vii.利用in操作符,列出部门10和20的人员
select * from emp where deptno in (10,20);
viii.利用like操作符,查询名字中含有"H"的人员
select * from emp where ename like ‘%H%‘;
ix.分别利用like操作符和正则表达式,查询名字中含有"S"或者"M"的人员
select * from emp where ename like ‘%H%’or ename like‘%S%’;

10.下面两句话是否结果相同:相同。


select * from Emp where not ( deptno in(10,20));
select * from Emp where deptno not in(10,20);


11.数据库查询时,哪些内容区分大小写?哪些不区分?


sql语句关键字,如:select,from等不区分大小写;
表名和字段名:不区分大小写;
字段中的内容:区分大小写。


12.【上机】完成下面的sql语句,并截图表示出结果。


--把所有姓名变成小写
select lower(ename) from emp;
--把所有姓名变成大写
select upper(ename) from emp;
--求所有人名中包含‘a‘的员工信息不区分大小写
select ename from emp where lower(ename) like ‘%a%‘;
--截取子字符串,比如求Hello的一部分
select substr(‘Hello‘,2) from dual;
--求Hello的一部分,并指明长度
select substr(‘Hello‘,2,3) from dual;
--求ascii码对应的字符
select chr(65) from dual;
--求字符对应的ascii码
select ascii(‘中‘) from dual;
--四舍五入
select round(23.652) from dual;
--四舍五入小数点后面多少位
select round(23.652,1) from dual;
--四舍五入小数点前面多少位
select round(23.652,-1) from dual;
--------------------------------------------------------
--important!日期转换函数
--------------------------------------------------------
--将当前日期转换成1981-03-12 12:00:00这种形式的字符串
select to_char(sysdate,‘YYYY-MM-DD HH24:MI:SS‘) from dual;
--将1981-03-12 12:00:00字符串转换成日期
select to_date(‘1981-03-12 12:00:00‘,‘YYYY-MM-DD HH24:MI:SS‘) from dual;
--将每个人的薪水转换成固定格式的字符串
select to_char(sal,‘L00,000.9999‘) from emp;
--将固定格式的字符串转换成数值
select to_number(‘$1,250.00‘,‘$9,999.99‘) from dual;
--null当null参与计算时候,需要要nvl这个函数
select ename,sal*12+comm from emp;
select ename,sal*12+ nvl(comm,0) from emp;

?

13.【上机】完成下面的sql语句,练习分组函数的使用,并截图表示出结果。

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读