SQL Crash Course
SQL Crash Course
1. What is SQL?
SQL SQL SQL SQL SQL SQL SQL SQL SQL
stands for Structured Query Language allows you to access a database is an ANSI standard computer language can execute queries against a database can retrieve data from a database can insert new records in a database can delete records from a database can update records in a database is easy to learn
SQL is an ANSI (American National Standards Institute) standard computer language for accessing and manipulating database systems. SQL statements are used to retrieve and update data in a database. SQL works with database programs like MS Access, DB2, Informix, MS SQL Server, Oracle, Sybase, etc. Unfortunately, there are many different versions of the SQL language, but to be in compliance with the ANSI standard; they must support the same major keywords in a similar manner (such as SELECT, UPDATE, DELETE, INSERT, WHERE, and others).
Note: Most of the SQL database programs also have their own proprietary extensions in addition to the SQL standard!
SQL Database Tables A database most often contains one or more tables. Each table is identified by a name (e.g. "Customers" or "Orders"). Tables contain records (rows) with data. Below is an example of a table called "Persons":
LastName Patel Shah Mehta Salvi FirstName Himanshu Vinod Shruti Namrata Address Paldi Satellite Sanskar Thane City Ahmedabad Ahmedabad Bhavnagar Mumbai
The table above contains three records (one for each person) and four columns (LastName, FirstName, Address, and City).
2. SQL Queries
A query like this:
With SQL, we can query a database and have a result set returned.
SQL SELECT Example To select the content of columns named "LastName" and "FirstName", from the database table called "Persons", use a SELECT statement like this:
Sql Hand Book 3
The result
LastName Patel Shah Mehta Salvi FirstName Himanshu Vinod Shruti Namrata
The Result Set The result from a SQL query is stored in a result-set. Most database software systems allow navigation of the result set with programming functions, like: MoveTo-First-Record, Get-Record-Content, Move-To-Next-Record, etc. Programming functions like these are not a part of this tutorial. To learn about accessing data with function calls, please visit our ADO tutorial. Semicolon after SQL Statements? Semicolon is the standard way to separate each SQL statement in database systems that allow more than one SQL statement to be executed in the same call to the server. Some SQL tutorials end each SQL statement with a semicolon. Is this necessary? We are using MS Access and SQL Server 2000 and we do not have to put a semicolon after each SQL statement, but some database programs force you to use it.
Sql Hand Book 4
Result
Company Sega W3Schools Trio W3Schools
Note that "W3Schools" is listed twice in the result-set. To select only DIFFERENT values from the column named "Company" we use a SELECT DISTINCT statement like this:
Sql Hand Book 5
Using the WHERE Clause To select only the persons living in the city "Sandnes", we add a WHERE clause to the SELECT statement: SELECT * FROM Persons WHERE City='Ahmedabad' "Persons" table
LastName
Sql Hand Book
FirstName
Address
City
Year
6
Result
LastName Patel Shah FirstName Himanshu Vinod Address Paldi Satellite City Ahmedabad Ahmedabad Year 1951 1978
Using Quotes Note that we have used single quotes around the conditional values in the examples. SQL uses single quotes around text values (most database systems will also accept double quotes). Numeric values should not be enclosed in quotes. For text values: This is correct: SELECT * FROM Persons WHERE FirstName='Vinod' This is wrong: SELECT * FROM Persons WHERE FirstName=Vinod For numeric values: This is correct: SELECT * FROM Persons WHERE Year>1965 This is wrong: SELECT * FROM Persons WHERE Year>'1965'
Using LIKE The following SQL statement will return persons with first names that start with an 'O': SELECT * FROM Persons WHERE FirstName LIKE 'O%' The following SQL statement will return persons with first names that end with an 'a': SELECT * FROM Persons WHERE FirstName LIKE '%a' The following SQL statement will return persons with first names that contain the pattern 'la': SELECT * FROM Persons WHERE FirstName LIKE '%la%'
You can also specify the columns for which you want to insert data: INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,....) Insert a New Row This "Persons" table:
LastName Patel FirstName Himanshu Address Paldi City Ahmedabad
And this SQL statement: INSERT INTO Persons VALUES ('Shah', 'Vinod', 'Satellite', 'Ahmedabad) Will give this result:
LastName Patel Shah FirstName Himanshu Vinod Address Paldi Satellite City Ahmedabad Ahmedabad
And This SQL statement: INSERT INTO Persons (LastName, Address) VALUES ('Modi', 'Sector-25')
LastName Patel Shah Modi FirstName Himanshu Vinod Address Paldi Satellite Sector-25 City Ahmedabad Ahmedabad
Update one Column in a Row We want to add a first name to the person with a last name of Shah": UPDATE Person SET FirstName = 'Nina' WHERE LastName = 'Modi'
LastName Patel Shah Modi FirstName Himanshu Vinod Nina Address Paldi Satellite Sector-25 City Ahmedabad Ahmedabad
Update several Columns in a Row We want to change the address and add the name of the city: UPDATE Person SET Address = 'Sector-2', City = 'Gandhinagar' WHERE LastName = 'Modi'
LastName Patel Shah Modi FirstName Himanshu Vinod Nina Address Paldi Satellite Sector-2 City Ahmedabad Ahmedabad Gandhinagar
Person:
LastName Patel Shah Modi FirstName Himanshu Vinod Nina Address Paldi Satellite Sector-2 City Ahmedabad Ahmedabad Gandhinagar
Delete a Row "Vinod Shah" is going to be deleted: DELETE FROM Person WHERE LastName = 'Shah'
LastName Patel Modi FirstName Himanshu Nina Address Paldi Sector-2 City Ahmedabad Gandhinagar
Delete All Rows It is possible to delete all rows in a table without deleting the table. This means that the table structure, attributes, and indexes will be intact: DELETE FROM table_name or DELETE * FROM table_name
SQL ORDER BY
The ORDER BY keyword is used to sort the result. Sort the Rows The ORDER BY clause is used to sort the rows. Orders:
Company
Sql Hand Book
OrderNumber
11
Example To display the companies in alphabetical order: SELECT Company, OrderNumber FROM Orders ORDER BY Company Result
Company ABC Shop Sega W3Schools W3Schools OrderNumber 5678 3412 6798 2312
Example To display the companies in alphabetical order AND the ordernumbers in numerical order: SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber Result
Company ABC Shop Sega W3Schools W3Schools OrderNumber 5678 3412 2312 6798
Example To display the companies in reverse alphabetical order: SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC Result:
Company W3Schools W3Schools Sega ABC Shop OrderNumber 6798 2312 3412 5678
Example
Sql Hand Book 12
To display the companies in reverse alphabetical order AND the ordernumbers in numerical order: SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC Result:
Company W3Schools W3Schools Sega ABC Shop OrderNumber 2312 6798 3412 5678
Example Use AND to display each person with the first name equal to "Vinod", and the last name equal to "Shah": SELECT * FROM Persons WHERE FirstName='Vinod' AND LastName='Shah'
LastName Shah FirstName Vinod Address Satellite City Ahmedabad
Example Use OR to display each person with the first name equal to "Vinod", or the last name equal to "shah": SELECT * FROM Persons WHERE firstname='Vinod OR lastname='Shah' Result:
LastName Shah Shah FirstName Vinod Purvi Address Satellite Gurukul City Ahmedabad Ahmedabad
Example You can also combine AND and OR (use parentheses to form complex expressions): SELECT * FROM Persons WHERE (FirstName='Vinod' OR FirstName='Purvi') AND LastName='Shah' Result:
LastName Shah Shah
Sql Hand Book
SQL IN
IN The IN operator may be used if you know the exact value you want to return for at least one of the columns. SELECT column_name FROM table_name WHERE column_name IN (value1,value2,..) Original Table (used in the examples)
LastName Patel Shah Mehta Salvi Modi Shah FirstName Himanshu Vinod Shruti Namrata Nina Purvi Address Paldi Satellite Sanskar Thane Sector-2 Gurukul City Ahmedabad Ahmedabad Bhavnagar Mumbai Gandhinagar Ahmedabad
Example 1 To display the persons with LastName equal to "Salvi" or "Modi", use the following SQL: SELECT * FROM Persons WHERE LastName IN ('Salvi','Modi') Result
LastName Salvi Modi FirstName Namrata Nina Address Thane Sector-2 City Mumbai Gandhinagar
Example 1 To display the persons alphabetically between (and including) "Hansen" and exclusive "Pettersen", use the following SQL: SELECT * FROM Persons WHERE LastName BETWEEN 'Salvi' AND 'Modi' Result:
LastName Salvi Modi FirstName Namrata Nina Address Thane Sector-2 City Mumbai Gandhinagar
IMPORTANT! The BETWEEN...AND operator is treated differently in different databases. With some databases a person with the LastName of "Salvi" or "Modi" will not be listed (BETWEEN..AND only selects fields that are between and excluding the test values). With some databases a person with the last name of "Salvi" or "Modi" will be listed (BETWEEN..AND selects fields that are between and including the test values). With other databases a person with the last name of "Salvi" will be listed, but "Modi" will not be listed (BETWEEN..AND selects fields between the test values, including the first test value and excluding the last test value). Therefore: Check how your database treats the BETWEEN....AND operator!
Example 2 To display the persons outside the range used in the previous example, use the NOT operator: SELECT * FROM Persons WHERE LastName NOT BETWEEN 'Salvi' AND 'Modi' Result
LastName Patel Shah Mehta Shah FirstName Himanshu Vinod Shruti Purvi Address Paldi Satellite Sanskar Gurukul City Ahmedabad Ahmedabad Bhavnagar Ahmedabad
16