SQL introduction
SWC Getting data out of databases Databases are ”just” containers of data We could – in principle – just put data in a text file instead The real strength of databases is the ability to efficiently retrieve a specified subset of data
SWC Getting data out of databases Suppose we have information about a set of persons: –Name –Address –Date of birth –Occupation –Income –… We wish to find all persons, who are older than 40 years, and have an income of more than $50,000 Is that an easy or hard task…?
SWC Getting data out of databases NameAddressDate of birthOccupationIncome John None$20,000 Mira Doctor$120,000 Alex Programmer$240,000 Steven Teacher$60,000 Joanne Doctor$90,000 Hannah Nurse$45,000 Susanne None$20,000
SWC Getting data out of databases NameAddressDate of birthOccupationIncome John None$20,000 Mira Doctor$120,000 Alex Programmer$240,000 Steven Teacher$60,000 Joanne Doctor$90,000 Hannah Nurse$45,000 Susanne None$20,000 ”Older than 40 years”
SWC Getting data out of databases NameAddressDate of birthOccupationIncome Mira Doctor$120,000 Steven Teacher$60,000 Joanne Doctor$90,000 Susanne None$20,000
SWC Getting data out of databases NameAddressDate of birthOccupationIncome Mira Doctor$120,000 Steven Teacher$60,000 Joanne Doctor$90,000 Susanne None$20,000 ”Income of more than $50,000”
SWC Getting data out of databases NameAddressDate of birthOccupationIncome Mira Doctor$120,000 Steven Teacher$60,000 Joanne Doctor$90,000
SWC Getting data out of databases Pretty easy; we could almost do it just by looking at the table What if we had 100,000 records…? Maybe I could write a small program to pick out the relevant records
SWC Getting data out of databases for (Records r : recordList) { if ((r.getAge() > 40) and (r.getIncome() > 50000)) { selectedRecords.add(); }
SWC Getting data out of databases Fine, but… The code is very task-specific; can only solve this specific problem The code might be inefficient; we examine all records to find the specified subset Enter SQL!
SWC SQL SQL – Structured Query Language A language which enables us to specify subsets of data in a database Subsets in terms of –Tables –Fields –Conditions on fields
SWC SQL SQL is the standard for database languages It is non-procedural; you specify what data to find, not how to find it Fairly easy to learn and understand
SWC SQL SQL enables us to –Create databases and tables –Perform ”data management” like inserting, updating and deleting records –Perform queries on data; i.e. retrieve specified subsets of data We concentrate on queries initially