SQL - Structured Query Language

Resources:

Books: Online Tutorials:
Online References:

Defined:

SQL (pronounced "ess-que-el") stands for Structured Query Language. SQL is used to communicate with a database. According to ANSI (American National Standards Institute), it is the standard language for relational database management systems. SQL statements are used to perform tasks such as update data on a database, or retrieve data from a database.

Why SQL ?

How is SQL used in JAVA?


Using the SQL Demo Program


 
 
 

Keys to success:


Basic SQL Commands

SQL has four basic commands for manipulating data in tables: SQL has three basic commands for manipulating tables: For the purposes of this class we will only deal with manipulating data in the tables.  You can use Microsoft access to create the tables themselves.  The Java Connection object supports both Commit and Rollback functions directly. We'll cover those in the section on Java Database programming next week.

Notation in this document:

Select Command - Single Table

SELECT * FROM Products
SELECT Name, Cost FROM Products
SELECT Name AS Product_Name FROM Products
column-name comparison-operator value-1
column-name [NOT] LIKE pattern-string
column-name [NOT] IN (value-1 [, value-2] ... )

column-name [NOT] BETWEEN value-1 AND value-2

column-name IS [NOT] NULL
=  equal to
>  greater than
<  less than
>=  greater than or equal to
<=  less than or equal to
<>  not equal to
SELECT * FROM Products WHERE Cost > 10.0
SELECT * FROM Products WHERE Quantity <= 100
SELECT * FROM Products WHERE Name = 'Nails'
SELECT * FROM Products WHERE Name LIKE 'S%'
SELECT * FROM Products WHERE Name LIKE '__TR%'
SELECT * FROM Products WHERE Name NOT LIKE 'S%'
SELECT * From Products WHERE Name LIKE '[ABC]%'
SELECT * FROM Products WHERE Name IN ('Nails', 'Hammers', 'Saws')
SELECT * FROM Products WHERE Cost NOT IN (33,44,55)
SELECT * FROM Products WHERE Cost BETWEEN 10.0 AND 25.0
SELECT * FROM Products WHERE Quantity NOT BETWEEN 50 AND 100
SELECT * FROM Products WHERE Cost IS NULL
SELECT * FROM Products WHERE Quantity IS NOT NULL
SELECT * FROM Products WHERE Cost > 10 AND Quantity < 100
SELECT * FROM Products WHERE Name LIKE 'S%' OR Name LIKE 'T%'

Select Command - Multiple Tables Join

SELECT [distinct] column-list FROM table-list WHERE table1.column1 = table2.column2 GROUP BY column-list

SELECT [distinct] column-list From table1 INNER JOIN table2 ON table1.column = table2.column GROUP BY column-list 

(there other types of joins, your database class will cover these)
SELECT Customers.LastName, Customers.FirstName FROM Customers,Orders WHERE Orders.ProductName = 'Drill' AND
  Orders.CustomerPhone = Customers.Phone

SELECT Customers.LastName, Customers.FirstName FROM Customers INNER JOIN Orders ON Orders.CustomerPhone = Customers.Phone 
WHERE Orders.ProductName = 'Drill'

SELECT Customers.LastName, Customers.FirstName FROM Customers, Orders WHERE Orders.CustomerPhone = Customers.Phone 
AND Orders.Quantity*Orders.PriceEach > 100

SELECT Customers.LastName, Customers.FirstName FROM Customers INNER JOIN Orders ON Orders.CustomerPhone = Customers.Phone 
WHERE
Orders.Quantity*Orders.PriceEach > 100
SELECT Distinct Customers.LastName, Customers.FirstName FROM Customers INNER JOIN Orders ON Orders.CustomerPhone = Customers.Phone 
WHERE Orders.ProductName = 'Drill'

SELECT Customers.LastName, Customers.FirstName FROM Customers INNER JOIN Orders ON Orders.CustomerPhone = Customers.Phone 
WHERE Orders.ProductName = 'Drill' Group By
LastName, FirstName
   SELECT Customers.Phone, Customers.LastName, Customers.FirstName, 
   Count(Orders.OrderNumber) AS NumberOfPurchases,
   SUM(Orders.Quantity*Orders.PriceEach) AS TotalSpent
  
From Customers INNER JOIN Orders ON Orders.CustomerPhone = Customers.Phone
   GROUP BY Customers.Phone, Customers.LastName, Customers.FirstName 
   Order BY SUM(Orders.Quantity*Orders.PriceEach) DESC


Customers:  Orders:  Products: 
    Phone:VARCHAR
    LastName:VARCHAR
    FirstName:VARCHAR
    Address:VARCHAR
    City:VARCHAR
    State:VARCHAR
    Zip:VARCHAR
    OrderNumber:COUNTER
    CustomerPhone:VARCHAR
    ProductName:VARCHAR
    Quantity:SMALLINT
    PriceEach:DOUBLE
    OrderDate:DATETIME
    Name:VARCHAR
    Quantity:INTEGER
    Cost:DOUBLE



Insert Command

INSERT INTO Products (name, quantity, cost) VALUES ('Nails',100, 22.33);
INSERT INTO Products VALUES ('Screws', 200, .03);
INSERT INTO Products (name, quantity) VALUES('Hammers',200);
INSERT INTO ORDERS (CustomerPhone, ProductName, Quantity, PriceEach,OrderDate)
          Values ('222-3333', 'Screws', 44, .05, #2004-12-04 12:30:00#);

#2004-12-04 12:30:00#
{ts '2004-12-04 12:30:00'}

Delete Command

DELETE FROM Products
DELETE FROM Products WHERE Name = 'Nails'
DELETE FROM Products WHERE Cost < .05

Update Command

UPDATE Products SET Cost = 34 WHERE Name = 'Nails'
UPDATE Products SET Cost = 22, Quantity = 100 WHERE Name = 'Saws'
UPDATE Products SET Cost = 1.00

Partial List of SQL KeyWords (Varies with implementation)


 
ALL
AND
ANY
AS
ASC
AVG
BETWEEN
BY
CAST
CORRESPONDING
COUNT
CREATE
CROSS
DATE
DELETE
DESC
DISTINCT
DROP
ESCAPE
EXCEPT
EXISTS
FALSE
FROM
FULL
GLOBAL
GROUP
HAVING
IN
INNER
INSERT
INTERSECT
INTO
IS
JOIN
LEFT
LIKE
LOCAL
MATCH
MAX
MIN
NATURAL
NOT
NULL
ON
OR
ORDER
OUTER
RIGHT
SELECT
SET
SOME
SUM
TABLE
TEMPORARY
TRUE
UNION
UNIQUE
UNKNOWN
UPDATE
USING
VALUES
WHERE

  For a more complete list of reserved words used by SQL, Access, SQL Server, and Microsoft drivers, go to :
http://sqlserver2000.databases.aspfaq.com/what-are-reserved-access-odbc-and-sql-server-keywords.html