CHAPTER SIXTEEN -
MySQL
The MySQL option in your control panel automates MySQL.
The information contained here will assist you in implementing MySQL. AMS does not provide
technical support for using MySQL, however you will find loads of
useful information as well as additional resources that will assist you here.
Overview | MySQL Control Panel Feature | Examples of SQL Statements | Quick Actions
Advanced Queries | Table
Properties | Table Select | Perl SQL Delete Example
Perl SQL Insert Example | Perl SQL Update Example | Perl While Loop Example
View Dump Database Schema | Using MySQL With CGI Scripts
References and Tutorials | Back To "Manual - Table Of Contents"
MySQL Overview
SQL stands for Structured Query Language. It is the
most common language used for accessing a database. It has been in use for many years by
many database vendors. Many consider it the best database language to use. It is used by
the MySQL database feature inside your control panel.
Without going into the technical details, SQL is a
language which consists of a set of commands that you issue to create, make changes to,
and retrieve data from a database. Here are some SQL command examples.
These commands can be issued through a Graphical User
Interface or by embedding them in a computer program that you write. The MySQL Control
Panel provided as part of your account is a GUI that works over the internet through your
web browser. This makes it very convenient for administration of web based database
applications. Setting up and managing your database will be done through the MySQL Control
Panel.
To allow access to your database through your web site,
you will need to create Common Gateway Interface scripts. These scripts are small computer
programs which run on the web hosting server and are activated by clicking on a link or a
button in a web page. This will allow users of your web site to interact with your web
site in a more meaningful manner. Using CGI scripts and MySQL you can maintain account
information on visitors, allow people to search and browse catalogs, and much more. See
Using MySQL with CGI scripts for documentation on how to set up such scripts.
MySQL is an implementation of the SQL language
developed by TcX. It is robust, quick, and very flexible. It provides all of the standard
SQL datatypes and commands. MySQL is provided as part of your web site account at no
additional charge. MySQL is pronounced My Ess Que Ell.
For step by step instruction on how to
perform some
common tasks see the Quick Actions page.
Detailed documentation, licensing information, and much
more can be found at the MySQL web site. Many books are
available which describe SQL in detail. If you plan on doing much database development, it
is recommended that you review one or more of these.
Please note that AMS does not provide technical or
development support for MySQL applications.
Using
The MySQL Control Panel
The MySQL feature inside your Control Panel is where
you manage your database, including desiging tables, adding, deleting, and updating
records, all from within your web browser.
When you first click on the MySQL feature, you will be
asked to provide a name for your database and a password, you can use the same username
and password that you use for your Control Panel if you so desire. Once the database is
created, and you return to this feature inside your Control Panel it will then become the
Welcome page for your database. A tree view is on the left. The name of your database and
the version of MySQL are displayed to the right of the tree.
The Tree
The top entry in the tree, Home, will
return you to the Welcome page. Beneath that is your database name and a square with a
plus or minus sign in it. Clicking the square will show and hide the names of the tables
in the database in the tree. Clicking on the database name in the tree will display the
main database management page. Clicking on one of the tables names in the tree will
display the properties of that table.
The Main Database Management Page
This page displays a list of all the tables in your
database and the number of records in each. You can also execute an SQL statement, perform
advanced queries, dump the database, and create new tables.
The List of Tables
Next to each table name are links to various actions
you can perform on a table.
Browse Display the records in the table 30 at a time.
From the Browse page you can edit or delete a record.
Select Build and execute a SELECT query on the table.
Only those records which match the criteria you provide will be displayed.
Insert Add a new record to the table. Enter the data in
the fields provided. Various functions can be used to obtain the current time, generate
random numbers, and more. Press the Save button to insert the record into the table.
Properties Display the fields in the table with their
data type and attributes. Table management functions for the table are also provided.
Drop Remove the table and its contents from the
database. Once you do this neither the table nor the data will be available.
Empty Delete all of the records in the table. Once you
do this the table will still exist but the data in the table will no longer be available.
Execute an SQL Statement
Any SQL statement can be executed on your database by
typing it into the textbox labeled Run SQL query/queries on database and
pressing the Go button. For help with SQL statements???
Query by example
Advanced queries can be built and executed using a
graphical interface.
View dump (schema) of database
Dumping of the database displays the structure and or
data contained in the database. You can then save this information to a file on your local
computer for archiving or to aide in the development of your database. The contents and
format of the dump are based on the radio button and check box selections you make. See
also View dump (schema) of table.
Create a new table
Create a new table by typing in the name of the table
and the number of fields to be in the table and pressing the Go button. You
will be shown a page which will allow you to set up the data type and attributes of each
field.
Examples
of SQL Statements
Below a few examples are provided to give you an idea
of what an SQL statement looks like.
Though they have a specific structure and can perform
complex operations, SQL commands are fairly easy to understand.
For example,
CREATE TABLE Phonebook (
Id char(5),
Name char(50),
Telephone char(11)
);
creates a new table in your database named Phonebook
that has three fields, Id, Name, and Telephone, which are characters strings of length 5,
50 , and 11, respectively.
The statement
INSERT INTO Phonebook (Id, Name, Telephone)
VALUES (AAAAA, Joe Smith, 800-555-1212);
adds the data into the named fields as a new record of
the Phonebook table in your database.
The statement
SELECT Name, Telephone
FROM Phonebook
WHERE Id = AAAAA;
searches the table Phonebook and finds the Name and
Telephone number of the customer whose Id is equal to AAAAA.
These are, of course, simple statements. Much more
complicated databases and queries can be written using SQL, all of which are supported by
MySQL.
Much of your database management will be done through
the MySQL Control Panel provided in your account administration pages and not by typing in
commands such as above. Though not needed, a working undrstanding of how to read and write
SQL statements is of great help. There are many books and web sites which teach SQL and
have many more examples. If you plan on doing much database development, it is recommended
that you review them.
Quick Actions
For quick step by step tutorial on how to perform
common functions, click below. For all of the examples, you must first login to your
Control Panel and then into your MySQL feature and go to the Main Database Management Page
of your MySQL database.
Create a table
1.Type in the name of the new table and the number of
fields for the table in
the textboxes provided.
2.Press the Go button next to the Fields textbox.
3.Enter in the name of each field and the data type of the field. Other attributes
of the field can be set as well. Length of char strings, not null, default value
are commonly used attributes.
4.You can also specify primary fields, indexes and unique fields here as well.
These can also be set for individual fields from the table properties page.
5.If everything is correctly specified, when you press the Save button the table
will be created and you will end up on the table properties page for the new
table.
Add a record
1.From the Main Database Management Page or the table
properties page
press the Insert link.
2.Enter in a value for each field. You must provide a value for any field which
set not null and has no default value. If you do not provide a value the default
value will be used if provided. The functions in the menu can be used to
generate a value for the field for you. Note that the functions may require a
value to operate on.
3.Press the Save button.
Perform a search
1.From the Main Database Management Page or the table
properties page
press the Select link.
2.Fill out the form fields as described here.
3.Press the Go button.
Many other operations can be performed by using the
MySQL Control Panel.
Advanced Queries
Queries are built by selecting the fields to search on
and the criteria to use for the search. The SQL statement that will be executed is
displayed in the textbox in the lower right. The statement is updated to reflect the
values provided in the rest of the form fields on the page by pressing the "Update
Query" button. Execute the statement by pressing on the "Submit Query"
button.
Each column can be used to specify a field for the SQL
statement. Empty columns are ignored.
The fields specified in the "Fields" row are
combined with criteria below it to create a WHERE clause. If the "Show" checkbox
in on then the field is placed in the SELECT clause as well. The query results may be
sorted on a field based on the selection in the "Sort" menu.
More fields can be added by turning on the
"Ins" checkbox below a column or selecting a positive number in the
"Add/Delete Field Columns" menu. Fields are deleted by turning on the
"Del" checkbox or selecting a negative number in the "Add/Delete Field
Columns" menu. Press "Update Query" to update the page to reflect the
changes. You may have to scroll your web browser to the right to see all of the field
columns.
The tables selected in the "Use Tables"
list box form the FROM clause. Also, the fields listed in the "Fields" menus are
restricted to the fields in the selected tables.
Each criteria should be placed on a separate criteria
row. If the "And" radio button is selected for a criteria row, that row will be
logically AND'd in the WHERE clause. If the "Or" radio button is selected, that
row will be logically OR'd in the WHERE clause.
Criteria are not required for any column. If not
provided and the "Show" checkbox is on, the field will be shown for all records
that match any other criteria.
Criteria are added and deleted in a manner similar to
adding/deleting fields using the checkboxes to the left of a criteria row or the
"Add/Delete Criteria Row" menu. Again, press "Update Query" to update
the page.
Table Properties
The fields in the table are listed with their
data types and attributes.
The List of Fields
Next to each field name are links to various actions
you can perform on a field.
Change Change the attributes of a field.
Drop Delete the field from the table. Once you do this
the data will be no longer available.
Primary Set the field to be a primary field.
Index Create an index on the field for faster
searching.
Unique Require all values in the field to be unique.
Primary fields and indexes
The primary fields and indexes are listed again below
the list of all fields.
Browse
Display the records in the table 30 at a time. From the
Browse page you can edit or delete a record.
Select
Build and execute a SELECT query on the table. Only
those records which match the criteria you provide will be displayed.
Insert
Add a new record to the table. Various functions can be
used to obtain the current time, generate random numbers, and more.
Add New Fields
To add one or more new fields to the table, select the
number of fields to add and press the Go button next to the text Add new
field:.
Upload Data
Insert text files into table allows you to
load data into the table from a properly formatted text file on your local computer.
Dump Table Properties
View dump (schema) of table displays the
structure and or data contained in the table. You can then save this information to a file
on your local computer for archiving or to aide in the development of your database. The
contents and format of the dump are based on the radio button and check box selections you
make.
Rename and Copy
You can rename or copy a table as well.
Table Select
From this page you can perform a SELECT operation on
the table.
The list box in the upper left contains the names of
all the fields in the table. Select from the list box the columns you wish to see in your
result set.
Any valid WHERE clause can be entered in the "Add
search conditions" text box.
The field names and a text box are listed again under
the "Do a 'query by example'" bullet. These can be used build a WHERE clause
more easily than typing the entire clause into the textbox above. Each entry becomes a
condition of the WHERE clause. The conditional operator used is LIKE which allows the
wildcard operators "%" and "_" to represent zero or more characters,
and a single character, respectively.
SELECT Name, Telephone
FROM Phonebook
WHERE Id LIKE Joe%;
The wildcard characters can both appear in the same
string and can appear more than one as needed. Note that using no wildcard characters is
equivalent to using "=" instead of LIKE. LIKE is generally slower than
"=" since MySQL must still check for wildcards characters. To use "="
or other conditions you must type them in the general WHERE clause textbox.
Press the Go button at the bottom of the page to
process the select statement. If any records are found, they will be displayed in a table
for you.
Perl SQL
Delete Example
Here we delete a record from the database using a
DELETE statement.
# Use the DBI module
use DBI qw(:sql_types);
# Declare local variables
my ($databaseName, $databaseUser, $databasePw, $dbh);
my ($stmt, sth, @newRow);
my ($telephone);
# Set the parameter values for the connection
$databaseName = "DBI:mysql:yourWebSite_com";
$databaseUser = "yourLoginId";
$databasePw = "yourLoginPassword";
# Connect to the database
# Note this connection can be used to
# execute more than one statement
# on any number of tables in the database
$dbh = DBI->connect($databaseName, $databaseUser,
$databasePw) || die "Connect failed: $DBI::errstr\n";
# Create the statement.
$stmt = "DELETE FROM Phonebook WHERE (Id = 'BBBBB')";
# Prepare and execute the SQL query
$sth = $$dbh->prepare($$stmt)
|| die "prepare: $$stmt: $DBI::errstr";
$sth->execute || die "execute: $$stmt: $DBI::errstr";
# DELETE does not return records
# Clean up the record set and the database connection
$sth->finish();
$dbh->disconnect();
Perl SQL
Insert Example
Here we add two records to the database using an INSERT
statement. The data to be entered can be gathered from an html form.
# Use the DBI module
use DBI qw(:sql_types);
# Declare local variables
my ($databaseName, $databaseUser, $databasePw, $dbh);
my ($stmt, sth, @newRow);
my ($telephone);
# Set the parameter values for the connection
$databaseName = "DBI:mysql:yourWebSite_com";
$databaseUser = "yourLoginId";
$databasePw = "yourLoginPassword";
# Connect to the database
# Note this connection can be used to
# execute more than one statement
# on any number of tables in the database
$dbh = DBI->connect($databaseName, $databaseUser,
$databasePw) || die "Connect failed: $DBI::errstr\n";
# Create the statement.
$stmt = "INSERT INTO Phonebook (Id, Name, Telephone)
VALUES (BBBBB, Joe Smith, 212-555-1212)";
# Prepare and execute the SQL query
$sth = $$dbh->prepare($$stmt)
|| die "prepare: $$stmt: $DBI::errstr";
$sth->execute || die "execute: $$stmt: $DBI::errstr";
# INSERT does not return records
# Clean up the record set
$sth->finish();
# We could add another record here as well
# Create the statement.
$stmt = "INSERT INTO Phonebook (Id, Name, Telephone)
VALUES (CCCCC, Marcy Jones, 402-555-1212)";
# Prepare and execute the SQL query
$sth = $$dbh->prepare($$stmt)
|| die "prepare: $$stmt: $DBI::errstr";
$sth->execute || die "execute: $$stmt: $DBI::errstr";
# Clean up the record set and the database connection
$sth->finish();
$dbh->disconnect();
Perl SQL
Update Example
Here we update a record in the database using an UPDATE
statement.
# Use the DBI module
use DBI qw(:sql_types);
# Declare local variables
my ($databaseName, $databaseUser, $databasePw, $dbh);
my ($stmt, sth, @newRow);
my ($telephone);
# Set the parameter values for the connection
$databaseName = "DBI:mysql:yourWebSite_com";
$databaseUser = "yourLoginId";
$databasePw = "yourLoginPassword";
# Connect to the database
# Note this connection can be used to
# execute more than one statement
# on any number of tables in the database
$dbh = DBI->connect($databaseName, $databaseUser,
$databasePw) || die "Connect failed: $DBI::errstr\n";
# Create the statement.
UPDATE Addresses SET Last = 0 WHERE CustomerId = '$$customerId'
$stmt = "UPDATE Phonebook
SET Telephone = '713-555-1212'
WHERE Name LIKE '%Smith'";
# Prepare and execute the SQL query
$sth = $$dbh->prepare($$stmt)
|| die "prepare: $$stmt: $DBI::errstr";
$sth->execute || die "execute: $$stmt: $DBI::errstr";
# UPDATE does not return records
# Clean up the record set and the database connection
$sth->finish();
$dbh->disconnect();
Perl While
Loop Example
If your SQL query will return more than one record, you
will need to place the fetchrow() call in a
while loop.
my (@telephone);
my $i = 0;
my $count;
while (@aRow = $sth->fetchrow())
{
$telephone[$i] = @aRow[0];
$i++;
}
$count = $i;
# @telephone can now be used to build an html table
# to display all the telephone numbers in the "518"
# area code.
View Dump of
Schema
The "View Dump (Schema) of Database" section
of the Main Database Management page is useful. Pressing the associated Go button will
generate a page containing the SQL statements for recreating the database. If the
"Structure and Data" radio button is selected, the SQL statements for INSERTing
the data will be generated as well. Turn on the. "Add 'DROP TABLE'" checkbox and
the SQL statements to DROP the tables will be included also. When you drop a table, the
table is deleted. Turning on the "Send" checkbox, causes the generated SQL
statements to be sent to you as a file which you can save to your harddisk.
The "View Dump(Schema) of Table" section of
the Table Properties page allows you to obain a dump of a single table. The additional
radio button, CVS will return the data in the table with each record as a seperate line.
The fields are delimited by the character specified in the "Terminated by"
textbox.
The dumped data can be imported into another database
or a spreadsheet, or archived for backup.
NOTE: None of the selections above will alter your
database.
Using
MySQL with CGI scripts
Using MySQL with Common Gateway Interface scripts will
allow you to develop more interactive web sites. Examples of using CGI scripts with MySQL
are searchable catalogs, user account management, inventory tracking, and information
management. Any time you have even small quantities of data which are similar and/or which
will change over time, a database solution will likely be useful.
CGI scripting does require programming experience. If
you are not familiar with CGI scripting, it is suggested that you begin with the basics of
forms and non database applications. There are many books available to teach you CGI
programming in a number or languages. Here we will be focusing on how to program MySQL
using Perl as the CGI scripting language.
A Quick Review of How CGI Works
Normally clicking on a link in a web browser causes the
web server to return a static .html page. No matter who clicks on this link or how many
times they do it, the resulting returned web page is always the same. To change a static
.html page the site's webmaster must edit the contents of the .html file.
On the other hand, a CGI script allows a link or a
button in a web page to run a program on the web server. This program can do any number of
things from getting the current date and time to performing a complex lookup and update in
a database. In either case, the results are not the same every time the link or button is
pressed.
The process occurs something like this:
1.User clicks on a link in a web page (e.g.
http://www.cgitest.com/cgi-bin/test.cgi).
2.The web server runs the program test.cgi.
3.The test.cgi program does what it is programmed to do.
4.The test.cgi program also builds a .html file in memory and sends it back to the user's
browser.
It is the last two steps which make CGI scripts so
useful. The program can perform what ever operations it needs to and it can then generate
a .html page based on the results of these operations. When the CGI script is used with a
database such as MySQL, many things are possible. Generally, the page returned to the
user's browser contains the results of the database search. Or, if the user had provided
information through a form in the web page, the database records were updated.
Using Perl to Access a MySQL Database
The programming language Perl can be used to access a
MySQL database. It is the language we will use for our examples. Access to MySQL using
Perl requires the Perl DBI module. Both Perl and the DBI module are installed and
available to use through your web site account.
The following code example sets up a connection the
database to the www.yourwebsite.com database,
prepares and executes an SQL statement, stores the result in a local variable, and then
cleans up the connection.
# Use the DBI module
use DBI qw(:sql_types);
# Declare local variables
my ($databaseName, $databaseUser, $databasePw, $dbh);
my ($stmt, sth, @newRow);
my ($telephone);
# Set the parameter values for the connection
$databaseName = "DBI:mysql:yourWebSite_com";
$databaseUser = "yourLoginId";
$databasePw = "yourLoginPassword";
# Connect to the database
# Note this connection can be used to
# execute more than one statement
# on any number of tables in the database
$dbh = DBI->connect($databaseName, $databaseUser,
$databasePw) || die "Connect failed: $DBI::errstr\n";
# Create the statement.
$stmt = "SELECT Name FROM Phonebook
WHERE (Telephone LIKE '518%')";
# Prepare and execute the SQL query
$sth = $$dbh->prepare($$stmt)
|| die "prepare: $$stmt: $DBI::errstr";
$sth->execute || die "execute: $$stmt: $DBI::errstr";
# Get the first record
# If more than one record will be returned put
# the fetchrow in a while loop
@record = $sth->fetchrow()
# Get the value of the first field returned.
$telephone = $record[0];
# Clean up the record set and the database connection
$sth->finish();
$dbh->disconnect();
All queries follow the same basic formula. Simply replace the SELECT statement with the
INSERT, UPDATE, DELETE, etc. statement you wish to use. Note that these other queries do
not return records. So, the fetchrow() and assignment which follows should be deleted for
then.
Many other operations such as joins, subqueries,
grouping, and sorting are all supported by providing a proper SQL statement in place of
the one above.
References
and Tutorials
Books
MySQL and mSQL
Randy Jay Yarge, George Reese, and Tim King
O'Reilly & Associates
ISBN 1565924347
The Practical SQL Handbook: Using Structured Query
Language
Judith S. Bowman, Sandra L. Emerson and Marcy Darnovsky
Addison-Wesley
ISBN 0201626233
Understanding SQL
Martin Gruber
Sybex
ISBN 0895886448
Teach Yourself Sql in 21 Days
Ryan K. Stephens (Editor), Ronald R. Plew, Bryan Morgan, jeff Perkins
Sams Publishing
ISBN 0672311100
Be sure to check for the most current edition.
Web Sites
The MySQL site has
an SQL reference and
lots of information about MySQL in particular.
An SQL tutorial is available on the net at
http://www.geocities.com/SiliconValley/Vista/2207/sql1.html
Newgroups
There are various newsgroups under the comp.database
group which deal with databases.
Always a good place to start.
Mailing Lists
The MySQL site lists
in their documentation page a number of mailing lists concerning MySQL and SQL.
Please contact
the Webmaster
for broken links information on this site.
|