Professional Documents
Culture Documents
What is SQL?
• SQL stands for Structured Query Language
• SQL allows you to access a database
• SQL is an ANSI standard computer language
• SQL can execute queries against a database
• SQL can retrieve data from a database
• SQL can insert new records in a database
• SQL can delete records from a database
• SQL can update records in a database
• SQL is easy to learn
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!
The table above contains three records (one for each person) and four columns (LastName,
FirstName, Address, and City).
SQL Queries
With SQL, we can query a database and have a result set returned.
LastName
Hansen
Svendson
Pettersen
Note: Some database systems require a semicolon at the end of the SQL statement. We don't use
the semicolon in our tutorials.
These query and update commands together form the Data Manipulation Language (DML) part
of SQL:
SQL Basics
P.G. Daly
9/13/2004
Go to page: 1 2
Knowing how to read and write SQL is a skill that is usually taken for granted. It's assumed SQL is a tool
every IT professional has in his or her toolkit. Within the world of the intranet where the business and IT
realms often blend together, that can be a detrimental assumption to make.
SQL is an important part of the intranet world, yet we hear so little about it. It's hidden under the covers of
Web sites where it tends to go unnoticed, yet it's found just about everywhere because SQL is usually a
component of every dynamic Web site. Regardless of the Web technologies used on the site
(ColdFusion, ASP, Java/JSP, PHP, etc.), the bottom line is that some form of SQL is used for all
database interactions.
Have questions about SQL, databases or dynamic Web applications? Find an answer in the
Intranet Journal Forum.
Background
SQL stands for Structured Query Language and it is an American National Standards Institute (ANSI)
language. It is used to access and manipulate data within relational databases such as MS Access,
Oracle, DB2, and Sybase, to name a few. Almost all vendors have their own flavor of SQL, but in order to
conform to the ANSI standard they must support the same major keywords (SELECT, UPDATE,
DELETE, etc.) in a consistent manner.
Let's use a simple example to illustrate the most common usage of the SQL major keywords in most Web
sites.
The Data
A database consists of one or more tables containing records (rows) of data. Each table has a set of
predefined fields that define what types of information they can contain.
In this example, our table will be named "Customers." It has four pre-defined fields: LastName,
FirstName, City, and State. It consists of four rows of data as shown below:
The SELECT statement is used more often than any other statement within the SQL language. It is used
to select data read only from a database based on a set of criteria. The syntax for a select statement is:
At a minimum, you must select one column from one table; the rest is optional. As for the semicolon (;), it
is used to terminate an SQL statement and separate it from other SQL statements included in the same
call to the server. Whether the semicolon is required or is optional depends on the database with which
you are working.
For example, if you wanted to select all of the records from our Customers table, the statement would be:
Using a * denotes you you want to select "all." The result would be an exact replica of the Customers
table as it is shown above.
If you wanted to choose only the first and last names of your customers, the statement would change to:
Result:
LastName FirstName
Smith John
Jones Laura
Casey Mike
Doe Jane
If you wanted to choose data based on a specified criteria, you would use the WHERE clause. The syntax
looks as follows:
Operator Description
= Equal
< > (some versions of SQL use !=) Not equal
> Greater than
< Less than
>= Greater than or equal
<= Less than or equal
BETWEEN Between an inclusive range
LIKE Search for a pattern
So, for example, if you wanted to choose all information about only the customers that lived in the state of
Pennsylvania, you would write the following:
Result:
Notice that we used the single quote (') to enclose the value within the WHERE clause. Use single quotes
to enclose textual values (most databases will accept double quotes as well); do not use any quotes for
numeric values.
Use the LIKE operator to search for patterns within a data field. Combined with a wildcard "%", the LIKE
operator is a powerful way to search.
To search for all cities within our Customers that begin with an "An":
City
Los Angeles
DISTINCT Keyword
With the SELECT statements used thus far, we've selected all values satisfying a particular criteria. If we
wanted to select only the distinct values (no duplicates) from the table, we would have to use the keyword
DISTINCT. For this example, let us use the following Orders Table:
CompanyName OrderNumber
ABC Toys 123456
Wonderful Widgets 456789
ABC Toys 158763
Fabulous Furry Friends 748596
If we simply wrote:
CompanyName
ABC Toys
Wonderful Widgets
ABC Toys
Fabulous Furry Friends
INSERT Statement
The INSERT statement is used to enter new rows into a table within the database. Its syntax is:
If you are inserting a row that has data for each of the fields within that table, the above syntax works fine.
Keep in mind the order of your values must match the order and data type for each of the fields within the
table.
In this statement you can specify which columns you have data for and what the values are. The order of
the columns and the corresponding values must match.
Result:
UPDATE Statement
The SQL UPDATE statement is used to update existing data within a table. The syntax for this statement
is:
UPDATE tablename
SET columnname = newvalue
WHERE columnname = somevalue
In the Customers table, if we wanted to change the last name of "Christian" to "Thomas" we would write
the following:
UPDATE Customers
SET LastName = 'Thomas'
WHERE LastName = 'Christian';
If we wanted to change the City and State of customer Laura Jones because she relocated, we could
update multiple columns at a time with the following statement:
UPDATE Customers
SET City = 'Seattle',State='WA'
WHERE LastName = 'Jones' AND FirstName = 'Laura';
Result:
Typically databases have a unique record indentifier in each of its tables. The purpose of this primary key
(as it is often called) is to make record identification easier and more foolproof. For instance, in the last
example, if we had two people named "Laura Jones" in our Customers table, we would inadvertently be
updating both customers with a new city and state even though only one of them required a change.
Using the unique identifier in our criteria would prevent these types of problems.
DELETE Statement
This lesson would not be complete without the DELETE statement allowing us to delete rows within a
table and clear out the data we no longer need.
Result:
You can also delete all data from within a table while leaving the table intact. The syntax for this
command is:
Needless to say, you want to use the DELETE function cautiously to ensure you are deleting the correct
record(s). This is yet another reason why having a unique identifier in the database is so important.
Wrap-Up
By no means is this article a complete tutorial on SQL. However, it should give you a better idea of the
code that is working behind the scenes of your favorite intranet applications. It will also lay a foundation
that will allow you to better understand and create dynamic Web pages that interface with your existing
databases regardless of the Web platform you use.
This page contains the essential commands to manage databases using SQL (Structured Query
Language). I use it as a refference for myself. I don't pretend to be an SQL-expert. Others may
use this reference freely. If you have any suggestions or comments please e-mail me!
Some commands depend on the type of server used. I experiment with four servers, Microsoft
SQL Server, Borland Interbase Server, MySQL Server en Sybase SQL Anywhere. If a command
is specific to one server I indicate this with an icon.
1. indicates that the command works with MS SQL Server.
The commands are written in bold, italicised text (databasenames, fieldnames, values, ...) is up to
you to fill in. Note also that I speak of fields and records instaid off rows and coloms. In MS
SQL Server manuals I see they use rows and coloms, but I prefer to use fields and records,
probably because that was the way in dBase and MS Access, which I used for years.
sp_databases
show databases
use databasename
show tables
sp_help
There is another, more complicated, command to retrieve the names of the tables in the database,
but where you get a list of ALL tables, including system tables using sp_help, you can specify to
view only user defined tables
If you want to see the tables of an InterBase database use the menu "Metadata", "Show..."
and select "Tables" in the "View Information on"-dropdown. Click "OK" and you see the tables
of the active database. Using ISQL you can use show tables
To see the tables in Sybase press functionkey F7.
describe tabelname
sp_help tablename
To see the fields of an InterBase database use the menu "Metadata", "Show..." and select
"Tables" in the "View Information on"-dropdown. Type the name of the database in the "Object
name"-textfield. Click "OK" and you see the fields of the specified table. Using ISQL you can
use show table tablename
To see the fields in a Sybase table press functionkey F7, select the table and click
"Columns".
5. Create a database:
Default value: Add default value to the fieldlist in the 'create table'-command:
(fieldname1 datatype1, fieldname2 datatype2 default 'value', fieldname3
datatype3, ...)
Note that this command could take some time and put a lot of stress on the processor and
memory of the server if you try to view a large database this way. On my server (Pentium MMX
233 Mhz - 64 Mb memory) it took 1:25 minutes to retrieve 25000 records from a database and it
gave warnigs of shortage in virtual memory, so please don't try this on a production database (;-).
Usualy it is better to select fields and conditions to limit the amount of records and the stress on
the server.
You can also use boolean operators to specify more then one condition (OR, AND, NOT,
BETWEEN, IN). With 'BETWEEN' you give a minimum and maximum value to the condition,
with 'IN' you can give a list of values.
Example:
select Firstname, Lastname, Department from Employees
where Lastname LIKE "Van%" AND
Badge BETWEEN 121990 and 141990 AND
Department IN ("Sales", "Logistics")
order by Lastname
This statement retrieves all the employees where Lastname begins with "Van", whose
badgenumbers are between 121990 and 141990, who work at the Sales- or Logisticsdepartment,
and displays their Lastname, Firstname and Dapartment ordered by Lastname.
Note theat the 'ORDER BY' statemant can have more then one fieldname and can also take 'asc'
or 'desc' as last argument (for ascending or descnding order).
If you leave out the fieldnames then the values must match the number of fields in the table. If
you only want to add a value to some fields you have to specify them and the values must mach
the number of specified fields. The unspecified fields are filled with NULL or the default
constraint defined in the table. You could concider to specify defaults like "unknown" or "N/A"
to avoid a NULL-value in the field.
update tablename
set fieldname1='value1', fieldname2='value2', ...
where fieldname3 = condition
If you ommit the 'where'-statement the update will be performed on ALL the records in the table!
13. Deleting a record from a table
Be arefull in using this command!! Ommitting the 'where'-statement will erae ALL the records in
the table and leave you with an empty table!!!
The new field is filled with NULL and can be filled using the update-command after adding the
field.
LEFT returns part of character string, starting at number of character from the
left specified in the argument.
RIGHT returns part of character string, starting at number of character from the
right specified in the argument.
DATEADD returns value of the date with an additional date interval added.
Note that a view under SQL is the same as a query you create with Access.
You can't edit a view using SQL. You can use the Enterprise Manager of MS SQL to edit a view
or you can delete a view and recreate it with the same name.
To prevent the possibility to view the definition of a view you can use encryption:
You can insert rows through the view that DON'T match the WHERE-statement inthe view
definition, but then you can't retrieve the new row with the view. If you want to prevent this you
can use the check option:
create view viewname as
select fieldname1, fieldname2, ... from tablename1, tablename2, ...
where fieldname = condition with check option
You can't delete records through a view that don't match the WHERE-statement in the view
definition.
You can update a record through a view so that it doesn't match the WHERE-statement anymore.
You can't update a view if the updated columns belong to different tables.
24. Indexes:
This kind of index enforces integrity of the table by disallowing duplicete values in the indexed
field.
A clustered index forces SQL Server to phisicaly store the table data in the exact order of of the
index. This improves the performance of the table. You can only have obne clustered index on a
table, the selected fieldname should be choosen carefully and every table should have an
clustered index.
25. Transaction:
A transaction is a series of SQL-statements performed at once, with the ability to
undo the changes if something goes wrong during the processing of the statements.
A transaction is enclosed in "begin tran" and "commit tran".
Example:
begin tran
update tablename
set fieldname = newvalue
where fieldname = condition
update tablename2
set fieldname = newvalue
where fieldname = condition
if @@error != 0
begin
rollback tran
print 'Error occured, no rows updated'
return
end
commit tran
You can nest one transaction ino another by using named transactions. Be shure however to
include a 'commit tran' for every 'begin tran' to avoid leaving a transaction open.
Example:
26. Rules:
A rule controls the values that can be entered into a field of a table. To apply a rule
to a field you have to take two steps: create the rule and bind the rule to the field.
To display rule bindings you can use 'sp_help tablename', to display the rules you can use
'sp_helptext rule_name' and to rename a rule you can use 'sp_rename rule_name, new_name'.
27. Defaults:
A default is create to provide a value for a field if the user doesn't fill in one. Just like
creating rules you have to make to steps to apply ad efault: create it and bind it to a
field in a table.
To display default bindings you can use 'sp_help tablename', to display the default you can use
'sp_helptext default_name' and to rename a default you can use 'sp_rename default_name,
new_name'.
To execute the procedure you use 'exec procedure_name'. You can use parameters in procedures
to pass values to the procedure:
You can also use variables in a procedure. You first have to declare them (declare @var_name
var_type) and then you can assign a value to it (select @var_name = expression).
If you want to alter a procedure, you first have to drop it and then recreate it under the same
name.
sp_makestartup procedure_name
29. Datatypes:
This is an overview of the different datatypes used by the different servers.
mediumin
- - -
t
int int int int
bigint - - -
- - real real
smalldateti
- - -
me
datetime - datetime -
timestam
- timestamp timestamp
p
time - - time
year - - -
long
- - -
varchar
tinytext - - -
text - text -
- - ntext -
mediumte
- - -
xt
longtext - - -
- nchar(n) nchar(n) -
- nchar varying(n) nvarchar(n) -
Sponsored Links
SQL Databases
If you’re working with the Structured Query Language
(SQL), you’ll want to read these articles:
Suggested Reading
Related Articles
Sponsored Links