Download CH10

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Oracle Database wikipedia , lookup

Database wikipedia , lookup

Entity–attribute–value model wikipedia , lookup

Microsoft Jet Database Engine wikipedia , lookup

Ingres (database) wikipedia , lookup

Extensible Storage Engine wikipedia , lookup

Clusterpoint wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Join (SQL) wikipedia , lookup

SQL wikipedia , lookup

Open Database Connectivity wikipedia , lookup

PL/SQL wikipedia , lookup

Relational model wikipedia , lookup

Database model wikipedia , lookup

Transcript
Chapter 10
How to use MySQL to
work with a database
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 1
Objectives
Applied
 Use the mysql program to run commands, scripts, and DDL
statements.
 Code simple SELECT, INSERT, UPDATE, and DELETE
statements, and use the mysql program to run them.
Knowledge
 Distinguish between SQL’s Data Definition Language and Data
Manipulation Language.
 Describe the capabilities of a SELECT statement.
 Describe the capabilities of INSERT, UPDATE, and DELETE
statements.
 Describe the use of a SQL script.
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 2
MySQL is…
 Inexpensive. MySQL is free for most uses and relatively
inexpensive for other uses.
 Fast. By many accounts, MySQL is one of the fastest relational
databases that’s currently available.
 Easy to use. Compared to other database systems, MySQL is easy
to install and use.
 Portable. MySQL runs on most modern operating systems
including Windows, Unix, Solaris, and OS/2.
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 3
MySQL provides…
 Support for SQL. Like any modern database product, MySQL
supports SQL, which is the standard language for working with
data that’s stored in relational databases.
 Support for multiple clients. MySQL supports access from
multiple clients from a variety of interfaces and programming
languages including Java, Perl, PHP, Python, and C.
 Connectivity. MySQL can provide access to data via an intranet
or the Internet.
 Security. MySQL can protect access to your data so only
authorized users can view the data.
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 4
MySQL doesn’t provide…
 Referential integrity. Unlike Oracle or Microsoft SQL Server,
standard MySQL tables don’t support declarative referential
integrity (DRI). However, referential integrity can be maintained
by using SQL triggers or by the applications that maintain the
data in the database.
 Subqueries. Although MySQL doesn’t support SQL subqueries,
the same results can often be achieved by writing a SQL
statement in a different way or by using a combination of Java
code and SQL code.
 Transaction processing. Unlike Oracle or Microsoft SQL
Server, MySQL doesn’t support transaction processing, which
can prevent corruption of the database in the event of a system
failure. For most web applications, however, this lack of support
isn’t necessary or can be duplicated by other means.
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 5
A command-line interface
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 6
An HTML interface
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 7
The icon for the MySQL server
MySQL icon
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 8
How to start the MySQL server and display the
MySQL icon
 On most systems, the MySQL server starts every time you start
your computer.
 If the MySQL server doesn’t start when you start your computer,
you can start the MySQL server by running the
winmysqladmin.exe file in MySQL’s bin directory.
 On some systems, the MySQL icon is displayed in the tray as
shown above. On other systems, you must run the
winmysqladmin.exe file to display the icon.
How to stop the MySQL server
 To stop the server, you can click on the MySQL icon. Then, you
can select the “Win 9x” and “ShutDown this Server” commands,
or you can select the “Win NT” and “Stop this Service”
commands.
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 9
The mysql program
How to start the mysql program
The syntax
mysql –h hostname –u username –p
Examples
c:\mysql\bin>mysql –h murach.com –u jmurach –p
c:\mysql\bin>mysql –u jmurach -p
c:\mysql\bin>mysql
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 10
How to exit the mysql program
The syntax
exit | quit
Example
mysql>exit
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 11
How to create a database
mysql> create database murach;
Query OK, 1 row affected (0.06 sec)
How to list the names of all databases
mysql> show databases;
+------------+
| Database
|
+------------+
| murach
|
| msql
|
+------------+
3 rows in set (0.00 sec)
How to select a database for use
mysql> use murach;
Database changed
How to delete a database
mysql> drop database murach;
Query OK, 3 rows affected (0.00 sec)
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 12
How to create a table using the mysql program
mysql> create table User (
-> UserID int not null auto_increment,
-> FirstName varchar(50),
-> LastName varchar(50),
-> EmailAddress varchar(50),
-> primary key(UserID)
-> );
Query OK, 0 rows affected (0.05 sec)
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 13
How to create a table using a SQL script
A mysql command that runs a script
C:\mysql\bin>mysql -u jmurach -p murach <
c:\murach\scripts\UserCreate.sql
Enter password: ******
The SQL script that’s stored in a file named
UserCreate.sql
CREATE TABLE User (
UserID INT NOT NULL AUTO_INCREMENT,
FirstName VARCHAR(50),
LastName VARCHAR(50),
EmailAddress VARCHAR(50),
PRIMARY KEY(UserID)
)
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 14
How to list all of the tables in a database
mysql> show tables;
+------------------+
| Tables_in_murach |
+------------------+
| download
|
| user
|
+------------------+
2 rows in set (0.00 sec)
How to delete a table
mysql> drop table User;
Query OK, 0 rows affected (0.00 sec)
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 15
How to work with databases and tables
 A relational database consists of one or more tables that consist
of rows (records) and columns (fields). These tables are related by
keys.
 The primary key in a table is the one that uniquely identifies each
of the rows in the table.
 A foreign key is used to relate the rows in one table to the rows in
another table.
 When you create a table, you define each of its columns and you
identify its primary key.
 To define a column, you must supply the name and the data type,
and you can also indicate whether a column accepts default values,
whether it’s automatically generated for new rows, and so on.
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 16
How to use the INSERT statement
With the mysql program
mysql> insert into User
-> (FirstName, LastName, EmailAddress)
-> values
-> ('John', 'Smith', '[email protected]'),
-> ('Andrea', 'Steelman', '[email protected]'),
-> ('Joel', 'Murach', '[email protected]');
Query OK, 3 rows affected (0.06 sec)
In a SQL script stored in a file named UserInsert.sql
INSERT INTO User
(FirstName, LastName, EmailAddress)
VALUES
('John', 'Smith', '[email protected]'),
('Andrea', 'Steelman', '[email protected]'),
('Joel', 'Murach', '[email protected]')
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 17
How to use the INSERT statement (continued)
A Mysql command that runs the SQL script
C:\mysql\bin>mysql -u jmurach -p murach <
c:\murach\scripts\UserInsert.sql
Enter password: ******
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 18
How to use the Load command
A tab-delimited text file that’s stored in Users.txt
1
2
3
John Smith [email protected]
Andi Lewis [email protected]
Joel Murach [email protected]
A Load command that loads the data into a local table
mysql> load data local infile
"c:/murach/scripts/Users.txt" into table User;
Query OK, 3 rows affected (0.00 sec)
Records: 3 Deleted: 0 Skipped: 0 Warnings: 0
A Load command that loads the data into a table on a
remote Unix server
load data infile
"/usr/local/etc/httpd/sites/murach.com/htdocs/Users.txt"
into table User
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 19
A configuration file
 If you create a configuration file for MySQL, you don’t have to
enter the user, password, and host parameters each time you start
the mysql program.
 On a Windows system, the my.cnf file should be in the c:\
directory.
A c:\my.cnf configuration file
[client]
user=jsmith
password=sesame
host=localhost
How to start the mysql program with a my.cnf file
mysql databasename < sqlscriptpath
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 20
Three ways to start the mysql program using the
my.cnf file
Start the mysql program only
c:\mysql\bin>mysql
Start the mysql program and select the murach database
c:\mysql\bin>mysql murach
Start the mysql program, select the murach database, and
run a script
c:\mysql\bin>mysql murach <
c:\murach\scripts\UserCreate.sql
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 21
The syntax for a SELECT statement that gets all
columns
SELECT *
FROM table-1
[WHERE selection-criteria]
[ORDER BY field-1 [ASC|DESC] [, field-2 [ASC|DESC] ...]]
Example
SELECT * FROM User
Result set
+--------+-----------+----------+----------------------+
| UserID | FirstName | LastName | EmailAddress
|
+--------+-----------+----------+----------------------+
|
1 | John
| Smith
| [email protected]
|
|
2 | Andrea
| Steelman | [email protected]
|
|
3 | Joel
| Murach
| [email protected] |
+--------+-----------+----------+----------------------+
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 22
The syntax for a SELECT statement that gets
selected columns
SELECT field-1 [, field-2] ...
FROM table-1
[WHERE selection-criteria]
[ORDER BY field-1 [ASC|DESC] [, field-2 [ASC|DESC] ...]]
Example
SELECT FirstName, LastName
FROM User
WHERE UserID < 3
ORDER BY LastName ASC
Result set
+-----------+----------+
| FirstName | LastName |
+-----------+----------+
| John
| Smith
|
| Andrea
| Steelman |
+-----------+----------+
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 23
The syntax for a SELECT statement that joins two
tables
SELECT field-1 [, field-2] ...
FROM table-1
{INNER | LEFT OUTER | RIGHT OUTER} JOIN table-2
ON table-1.field-1 {=|<|>|<=|>=|<>} table-2.field-2
[WHERE selection-criteria]
[ORDER BY field-1 [ASC|DESC] [, field-2 [ASC|DESC] ...]]
A statement that gets data from related User and
Download tables
SELECT EmailAddress, DownloadFilename, DownloadDate
FROM User
INNER JOIN Download
ON User.UserID = Download.UserID
WHERE DownloadDate > '2002-08-01'
ORDER BY EmailAddress ASC
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 24
Result set
+-----------------+--------------+----------------------+
| EmailAddress
| DownloadFile | DownloadDate
|
+-----------------+--------------+----------------------+
| [email protected] | filter.rm
| 2002-08-02 18:31:46 |
| [email protected] | so_long.rm
| 2002-08-02 18:31:46 |
| [email protected] | corvair.rm
| 2002-08-02 18:31:46 |
| [email protected] | filter.mp3
| 2002-08-02 18:31:46 |
+-----------------+--------------+----------------------+
4 rows in set (0.05 sec)
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 25
How to select data from multiple tables
 To return a result set that contains data from two tables, you join
the tables. To do that, you can use a JOIN clause.
 Most of the time, you’ll want to code an inner join so that rows are
only included when the key of a row in the first table matches the
key of a row in the second table.
 In a left outer join, the data for all of the rows in the first table (the
one on the left) are included in the table, but only the data for
matching rows in the second table are included. In a right outer
join, the reverse is true.
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 26
The syntax for the INSERT statement
INSERT INTO table-name [(field-list)]
VALUES (value-list)
A statement that adds one row to the Download table
INSERT INTO Download (UserID, DownloadDate,
DownloadFilename, ProductCode)
VALUES (1, '2002-12-01', 'jr01-01.mp3', 'jr01')
A statement that uses the MySQL Now function
INSERT INTO Download (UserID, DownloadDate,
DownloadFilename, ProductCode)
VALUES (1, NOW(), 'jr01-01.mp3', 'jr01')
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 27
The syntax for the UPDATE statement
UPDATE table-name
SET expression-1 [, expression-2] ...
WHERE selection-criteria
A statement that updates the FirstName column in one
row
UPDATE User
SET FirstName = 'Jack',
WHERE EmailAddress = '[email protected]'
A statement that updates the ProductPrice column in
selected rows
UPDATE Products
SET ProductPrice = 36.95
WHERE ProductPrice = 36.50
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 28
The syntax for the DELETE statement
DELETE FROM table-name
WHERE selection-criteria
A statement that deletes one row
DELETE FROM User WHERE EmailAddress =
'[email protected]'
A statement that deletes selected rows
DELETE FROM Download WHERE DownloadDate < '2002-08-02'
Java Servlets and JSPCH10
© 2003, Mike Murach & Associates, Inc.
Slide 29