Advice for Trainers

  • I have been asked to provide a basic course on SQL querying to the first-line support staff. It's going to cover basic SELECTs, JOINs, temp tables, subqueries and some of the frequently used functions. I'm not going anywhere near windowing functions, CTE's or anything even remotely esoteric. It's simply to provide a (very) rough oultine of queries so the first-line have an idea about how the day-to-day queries they use work.

    I'm going to be providing it to small groups of not more than four, using reasonably decent laptops. This is essentially as far as I've got though. I'm after advice on how best to set these laptops up. I think that having each laptop with an instance of Express and the training database on it is the way to go.


    On two occasions I have been asked, "Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?" ... I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.
    —Charles Babbage, Passages from the Life of a Philosopher

    How to post a question to get the most help http://www.sqlservercentral.com/articles/Best+Practices/61537

  • Hi,

    To use SQL Express is a very usable solution if you are not using the agent in some way. You need to additionally install the SSMS seprately, becuase it's not integrated in the SQL Express install.

    You can download one of the available Adventureworks databases to get sample data to build your queries on. You can use the stairways series (as a starting point) to setup your SQL course.

    ** Don't mistake the ‘stupidity of the crowd’ for the ‘wisdom of the group’! **
  • Sorry, I re-read what I wrote and it's not quite clear. The course is written, I'm now looking for advice on the best set-up for delivering it. That said, having a look at the Stairways is a good idea. I'm deliberately keeping it very simple but I may have overlooked something.

    I'll put that down as score one for Express, although I did forget that I'd need to install SSMS separately. My thinking is, if somebody breaks something, they'll only break it on their laptop. I've created a small database that I'm going to use. In a couple of cases, I've contrived the tables to fit the course content. If I were to do something a bit more in depth then it would be Adventure Works all the way

    Thanks for your advice.


    On two occasions I have been asked, "Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?" ... I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.
    —Charles Babbage, Passages from the Life of a Philosopher

    How to post a question to get the most help http://www.sqlservercentral.com/articles/Best+Practices/61537

  • When I taught classes like this where all we were doing was querying, instead of setting up Express (not a bad idea, just not what I needed), I created a database with the objects I wanted to illustrate for the class, and gave everyone access to that. We did all our querying together, against the same tables with the same connection strings, same everything. That way you only have to get SSMS installed along with any scripts you want to give them. The scripts I gave them were canned scripts that we'd just be walking through, and, a copy of what we were going to type together so they could resolve typos easily, avoid typing if they wanted, and at least have a stable reference.

    "The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood"
    - Theodore Roosevelt

    Author of:
    SQL Server Execution Plans
    SQL Server Query Performance Tuning

  • Grant Fritchey (7/2/2015)


    When I taught classes like this where all we were doing was querying, instead of setting up Express (not a bad idea, just not what I needed), I created a database with the objects I wanted to illustrate for the class, and gave everyone access to that. We did all our querying together, against the same tables with the same connection strings, same everything. That way you only have to get SSMS installed along with any scripts you want to give them. The scripts I gave them were canned scripts that we'd just be walking through, and, a copy of what we were going to type together so they could resolve typos easily, avoid typing if they wanted, and at least have a stable reference.

    This is also a good approach. Just keep one thing in mind when you learn your students about the INSERT and UPDATE commands. This could cause blocking and constraint issues when executed on the same records/tables by multiple persons at the same time. On the other hand: that is is a good moment to teach about these caveats 😉

    ** Don't mistake the ‘stupidity of the crowd’ for the ‘wisdom of the group’! **
  • I teach a three day “SQL Boot Camp” class (that I developed) about twice a year for our customers and internal staff. The goal is to teach beginners how to query our database. I’m proud to say it has been well received.

    Regarding setup: Everyone has a laptop that is configured with full blown SQL Server and a copy of the database. The laptops also have a copy of our core product pointed at the same database. The class can compare what they see in their queries with what they see in the application.

    Regarding teaching caution: Some people might say we go overboard. The attendees must have their manager sign and return a document that says they understand that they are responsible for any changes or damage they do to the database. Every day a sign in sheet is passed around where the attendees have to acknowledge the same risk and I restate the risk everyday as part of the presentation and describe dangerous keywords, scenarios etc.

    Other minor things: We keep the classes small, ten or less. I have other experienced staff in the room to assist those that may be struggling. We try to take breaks every hour and the class only lasts about six hours a day. In spite of that, the material feels overwhelming to most by the second day and by the third, they have had enough repetition that it begins to make sense to them.

    My reward is when the lights come on 🙂

  • One other point: Invariably the part of the class that newbies struggle with the most is joins, primary vs foreign keys and table aliases. Regarding the joins, one of the things that I have found useful is a Venn diagram that depicts inner vs left and right.

    Good luck with your class.

  • HanShi (7/2/2015)


    Grant Fritchey (7/2/2015)


    When I taught classes like this where all we were doing was querying, instead of setting up Express (not a bad idea, just not what I needed), I created a database with the objects I wanted to illustrate for the class, and gave everyone access to that. We did all our querying together, against the same tables with the same connection strings, same everything. That way you only have to get SSMS installed along with any scripts you want to give them. The scripts I gave them were canned scripts that we'd just be walking through, and, a copy of what we were going to type together so they could resolve typos easily, avoid typing if they wanted, and at least have a stable reference.

    This is also a good approach. Just keep one thing in mind when you learn your students about the INSERT and UPDATE commands. This could cause blocking and constraint issues when executed on the same records/tables by multiple persons at the same time. On the other hand: that is is a good moment to teach about these caveats 😉

    Absolutely true. But I had them each insert a record, then update their own record, then delete it. We didn't hit many issues that I remember. Plus, the majority of the time was working on SELECT.

    "The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood"
    - Theodore Roosevelt

    Author of:
    SQL Server Execution Plans
    SQL Server Query Performance Tuning

  • Regarding teaching caution: Some people might say we go overboard. The attendees must have their manager sign and return a document that says they understand that they are responsible for any changes or damage they do to the database...

    You don't seriously give them access to production databases, do you? That's just plain scary. Why not just restore a copy of the database somewhere that you can drop after the course is over? (Or did I miss something?)

  • pietlinden (7/2/2015)


    Regarding teaching caution: Some people might say we go overboard. The attendees must have their manager sign and return a document that says they understand that they are responsible for any changes or damage they do to the database...

    You don't seriously give them access to production databases, do you? That's just plain scary. Why not just restore a copy of the database somewhere that you can drop after the course is over? (Or did I miss something?)

    Many of them are self-hosted meaning they have complete control over access (we couldn't stop them if we wanted to). But yes, we advise them to work with a copy of the data or use logins with restricted access. The ones that we control cannot directly access the production databases at all.

    In the classroom, it is demo data.

  • Thanks for the advice everybody.

    There's definitely a couple of things to take away from here. I've discovered since my original post that 'reasonably powerful', in regards to the laptop, actually means 'might work'. It's not guaranteed they'll be able to access the VPN, so I think the Express and SSMS on each approach is going to be easiest to work. That will also limit any damage if somebody inadvertently drops something. As I said, I'll be using a small database that I've created so no serious damage could be done. Nobody should be writing DROPs, INSERTs, DELETEs or UPDATEs anyway but you never know.

    The classes will be pretty small, the group I'm training are largely shift workers so there's a limit to how many will be available at any time. I'm also going to be constrained by how many laptops I can get. I can say I'll be able to get one definitely and that's all. Hopefully I should be able to get a couple more but only two or three at most. To be honest, a class of four is the most I'd fancy training any way. I'm neither an experienced trainer nor an experienced SQL user so anything more than that would be a struggle I think.


    On two occasions I have been asked, "Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?" ... I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.
    —Charles Babbage, Passages from the Life of a Philosopher

    How to post a question to get the most help http://www.sqlservercentral.com/articles/Best+Practices/61537

Viewing 11 posts - 1 through 10 (of 10 total)

You must be logged in to reply to this topic. Login to reply