• The same advice holds true for a DBA learning to program as anyone else learning to program; determine your goals.

    For any DBA, I'd say learning SQL would be the most important - not just memorizing Microsoft additions, but really working with the language at a detailed level. You'll note that the advanced scripts we see use a variety of concepts to achieve their aims, some of which are little Microsoft based tricks, and some of which are very sound, generalizable algorithms and techniques. SQL Parameters are essentially no different than variables in other languages, passing arguments is similar - make use of OUTPUT parameters in stored procedures, and that'll be a sound base for other procedural languages.

    If you're not serious, then play around with whatever you like - I'd recommend, in general, a scripting language.

    A simple set would be SQL, batch files or Powershell, and x.NET or Python or another modern easy to write language.

    If you are serious, pick about three disparate languages... and learn your algorithms and underlying constructs. Learn about sorting algorithms, from bubble and selection sorts to hash and quick sorts. Learn about pointers and trees and linked lists and hash tables and other data structures. Learn about network coding - at a minimum, TCP and UDP. Learn about disk access, buffered and unbuffered, sequential and random. Learn about CPU instruction sets. Learn about stack based vs. register based coding. Learn about word alignment. Learn about data types. Learn about parallel programming. Learn about memory management.

    A very serious set would be, say, SQL, C, and some CPU's assembly language - after learning these three, anything other procedural language is just syntax.

    (1)C++ can be learned as an adjunct for object oriented programming, but for the very serious, learn C first; object orientation is an abstraction layer for the programmer that doesn't survive at the instructions the CPU executes.

    A moderate set would be, say, SQL, x.NET or Python or another modern easy to write language, and either C or an assembly language.

    x.NET - all .NET languages are essentially a front end to a very large library of functions and procedures, with minor syntactical differences. VB.net is case insensitive, C#.net is case sensititive.