oracle练习-SQL.doc
文本预览下载声明
使用scott用户,密码为tiger登录数据库orcl,数据库中有一个表,表名为emp,具体信息如下:
emp职工表;
表中有如下列:empno(职工编号)、ename(职工姓名)、job(岗位)、MGR(主管的职工编号)、hiredate(入职日期)、sal(薪水)、comm(津贴)、deptno(部门编号)
练习一:
查询emp(雇员)整个表内容;
select * from emp;
只查询emp表中的job和deptno两列信息;
select job,deptno from emp;
查询emp表中数据,并给列取中文别名 ;
select job 工作 ,deptno 部门编号 from emp;
4.将姓名和薪水两列连接起来显示“xxx的薪水是多少”这样的信息;
select ename||薪水是||sal from emp;
5.查询岗位为CLERK的职工信息;
select * from emp where job=CLERK;
6.查询部门编号不是10的职工信息;
select * from emp where deptno!=10;
7.查询comm为空值的职工信息;
select * from emp where comm is null;
8.查询职工姓名中带有A的职工信息;
select * from emp where ename like %A%;
9.查询职工姓名中倒数第二个字符为E的职工信息;
select * from emp where ename like %E_;
10.查询职工姓名中带有L和E的职工信息,并且姓名中L在前,E在后;要求:只查询出职工编号,职工姓名,薪水和部门编号这四列,并且给部门编号列取中文别名;(扩展练习)
select empno职工编号,ename职工姓名,sal薪水,deptno部门编号 from emp;
查询职工姓名中带有L和E的职工信息,并且姓名中L在前,E在后,且要求姓名第三位是L;
select * from emp where ename like __LE%
练习2:
1.查询部门编号为30,MGR主管编号为7698的员工信息;
select * from emp where deptno=30 and mgr=7698;
2.查询部门编号为10,或者job为CLERK的员工信息
select * from emp where deptno=10 or job=CLERK;
3.查询sal大于等于900,小于3000,并且部门编号为10、20的职工信息;
select * from emp where sal=900 and sal3000 or deptno=10and deptno=20;
4.查询mgr主管编号不是7698和7788,或者job岗位为CLERK的职工信息,查询结果并且先按sal薪水降序排列,再按empno职工编号升序排列 (扩展练习)
select * from emp where not(mgr=7698 or mgr=7798) or job=CLERK order by sal desc,empno asc;
5.将下面SQL分别执行,能得出什么结论?(扩展练习)
select * from emp where deptno=30 and mgr=7698 or job=CLERK;
select * from emp where job=CLERK or deptno=30 and mgr=7698;
select * from emp where deptno=30 or mgr=7698 and job=CLERK;
练习3:
1.往emp表里插入一条雇员信息,雇员编号为4位,第一位为按组号取,其他三位组内讨论决定,hiredate取当前系统值,DEPTNO部门编号取值为10、20、30当中的一个,其他字段自行决定;不提交
2.将deptno取值为10的职工薪水翻倍,并且ename在原来取值的基础上拼接上TEST;不提交,设置一个保存点,保存点名字以自己的名字命名
3.删除刚刚插入的的职工信息;不提交
4.回滚到保存点;
5.提交,最后数据会变成什么样?
练习4:
两个表定义如下:(如果已经有该表,则将该表删除掉再重新创建)
---省份表,省份id和省份名称;
create table province(
pro_id varchar2(10),
pro_name varchar2(30),
primary key(pro_id));
--公民信息表,身份证id,姓名,年龄,城市,性别,手机号,学历。其中省份定义为省份表中的省份id的外键
c
显示全部