oracle数笔

--1.  新建部门表,员工表,若数据库中已存在部门员工表,则drop掉,通过create  table 来进行新建。
 drop table dept;  
 
 create table dept(
   deptno int primary key,
   deptname varchar2(22)
 );
 --2.    创建员工emp表,(empNo员工号,eName员工姓名,job工作,mgr上级编号,hiredate雇佣日期,sal薪资,comm佣金,deptNo部门编号)
 create table emp(
  empno int primary key,
  ename varchar2(20),
  job varchar2(20),
  mgr varchar2(20),
  hiredate date,
  sal number(10,2),
  comm number(10,2),
  deptno int 
 );
 --3.    创建部门dept表(deptNo部门编号,dName 部门名称,loc 地点)
 drop table dept;
 
 create table dept(
 deptno int primary key,
 dname varchar2(20),
 loc varchar2(20) 
 )
--4.    向部门表中插入5条数据
insert into dept (deptno,dname,loc) values(1,'公测','gd');
insert into dept (deptno,dname,loc) values(2,'前台','sa');
insert into dept (deptno,dname,loc) values(3,'开发','sh');
insert into dept (deptno,dname,loc) values(4,'销售','hk');
insert into dept (deptno,dname,loc) values(5,'工程','bj');

select * from dept;

--5.    向员工表中插入十条数据,要求员工的部门编号要在部门表中存在
--select * from emp

alter table emp add constraint kk foreign key(deptno) references dept(deptno);

insert into emp (empno,ename,job,mgr,hiredate,sal,deptno)values (4,'小样','写代码','小猫','07-11月-2003','5432.88',3);
insert into emp (empno,ename,job,mgr,hiredate,sal,deptno)values (5,'饭冰冰','唱歌','张丽','07-11月-1988','3456.88',4);
insert into emp (empno,ename,job,mgr,hiredate,sal,deptno)values (6,'花花','小品','小猫','07-11月-2013','5600.88',2);
insert into emp (empno,ename,job,mgr,hiredate,sal,deptno)values (7,'赵本山','写代码','小胖','07-11月-2016','2354.88',1);
insert into emp (empno,ename,job,mgr,hiredate,sal,deptno)values (8,'三等','电影','小猫','07-11月-2017','7777.88',5);
insert into emp (empno,ename,job,mgr,hiredate,sal,deptno)values (9,'是','写代码','小猫','07-11月-2015','5553.88',2);
insert into emp (empno,ename,job,mgr,hiredate,sal,deptno)values (10,'嗯嗯','写代码','啊','07-11月-2014','4356.88',5);
insert into emp (empno,ename,job,mgr,hiredate,sal,deptno)values (11,'方法','写代码','小猫','07-11月-2012','234.88',1);
insert into emp (empno,ename,job,mgr,hiredate,sal,deptno)values (12,'发疯','写代码','小猫','07-11月-2013','8888.88',4);

--6.    写出oracle和java中的基本数据类型,并且分别是什么意思
orale  char(n) 定长字符串,长度不到的用空格来填充 ,最大2000字节
       varchar(n)可变长度的字符串,长度不够自动缩短,最大4000字节
       number(m,n)可变长的数字列,总长m,小数位n
       int 整形数值
       date 日期格式,为‘07-12月-2003’或‘07-12月-03’
       long 可变长字符列,最大长度限制为2GB。
       Blob 这种数据类型允许存储最多4GB的数据
       
java
    整数型byte , long ,int short
    布尔型 boolean
    浮点型 float ,double      
    字符型 char

--7.    sql命令的分类,分为哪几种 ?
DDL(数据定义语言),create,drop ,alter
DML(数据操纵语言),insert ,update ,delete
DQL(数据查询语言),select
DCL(数据控制语言);grant ,commit,rollback
    
--8.    使用alter关键字,给dept表和emp表添加几个备用字段attribute1,,,attribute5 ,数据类型  int,varchar2,number ,date,long       

alter table dept add attribute1 int;
alter table dept add attribute2 varchar2(10);
alter table dept add attribute3 number(10,2);
alter table dept add attribute4 date;
alter table dept add attribute5 Long;

--select * from dept

alter table emp add attribute1 int;
alter table emp add attribute2 varchar2(10);
alter table emp add attribute3 number(10,2);
alter table emp add attribute4 date;
alter table emp add attribute5 Long;

--select * from emp
9.    创建学生表,学生编号为number类型,向其中插入字符串类型的数值是否可以正常插入,写出sql语句
create table student(
 sno number(10,2),
 sname varchar(10)
);

insert into student(sno,sname)values('13','花花');
select *from student

--10.    使用insert  ,delete ,update ,select 关键字来操作员工表和部门表,其中delete,select ,update 
--要带至少两个条件来进行筛选

select * from emp where job='写代码'and mgr='小猫';
update emp set comm=1245,attribute1=23 where job='写代码'and mgr='小猫';
delete from emp where ename='小样'and sal=5432.88;

select * from dept

insert into dept (deptno,dname,loc)values(7,'测试','sh');
select * from dept where dname='开发'and loc='sh';
update dept set deptno=10 where dname='测试'and loc='sh';
delete from dept where dname='测试'and loc='sh';

--11.    使用distinct关键字来消除重复的行。写出sql语句
select  distinct ename from emp;

--12.    查询出部门表所有信息,并且给出别名。
select deptno 部门编号 ,dname 名称,loc 地址 from dept

--14.    新建销售信息表,表格内容如下  ,将其转行为列的形式显示,使用decode函数

create table sal(
  name varchar2(20),
  course varchar2(20),
  sorse number(10)
  
);
insert into sal(name,course,sorse)values('张三','Java',50);
insert into sal(name,course,sorse)values('张三','oracle',55);
insert into sal(name,course,sorse)values('张三','web',60);
insert into sal(name,course,sorse)values('张三','html',70);
insert into sal(name,course,sorse)values('张三','Javascprit',80);

insert into sal(name,course,sorse)values('李四','Java',53);
insert into sal(name,course,sorse)values('李四','oracle',67);
insert into sal(name,course,sorse)values('李四','web',60);
insert into sal(name,course,sorse)values('李四','html',90);
insert into sal(name,course,sorse)values('李四','Javascprit',88);

--select * from sal;

select name, 
max(decode(course,'Java',sorse))java,
max(decode (course,'oracle',sorse)) as oracle,
max(decode(course,'web',sorse))web,
sum(decode(course,'html',sorse))html,
sum(decode(course,'Javascprit',sorse))Javascprit
from sal group by name

15,在上面标的基础上,在添加其他学生考试成绩信息,内容自己定义,统计每个学生出现的次数。
insert into  sal(name,course,sorse)values('小五','Javascprit',88);
insert into sal (name,course,sorse)values('小五','Java',88);
insert into  sal(name,course,sorse)values('花花','Javascprit',88);
insert into sal (name,course,sorse)values('小威','Java',88);

select name,count(1)from sal group by name


--15.    新建学生和班级表,班级表包括,班级编号,班级名称,班主任  三字字段,
--学生表包括,学生编号,学生姓名,性别,年龄,家庭地址,班级编号,描述  ,等字段,
--显示出来每个学生所在的班级名称和班主任名称。

create table classes(
 cno int primary key,
 cname varchar2(20),
 techer varchar(20)
);
create table student1(
sno int primary key,
sname varchar2(20),
sex char(2) check(sex in('男','女')),
yearold number(3),
adress varchar2(50),
cno int,
des varchar2(1000)
);
insert into classes values(1,'一','王老师');
insert into classes values(2,'二','李老师');
insert into classes values(3,'三','小老师');

insert into student1 (sno,sname,cno)values(22,'小红','1');
insert into student1 (sno,sname,cno)values(23,'大和','2');
insert into student1 (sno,sname,cno)values(24,'中国','1');
insert into student1 (sno,sname,cno)values(25,'小品','2');
insert into student1 (sno,sname,cno)values(26,'小品','7');
insert into student1 (sno,sname)values(27,'小品');
select sname,cname,techer from classes c,student1 s where c.cno=s.cno;

--16.    使用外连接,显示所有班级信息,包含没有学生的班级,两种写法
select * from classes c left join student1 s on c.cno=s.cno;
select * from  student1 s right join classes c on c.cno=s.cno;
select * from classes c,student1 s where  c.cno=s.cno(+);

--17.    使用外连接,显示所有的学生信息,包含没有班级的学生,两种写法
select* from student1 s left join classes c on s.cno=c.cno; 
select * from student1 s,classes c where  c.cno(+)=s.cno;
--1.查询出部门是d01部门的员工
--select * from dept
--select * from emp
select ename from emp where deptno=1;

--2.列出职位是“开发”的员工编号
select empno from emp where job='写代码';

--3.找出sal大于4000的员工信息
select * from emp where sal>4000
--4.找出comm 比 sal 大的员工信息
--update emp set comm=7000 where sal=5600.88;
select * from emp where comm>sal;
--5.找出部门d02中工资大于5000的员工
select * from emp where sal>5000 and deptno=2;
--6.找出comm低于 2000 的员工
select ename from emp where comm<2000;
--7.显示员工信息,将先入职的员工排在最前面
select * from emp order by emp.hiredate asc;
--8.使用decode显示员工的部门信息,d01 显示  开发部门,d02 显示测试部门,d03显示运营部门,否则显示其他部门。
select emp.* ,decode(deptno,1,'开发部门',2,'测试部门',3,'运营部门','其他部门') from emp;
--9.分组统计各部门下工资大于5000 的员工姓名和 工资

--10.算出每个职位的员工数,并且算出最低工资
select job,count(1),min(sal) from emp group by job;
 

转载于:https://my.oschina.net/m243043962/blog/1507103

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值