Oracle SQL练习题,从小白到入门 - 上

从事DBA以来,越来越认识到自己SQL水平不足,想想sql语句还停留在大二寒假学习的黑马的Mysql《Mysql 十天精通》基础篇+进阶篇,将近100集一天就学完了,黑马yyds。

再后来,做项目用Spring的MyBatis是真的香,练习的环境也是单表的增删改查居多,什么是JDBC一边去。加上力扣算法还刷不过来,根本没时间或者不屑于练习sql,环境能跑出来就行了(DBA兄弟别打我啊),自此sql编写算是荒废了。

工作这几个月一直想练习SQL,但是一直找不到很好的场景和案例,不知道大家都是怎么练习SQL,有好的方法可以分享在评论区,我开始实在力扣上刷,但是效果不是很显著,每次都要去翻笔记,我就想有没有更加体系化一点的,由浅入深的,今天分享给大家。

下面练习题是基于Oracle scott用户下的表,层层深入,很全面,做完下面练习相信你的SQL水平可以更上一层楼

1、SQL练习

练习 1 基本select语句

1.做一个查询显示dept表的所有数据

2.做一个查询显示emp表中ename,job,sal几列,其中sal列在结果集中做salary显示

3.做一个查询显示emp表中deptno,ename,年工资,并将年工资命名别名annual salary

4.得到emp表的结构

5.做一个查询显示emp表中雇员编号,雇员的名字,工作,雇用日期,并将查询保存为脚本,脚本名字p1q7.sql

6.运行p1q7.sql

7.创建一个查询显示雇员表中部门编号,重复的部门编号只显示一次

8.在结果集中雇员名和工作相连用"空格逗号空格"分隔,并将列头显示为Employee and Title

练习 2 限制和排列数据

1.显示收入大于2850的雇员名称和工资

2.查看雇员编号7566的雇员名字和所在部门号

3.查看BLAKE的工资

4.显示收入在2000和5000之间的人

5.显示收入为1000,2000,3000,5000的人

6.显示奖金不为空的人

7.显示管理者编号为空的人

8.找到名字当中第二个字母为"L"的员工

9.找到工资大于1000的职员

10.找到工资大于1000的或者工作为职员的人

11.找到工作为管理员或者是分析员,并且工资大于2500的人

12.查看雇员名称,工资,将工资按照降序排列

13.查看雇员名称,部门编号,工资,将部门编号按照升序排列,工资按照降序排列

14.做一个用别名排序的例子(随意)

练习 3 单行函数

1.将字符串"HELLO World"全变小写输出

2.将字符串"HELLO World"全变大写输出

3.将字符串"HELLO World"单词字首字母变大写其余变小写输出

4.将单词"Hello"和"World"拼接为"HelloWorld"

5.从字符串"HelloWorld"中截取出单词"World"

6.计算字符串"HelloWorld"的长度

7.字符串"HelloWorld"中字母"W"在第几个位置

8.将1234在左面用"*"号填满10位

9.将1234在右面用"*"号填满10位

10.截掉字符串"HelloWorldh"中首尾的"H"和"h"

11.求出45.926四舍五入到个位,十位,十分位的结果

12.求出45.926截尾取整到个位,十位,十分位的结果

13.求出2100除以500的余数

14.查看当前系统时间

15.计算1977年9月1号和当前系统时间相差多少个月

16.计算当前系统时间加半年后的日期是哪一天

17.计算当前系统时间的下一个星期五是哪一天

sunday

monday

tuesday

wednesday

thursday

friday

saturday

18.计算当前系统时间当月最后一天是哪一天

19.当前系统时间四舍五入精确到月份是哪一天

20.当前系统时间四舍五入精确到年是哪一天

21.当前系统时间解尾取整到月份是哪一天

22.当前系统时间解尾取整到年是哪一天

23.将当前系统时间变成类似格式"2006-10月-星期三"的字符串

24.将当前系统时间变成类似格式"10月-25"的字符串

25.将当前系统时间变成类似格式"2006-10-25 08: 20: 17 下午"的字符串

26.将emp 表sal列转换成以本地货币符号为前缀的字符串

练习 4 多表连接

1.查看每个员工都工作在哪个城市

2.查看每个员工都工作在哪个城市并在结果集中显示40部门信息

3.查看每个员工的工资等级

4.查看每个员工的直属管理者

练习 5 组函数

1.求emp表中工资总和

2.求emp表中工资平均值

3.求emp表中最小工资

4.求emp表中最大工资

5.求emp表的总行数,再求出部门编号去重后的总行数

6.求有奖金的员工的行数

7.求所有员工的平均奖金

8.求每个部门的工资总和

9.求每个部门的平均工资

10.求每个部门的最小工资

11.求每个部门的最大工资

12.求每个部门中从事不同工作的员工的工资总和

13.求每个部门中从事不同工作的员工的平均工资

14.求每个部门中从事不同工作的员工的最小工资

15.求每个部门中从事不同工作的员工的最大工资

16.查出平均工资大于2000的部门

17.计算不同年份参加工作的员工数量

练习 6 子查询

1.部门编号与7934相同的人有哪些?

2.参加工作比7788晚的人有哪些?

3.每个部门拿最少工资的人?

4.姓名中第二个字母为L的人的工资是多少?

5.81年2月参加工作的人工资是多少?

6.工资前10名的人? rownum<=10

7.大于30部门最大工资的人?

8.工资高于本部门平均工资的人(拿上游工资的人)?

9.工资相同的人有哪些?

teach用户下做:

10.管理者编号与部门编号与144或149的管理者编号与部门编号相同的人有那些?

练习 7 替换变量

1.在select子句中用替换变量取两列名称

2.在select子句中用替换变量取两列名称,在from子句中用替换变量取表名

3.在where子句中用替换变量取ename的名称

4.在select子句中用替换变量取列名并在order by子句中用替换变量取相同的列名排序

5.修改sqlplus环境变量,使ename列显示长度为10字符,sal列显示长度为5位数字

6.修改sqlplus环境变量,使ename列在结果集中显示为"雇员名称"

7.修改sqlplus环境变量,使sal列在结果集中显示为本地货币符号前缀五位整数两位小数

8.为结果集创建标题和脚注

练习 8 DML语句

1.向emp表插入一新行,empno=7935,ename='张建中',sal=1000,deptno=20

2.向emp表插入一新行奖金列为空其他列都插入有效值

3.向emp表插入一新行奖金列为空其他列都插入有效值,其中雇用日期为"2006-10-01"

4.create table e as select * from emp where 1=0;

将emp表中7839的所有列拷贝到e表中

5.将emp表中7369的雇员编号,雇员名称,雇用日期,拷贝到e表中

6.将e表中7369的管理者编号修改为7902

7.将e表中7369的工资修改为800,部门编号修改为20

8.将e表中7369的工资修改为与"ALLEN"相同,并将此人调动到7782所在部门

9.将"KING"从e表中删除

10.将与"MILLER"同部门的人从e表删除

11.描述事务的概念

12.提交对数据的修改(如何实现自动提交)

13.回退对数据的修改

14.创建一个事务,并在事务中的每条DML后手工设置savepoint点

15.将事务回退到指定的savepoint点

16.何时产生隐式savepoint点

17.何时回产生隐式提交

18.何时会产生隐式回退

19.什么叫做读一致性

20.锁的作用

练习 9 创建和管理表

1.创建一张表d,结构如下:

SQL> desc d

名称 是否为空? 类型

------- -------- ------------

DEPTNO NUMBER(2)

DNAME VARCHAR2(14)

LOC VARCHAR2(13)

2.查询数据字典得到当前用户所拥有的表的信息

3.创建一张表e拷贝emp表的结构

4.修改表e,在表e中添加一个新列loc varchar2(10)

5.修改表e的loc列数据长度为varchar2(20)

6.删除loc列

7.将e表comm列置为未使用状态并删除该列

8.删除表e

9.将表d重命名为dept_temp

10.说明truncate操作和delete操作的区别

11.为emp表添加注释信息"雇员信息表"

12.查看表的注释信息

练习 10 约束

1.创建一张表tt包含数字型列id和可变长度字符串型列ename并使id列为主键,名称为pk_tt_id

2.修改表tt,为ename列添加唯一键约束uu_ename

3.为tt表添加一新列deptno number(2),并在deptno列添加外键约束fk_tt使其参照dept表的主键

4.为tt表添加一新列sal数字型7精度2刻度,并在sal列添加check约束ck_tt_sal使sal列的取值大于1000

5.删除约束uu_ename

6.禁止约束ck_tt_sal

7.启用约束ck_tt_sal

8.查看约束信息

练习 11 创建视图

1创建一个视图v_emp使其能够访问emp表的empno,ename,sal,deptno列的数据

2.修改视图v_emp使其能够访问emp表30部门的empno,ename,sal,deptno列的数据

3.向视图v_emp插入一新行数据其中部门号为20

4.修改视图v_emp使其不能向非30部门插入数据

5.修改视图v_emp使其不能做任何DML操作

7.查看视图v_emp的源代码

8.删除视图v_emp

练习 12 序列.索引.同义词

1.创建一个序列s1,使步长增长幅度为10,起始值为-120,最大值为10000,不循环,不缓存

2.查看s1的信息

3.查看s1的值

4.使用s1向表中插如值

5.修改s1使步长增长幅度为20,最大值为100000,缓存尺寸为20

6.删除序列

7.在emp表ename列创建一个索引ind_emp_ename

8.删除ind_emp_ename

9.在system用户下为scott.emp创建一个私有同义词emp并使用

10.删除私有同义词emp

11.在system用户下为scott.emp创建一个公有同义词emp并使用

12.删除公有同义词emp

13.私有同义词和公有同义词有和区别?

练习 13 管理用户和权限

1.在管理员下创建一个用户test,初始口令为test

2.在管理员下对test用户授予create session和create table权限

3.连接到test用户

4.在管理员下撤消test用户的create session和create table权限

5.在管理员下创建一个角色r1

6.在管理员下对角色r1授予create session和create table权限

7.在管理员下将角色r1授予test用户

8.连接到test用户

9.修改test用户口令

10.在test用户下创建test表(id int),插入一行数据,并使scott能够查看test用户下的test表数据

11.使所有人都能够查看test用户下的test表

2、环境推荐

  1. Oracle 10G+都可
  2. 墨天轮的 SQLRUN 工具:SQL 工作台 - 墨天轮

  1. SQL Fiddle

SQL Fiddle 提供了 MySQL、PostgreSQL、Oracle、SQLite 以及 SQL Server 数据库的运行环境,如图所示。

运行网址:
SQL Fiddle - Online SQL Compiler for learning & practice

4、DB Fiddle

DB Fiddle 提供了 MySQL、PostgreSQL 以及 SQLite 数据库的运行环境,部分截图如下。

运行网址:
DB Fiddle - SQL Database Playground (db-fiddle.com)

DB Fiddle 还有一个亮点是支持在线协作,点击Collaborate生成一个邀请链接,其他人点击即可加入协作,同时支持语音和文字聊天,这样非常方便 SQL 学习探讨。

3、项目推荐

最好的学习方式就是在游戏过程中学习,可以把这个过程游戏化,这里推荐鱼总的两个SQL项目可以参考。

1)SQL 之母 - 闯关式 SQL 自学网”

一个Vue3 + Ant-Design-Vue 的纯前端的项目,开源透明,一分钟本地环境启动,支持挑战模式和自定义关卡,在游戏中学习。不过项目重点是实现这个功能,而不于练习SQL,有兴趣大家可以制作一个专属DBA的SQL闯关游戏,我第一个卡会员😜。

项目源码:

GitHub - liyupi/sql-mother: 免费的闯关式 SQL 自学教程网站,从 0 到 1 带大家掌握常用 SQL 语法,纯前端实现,简单易学~

在线体验:http://sqlmother.yupi.icu

2)SQL Father - 模拟数据生成器

这是我学习后端时练手的一个项目,一个JAVA的前后端分离项目,不仅仅是基础的增删改查,项目中还会涉及到单例模式、工厂模式、门面模式等多种设计模式,另外自己在本地环境测试项目时如果没有假数据利用此项目可以一键生成SQL代码,也支持JSON、JAVA、前端等格式。

项目源码:liyupi/sql-father-frontend-public: 新项目:快速生成 SQL 和模拟数据的网站(React 前端),大幅提高开发测试效率!by 程序员鱼皮 (github.com)

在线体验:http://sqlfather.yupi.icu

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/454042.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

string类的学习(上)

string类与我们再C语言中接触到的字符串数据相似&#xff0c;但是做出了一些重大的提升&#xff0c;封装为类&#xff0c;实现了总多的接口&#xff0c;丰富了其功能&#xff0c;为简化了字符串的使用&#xff0c;那现在我们就开始深入学习string类吧。 1.什么事string类 C语言…

Java项目:155 springboot酒店管理系统(含论文+ppt+开题报告+说明文档)

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 ​ 后台&#xff1a; 1.登录&#xff1a;输入账号、密码&#xff0c;即可登录。 2.套房管理&#xff1a;可对房间房型进行管理。 3.入住管…

elk部署安装

elk部署 前提准备1、elasticsearch2、kibana3、logstash 前提准备 1、提前装好docker docker-compose相关命令 2、替换docker仓库地址国内镜像源 cd /etc/docker vi daemon.json # 替换内容 {"registry-mirrors": [ "https://docker.1panel.dev", "ht…

L1练习-鸢尾花数据集处理(分类/聚类)

背景 前文&#xff08;《AI 自学 Lesson1 - Sklearn&#xff08;开源Python机器学习包&#xff09;》&#xff09;以鸢尾花数据集的处理为例&#xff0c;本文将完善其代码&#xff0c;在使用 sklearn 的部分工具包基础上&#xff0c;增加部分数据预处理、数据分析和数据可视化…

FL Studio 2024 发布,添加 FL Cloud 插件、AI 等功能

作为今年最受期待的音乐制作 DAW 更新之一&#xff0c;FL Studio 2024发布引入了新功能&#xff0c;同时采用了新的命名方式&#xff0c;从现在起将把发布年份纳入其名称中。DAW 的新增功能包括在 FL Cloud 中添加插件、AI 驱动的音乐创作工具和 FL Studio 的新效果。 FL Clou…

Java 解决阿里云OSS服务器私有权限图片通过URL无法预览的问题

简单描述一下此场景的业务: 由于系统中需要将上传的图片在系统中展示(private私有权限不能直接通过url直接展示),不想通过先下载下来然后以流的形式返回给前台展示这种方法很不友好,毕竟现在前台展示方式都是通过图片URL进行展示,所以就上官网查看API文档,果然找到了解决…

视频美颜平台是如何搭建的?基于直播美颜SDK源码的开发技术详解

今天&#xff0c;笔者将详细讲解如何基于直播美颜SDK源码搭建视频美颜平台的技术路径。 一、理解视频美颜技术 视频美颜技术主要通过图像处理算法对视频流进行实时处理&#xff0c;包括肤色优化、瑕疵修复、面部特征增强等。实现这一目标需要高效的图像处理算法和稳定的实时渲…

电脑异常情况总结

文章目录 笔记本无症状息屏黑屏 笔记本无症状息屏黑屏 &#x1f34e; 问题描述&#xff1a; 息屏导致黑屏&#xff1b;依次操作计算机--》右键--》管理--》事件查看器--》Windows日志--》系统&#xff1b;从息屏到异常黑屏之间出现了很多错误&#xff0c;如下&#xff1a;事件…

大规模创新类竞赛评审方案的建模与研究

随着科技的发展和教育制度的改革&#xff0c;近年来涌现出一批以“创新”为主题的竞赛项目。这类竞赛的运行模式为&#xff0c;参赛队伍提交文档、视频或幻灯片等文本形式的作品&#xff0c;专家对参赛队伍提交的作品评阅判分&#xff0c;一份作品将由多位专家独立进行评阅打分…

WPF入门_04绑定

WPF绑定使得原本需要多行代码实现的功能,现在只需要简单的XAML代码就可以完成之前多行后台代码实现的功能。WPF绑定可以理解为一种关系,该关系告诉WPF从一个源对象提取一些信息,并将这些信息来设置目标对象的属性。 目标属性总是依赖属性。然而,源对象可以是任何内容,可以…

mysql8以上版本第一次下载后的登录问题

mysql8以上版本第一次下载后的登录问题 在官网下载mysql后&#xff0c;按照MySQL下载和安装教程操作就可以 如果出现问题&#xff0c;参考https://blog.csdn.net/weixin_63107823/article/details/136588474 注意ini配置文件&#xff0c;如果你是复制的别人的代码&#xff0…

一些简单的编程题(Java与C语言)

引言&#xff1a; 这篇文章呢&#xff0c;小编将会举一些简单的编程题用来帮助大家理解一下Java代码&#xff0c;并且与C语言做个对比&#xff0c;不过这篇文章所出现的题目小编不会向随缘解题系列里面那样详细的讲解每一到题&#xff0c;本篇文章的主要目的是帮助小编和读者们…

算法魅力-双指针的实战

目录 1.双指针的介绍 1. 左右指针&#xff08;对撞指针&#xff09; 2. 快慢指针 2.题目练习讲解 2.1 移动零 算法思路 代码展示 画图效果效果 2.2 复写零 算法思路 代码展示 2.3 快乐数 算法思路 代码展示 2.4 盛最多水的容器 算法思路 代码展示 结束语 1.双指针的…

LeetCode第101题. 对称二叉树

文章目录 &#x1f60a;1.题目&#x1f609;2.解法 &#x1f60a;1.题目 尝试一下该题 &#x1f609;2.解法 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ bool isSameTree…

考研读研生存指南,注意事项

本视频课程&#xff0c;涉及考研读研的方方面面&#xff0c;从考研初试→复试面试→研究生生活→导师相处→论文专利写作混毕业&#xff0c;应有尽有。有了他&#xff0c;你的研究生生涯稳了。 读研考研注意事项&#xff0c;研究生生存指南。_哔哩哔哩_bilibili 一、考研初试注…

数据泄露危机:提升文件安全意识的紧迫性

在当今数字化时代,数据已成为企业最宝贵的资产之一。然而,随着技术的进步,数据泄露事件的频率和规模也在不断攀升。这不仅给企业带来巨大的经济损失,还可能导致声誉受损、客户流失等一系列严重后果。因此,提升文件安全意识,加强数据保护措施,已成为企业管理中不可忽视的重要议题…

【人工智能】Transformers之Pipeline(二十):令牌分类(token-classification)

目录 一、引言 二、令牌分类&#xff08;token-classification&#xff09; 2.1 概述 2.2 Facebook AI/XLM-RoBERTa 2.3 pipeline参数 2.3.1 pipeline对象实例化参数 2.3.2 pipeline对象使用参数 2.3.3 pipeline返回参数 ​​​​​​​​​​​​​​ 2.4 pipeline…

Spring Boot 3.3 【八】整合实现高可用 Redis 集群

一、引言 在当今快速发展的软件开发领域&#xff0c;系统的性能和可靠性至关重要。Springboot 3 整合 Redis 7 集群具有多方面的重大意义。 首先&#xff0c;随着业务的不断发展&#xff0c;数据量呈爆炸式增长&#xff0c;单个 Redis 服务器往往难以满足存储和处理需求。Red…

docker-harbor

目录 一、registry 二、harbor 1.部署 harbor 1.1部署Docker-Compose 1.2部署 Harbor 服务 1.3在其他客户端上传镜像 三、维护管理Harbor 1. 创建 Harbor 用户 2.添加项目成员 3. 在客户端上使用普通账户操作镜像 4. 查看日志 5. 修改 Harbor.cfg 配置文件 6. 移除…

给定数组找出出现次数超过数组长度一半的数

&#x1f381;&#x1f449;点击进入文心快码 Baidu Comate 官网&#xff0c;体验智能编码之旅&#xff0c;还有超多福利&#xff01;&#x1f381; 【大厂面试真题】系列&#xff0c;带你攻克大厂面试真题&#xff0c;秒变offer收割机&#xff01; ❓今日问题&#xff1a;给定…