oracle练习-SQL

2019-03-28 11:43

使用scott用户,密码为tiger登录数据库orcl,数据库中有一个表,表名为emp,具体信息如下: emp职工表;

表中有如下列:empno(职工编号)、ename(职工姓名)、job(岗位)、MGR(主管的职工编号)、hiredate(入职日期)、sal(薪水)、comm(津贴)、deptno(部门编号)

练习一:

1. 查询emp(雇员)整个表内容;

select * from emp;

2. 只查询emp表中的job和deptno两列信息;

select job,deptno from emp;

3. 查询emp表中数据,并给列取中文别名 ;

select job \工作\,deptno \部门编号\

4.将姓名和薪水两列连接起来显示“xxx的薪水是多少”这样的信息; select ename||'薪水是'||sal from emp; 5.查询岗位为\的职工信息;

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\职工编号\职工姓名\薪水\部门编号\ 11.查询职工姓名中带有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 sal<3000 or deptno='10'and 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的外键

create table human( id varchar2(20),

name varchar2(20) not null, age number(3),

province varchar2(10), sex char(1),

telephone varchar2(15), primary key(id),

check (sex in('男','女')), unique (telephone),

foreign key(province) references province(pro_id));

执行上面两个SQL语句,将表建上。

1.往省份表插入“陕西、山西、江西、广西”这4个省份信息,省份编号自定义;

2. 已知“姓名为吴起,年龄22,省份名称为江西,性别男,手机号15134523543”这个公民信息,将这个公民插入到公民表中,没有说明的属性字段自定义;插入中会遇到很多约束限制,约束不能变,可以通过修改表结构、表数据来满足要求,将数据插入到表中。并把解决问题的sql记录下来

3. 已知“姓名为吴起,年龄151,省份名称为浙江,性别女”公民信息,将这个公民插入到公民表中;说明:插入时遇到约束限制时,可以修改约束、表结构、表数据来满足插入要求。并把解决问题的sql记录下来

4.将省份表中的省份为“江西”的数据删除;

练习5:

如下四张表:

1)学生信息表student

学号:sid char 长度5 (主键) 姓名:sname varchar2 长度10 性别:ssex char(M/F) 长度1 年龄:sage number 长度3 电话:sphone varchar2 长度12

系别:did number 长度5 (外键)

2)课程信息表(course)

编号:cid char 长度5 (主键) 名称:cname varchar2 长度20 课时:chour number 长度2 讲师:tname varchar 长度10

3)学生成绩表(score)

编号:scid number 长度5 (主键) 学号:sid char 长度5 (外键) 课程:cid char 长度5 (外键) 成绩:grade number 长度3

4)系别表(department)

编号:did number 长度5 (主键) 名称:dname varchar2 长度20 电话:dphone varchar2 长度12

1.创建一个名称为自己姓名的表空间;大小为100m,可自动扩展,最大为220m;

2.创建上面4张表及约束,并将4张表创建在新创建的表空间上;

练习6:

有emp、dept(部门表)、salgrade(薪资级别表)三个表

1.写一条sql语句返回”abcdefg”的后三位字符“efg”

2.写一条sql语句将“abcdefg”转换成大写字符

3.统计emp表的数据总条数

4.查询入职日期早于1981年5月26日的职工信息

5.查询薪水大于平均薪水的职工信息

6.查询属于部门名称为“sales”的所有员工

7.查询薪水范围在[1000,4000]的员工及其对应的部门信息

8.查询出薪水在薪资级别为4的范围内的员工及其对应的部门信息(扩展练习)


oracle练习-SQL.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:大学物理3习题湘潭大学

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: