"Upskilling" in any Data topic means 2 complementary things: learning new skills (languages, algorithms, etc.), and keeping up-to-date the skills you have already built.
In this story, my goal is to share with you some ways to upskill SQL / PL-SQL / T-SQL skills.
Let’s keep SQL-laziness away
Any Data Science discipline, or any job title containing the "..Data.." word, requires at some point to query a database and to do some developments. Actually, any job interview I ever did (either as an interviewer or interviewee) tested the candidate’s SQL expertise, among other things.
But here comes the problem: once we get the job, we tend to use only the little part of our skillset which necessary to deal with the company’s data ecosystem, and eventually to fulfill our boss’s expectations. I admit it: sometimes it happened to me to become "lazy" while writing queries or doing database developments, just because the databases and tools allowed me to choose dirty ways to do things. A remarkable example: once I worked on a churn analysis project, in which a well-tuned Teradata cluster was used to process relatively small volumes of telco transactions. It could run any dirty analytical query in just milliseconds.
On the other hand, when the database is poorly configured, with too big volumes, or not properly tuned, we have to find the smart ways of building queries or developing on it. Querying needs a perfectly optimized code, and development requires to use the proper objects (right types of indexes, partitions, stats collection, etc..). Also, in such conditions we need to deeply understand the platforms we are dealing with: the tricks that work best on MS-SQL Server might be different than in Oracle, etc.
I am pretty sure that you met some crappy DB as well, right? So the best we can do to find smart solutions in any context is trying to constantly upskill our Database and SQL knowledge.
If you need to get motivated on the reasons why any Data person needs to master SQL, here is a nice story:
Our goal: upskilling SQL
Here I am going to explain what I have been doing for some time now, to upskill myself, to deliver training to others, and more in general to share knowledge.
In short, I use two free platforms: "SQL Live" and "Dev Gym". To access both of them you will need to create an Oracle login.
1. The "SQL Live" online database
It gives free access to a live Oracle (Enterprise Edition!) database, already set up with various schema and types of models, some default data in it, which you can query live.

The most useful thing is the SQL Worksheet, the actual live session to connect the database and run any script (DML, DDL, etc..).

2. The "Dev Gym" training platform
It includes Workouts, Classes, quizzes about SQL, PL/SQL, Analytics, Database design, tuning, etc.. of any level from absolute beginner to expert.
I consider myself an expert, but I can guarantee that in Dev Gym you’ll find always somebody more expert than you, from which you can lo learn a lot.
I won’t make suggestions on which workouts you should do, you can just browse and select them by SQL level and topic of interest. The only advice I want to give you is to fix your objectives first, then make a self-training schedule by week or month, so that you can plan coherently the content you want to learn.
Make Dev Gym and SQL Live work together
The advantage of Dev Gym is that any training you choose (Workout, class, Quiz) has already the source scripts necessary to configure the exercises, so you don’t need to spend time building fake tables and data.
You just need to take those scripts and run them in SQL Live to create the necessary objects, that you can then use for the actual training and Coding.
Let’s see an example: we take the "Sensational SQL" workout and select the "Quiz on Analytic Functions " module. The Code button lets you import and then run the code in your SQL Live session, to build and load the tables.


You can now build queries and do your workout exercises on the created objects by your SQL Worksheet

SQL-Live built-in Data models
Another great way to use "SQL Live" is by leveraging the several built-in schemas, with different types of models that represent simplified versions of real-world ones. Static Data, OLTP, Star-Schema modelizations are ready to be used, or you can even export the schema and data, and recreate them in other databases, by adapting the Oracle syntax to the one you need.

Keeping your knowledge up-to-date
Almost every new release of the major database vendors introduces new functions. In the past few years, many new clustering, analytical and statistical functions were added by all the main database vendors.
The way it happens is that one of the players launches the new feature first, then all the others usually follow and do the same. In that perspective, Oracle is often the leading player.
Another advantage of "Sql Live" is that it’s periodically upgraded to the latest database version so that you can try and learn the newly released features, without spending the time upgrading yourself the database.
Limitations & workarounds
"SQL Live" and "Dev Gym" are based on the Oracle technology, which means that all the material in there uses Oracle’s SQL and PL/SQL. So what can we do to practice the same exercises, workouts, etc, on another database?
Here is the trick: all the "SQL Live" and "Dev Gym" scripts can be exported (you’ll see the Export Code buttons near the editors), and you can just adapt them to run on any database, mainly by changing the datatypes in the DDLs statements, adapting the DMLs, or replacing the functions (data conversions, analytical, etc..) with the ones accepted by your target database.
If you’re not familiar with the Oracle database, I believe that it’s worth learning it: Oracle always ranks at the very top of Garner’s magic quadrant.
Other ways to upskill your SQL
If you don’t want to use the Oracle environments explained above, I can suggest another couple of ideas :
- https://www.db-fiddle.com/ allows running live SQL code on various databases: MS SQL Server, MySQL, PostgreSQL. But there are no pre-built objects, workouts, or Training: you’ll need to prepare your own environment. Another advantage is that you won’t need to create a login.
- Get and install MySQL: it takes 15 minutes to set up, but it’s worth to have it. I already described how to set it up, and optionally interface it to ETL tools, R (it’s also possible for Python, but I didn’t explain how to do it in my other story), or Dashboarding tools:
In a nutshell…
- Upskilling SQL on world-class databases is possible by using free access to pre-built databases, to avoid spending time on the installation and data set-up processes
- I explained how to do that by using a live Oracle database (SQL Live) and a collection of built-in models, exercises and workouts (Dev Gym).
- We have then seen how to migrate the Oracle models and exercises towards other platforms (SQL Server, etc..).
- Finally, I mentioned two other alternatives to Oracle to allow SQL upskilling.
Thanks for reading!
Feel free to subscribe to my "Sharing Data Knowledge" Newsletter.

If you wish to subscribe to Medium, feel free to use my referral link https://medium.com/@maw-ferrari/membership : it costs the same for you, but it contributes indirectly to my stories.