We will have a number of new developers coming onto our project soon, the majority of which have little to no oracle, or much database experience in general.
My manager has graciously volunteered me to give a little in-house training overview to get everyone up to speed on sql, pl/sql, etc. I figured I would throw in some general database theory while I'm at it.
If it were up to me though, I would tell them to go spend a day reading/writing practice code and come back to me with questions, but I don't think that will fly with my manager :)
I was curious if anyone had any added ideas of how/what I should present to them. All are technial, some probably already know the stuff, but there will be a few without much experience.
I figure I will start with a little bit about databases in general, quick overview of normalization, etc.
Then get into sql dml -- spend a lot of time covering select and all the variations, then just touch update/insert/delete since they're pretty easy once you have select down.
Then touch on DDL but there shouldn't be much for them to worry about there.
Then get into pl/sql and follow some other tutorials I've seen, hot-oracle.com has a pretty complete one, and just go over structure, syntax, programming practices, etc.
Then I'll have them go read/write practice code and come back to me with questions :)
Anything else that I should touch on?
Does anyone have any other places for good class/tutorial reference material? Ideas for small but worthwhile pl/sql programming projects? Learning I'm good at but my teaching leaves a little to be desired, and anything I can find to help in organizing the information in a logical way to be taught to new people would be great.
I would definitely approach it from the following perspective: what is the main problem for an Oracle DBA when developers do not know much about Oracle and still have to write code to work with Oracle?
Take main principles of Oracle optimizations and cover them while you are talking about SQL and PL/SQL in general. Talk about how Oracle accesses data and how Oracle optimizer works. That will make your developers write better code and you will have to do less tuning :-)
Alla S. Pfauntsch
"Life is what happens while you are planning something else".
I would also suggest development and distribution of a standards document.
I would foresee that you are going to be pulled in to fix/validate/help with a lot of SQL / PL/SQL. Your job will be much easier going forward if everyone codes to the same standards. Either that or invest in a 'lint' utility, PL/formatter or such, and tailor it to your standards. IMHO, this will make your life a good bit easier.
But if they don't even understand the basics of a SELECT statement, I pity you :).
PS. Above all, teach them 2 things:
- To try to think set-based and not procedurally (easier said than done)
- Join everything that can be joined - always. If A=B and B=C, always add AND A=C
This will also save you headaches in the long run.
You might want to avoid teaching them about DROP or
TRUNCATE until they have a bit more knowledge !
Strangely enough, the concept a lot of first time oracle
developers have understanding, is the concept of what a
USER is, as opposed to a SCHEMA.
eg. If you grant them all access to a number of tables, before they start, they automatically believe that the user they login with is the owner of that table. You might want to go through GRANTS and SYNONYMS with them at an early stage.
I would be sure to cover built-in functions.
I had a developer writing code to find the next available record number to enter into a table. When I told him about the MAX function, he was both relieved and frustrated that he put all this work into something that already existed. (in this case, we didn't want to use sequences)
But most of all, you don't want them coming to you with every little thing, so I would tell them to register with Technet.oracle.com, and provide them with other resources they can consult with before they come running to you. Sometimes, it serves them better to teach them how to get answers for themselves than to give them out to them. (I'm a former teacher)
Agreed, I will definately make sure they know where to find answers :)
I just want to give them a quick overview to get them up to speed so they won't stare at technet completly oblivious when they see things like transactions/commits/rollbacks, or don't understand normalization and good coding practices, etc.