One weakness of SQL has been its inability to express certain classes of queries, e.g., iterative queries and database schema-independent queries. Fixes to this problem generally involve embedding SQL in a more expressive language. Reflection (the ability of a language to encode arbitrary programs and evaluate these encodings during execution) can provide a seamless, natural solution. In database query languages reflection has been generally confined to a procedural setting, where one paper in particular, Van den Bussche et al, has given us much of our inspiration; however, exactly how to pragmatically incorporate reflection into a query language like SQL has remained elusive. This paper presents the design and implementation of a Reflective SQL (RSQL): an extension of SQL wherein programs themselves can create (i.e., reify), manipulate and evaluate programs. Ordinary SQL tables serve to encode these programs; these tables look and feel much like the programs they encode and, furthermore, retain SQL's declarative nature. The implementation itself is comprised of an RSQL interface and a relational database server. This work establishes, in a practical setting, a means of enhancing SQL, opening new avenues to solutions of database problems that have been hitherto inaccessible through SQL alone.