Upload
garran
View
41
Download
0
Embed Size (px)
DESCRIPTION
MySQL Database System. Hiep Dinh CS 157B-Section 2. 2-Tier Architecture. Web Server. Web Browser (Client). PHP. 3-Tier Architecture. Web Browser (Client). Web Server. Database Server. PHP. Installation Summary. More detailed installation instructions are given on the CD - PowerPoint PPT Presentation
Citation preview
MySQL Database SystemMySQL Database System
Hiep DinhHiep DinhCS 157B-Section 2CS 157B-Section 2
04/22/2304/22/23 BGABGA 22
2-Tier Architecture2-Tier Architecture
WebBrowser(Client)
WebServer
PHP
04/22/2304/22/23 BGABGA 33
3-Tier Architecture3-Tier Architecture
WebBrowser(Client)
DatabaseServer
WebServer PHP
04/22/2304/22/23 BGABGA 44
Installation SummaryInstallation Summary• More detailed installation instructions More detailed installation instructions
are given on the CDare given on the CD• Install MySQL in Install MySQL in c:\mysqlc:\mysql• MySQL can be installed as a serviceMySQL can be installed as a service
(Win 2000/XP)(Win 2000/XP)• Can make icons on the desktop for Can make icons on the desktop for
starting and stopping the server.starting and stopping the server.
04/22/2304/22/23 BGABGA 55
Command Line ClientCommand Line Client• The standard command line client isThe standard command line client is•c:\mysql\bin\mysql.exec:\mysql\bin\mysql.exe• The command line client can be used The command line client can be used
to send commands and SQL queries to send commands and SQL queries to the MySQL serverto the MySQL server
• There are also GUI clients such as There are also GUI clients such as MyCCMyCC
04/22/2304/22/23 BGABGA 66
Client-Server InteractionClient-Server Interaction
MySQLServer
ClientProgram
Make a request(SQL query)
Get results
Client program can be a MySQL command line client,GUI client, or a program written in any language suchas C, Perl, PHP, Java that has an interface to theMySQL server.
04/22/2304/22/23 BGABGA 77
Connecting to the ServerConnecting to the Server• Use a command prompt that sets the Use a command prompt that sets the
path to path to c:\mysql\binc:\mysql\bin• The following command connects to The following command connects to
the server:the server:– mysql -u root -pmysql -u root -p– you are prompted for the root password.you are prompted for the root password.– you can now send comands and SQL you can now send comands and SQL
statements to the serverstatements to the server
04/22/2304/22/23 BGABGA 88
WARNING WARNINGWARNING WARNING
•WARNINGWARNING• Always assume that everything is case Always assume that everything is case
sensitive, especially table names.sensitive, especially table names.• This is not the case in Windows XP but This is not the case in Windows XP but
it is the case in Linuxit is the case in Linux
04/22/2304/22/23 BGABGA 99
Entering commands (1)Entering commands (1)• Show all the databasesShow all the databases
– SHOW DATABASES;SHOW DATABASES;mysql> SHOW DATABASES;+-------------+| Database |+-------------+| bookstore || employee_db || mysql || student_db || test || web_db |+-------------+
04/22/2304/22/23 BGABGA 1010
Entering commands (2)Entering commands (2)• Choosing a database and showing its tablesChoosing a database and showing its tables
– USE test;USE test;SHOW tables;SHOW tables;
mysql> USE test;Database changedmysql> SHOW tables;+----------------+| Tables_in_test |+----------------+| books || name2 || names || test |+----------------+4 rows in set (0.00 sec)mysql>
04/22/2304/22/23 BGABGA 1111
Entering commands (3)Entering commands (3)• Show the structure of a tableShow the structure of a table
– DESCRIBE names;DESCRIBE names;mysql> DESCRIBE names;+-----------+-------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-----------+-------------+------+-----+---------+----------------+| id | int(11) | | PRI | NULL | auto_increment || firstName | varchar(20) | | | | || lastName | varchar(20) | | | | |+-----------+-------------+------+-----+---------+----------------+3 rows in set (0.00 sec)
mysql>
04/22/2304/22/23 BGABGA 1212
Entering commands (4)Entering commands (4)• Show the rows of a table (all Show the rows of a table (all
columns)columns)– SELECT * FROM names;SELECT * FROM names;mysql> SELECT * FROM names;+----+-----------+------------+| id | firstName | lastName |+----+-----------+------------+| 1 | Fred | Flintstone || 2 | Barney | Rubble |+----+-----------+------------+2 rows in set (0.00 sec)
mysql>
04/22/2304/22/23 BGABGA 1313
Entering commands (5)Entering commands (5)• Inserting a new recordInserting a new record
– INSERT INTO names (firstName,INSERT INTO names (firstName,lastName) VALUES ('Rock','Quarry');lastName) VALUES ('Rock','Quarry');
– SELECT * FROM names;SELECT * FROM names;mysql> INSERT INTO names (firstName, lastName) VALUES ('Ralph', 'Quarry');Query OK, 1 row affected (0.02 sec)mysql> SELECT * FROM names;+----+-----------+------------+| id | firstName | lastName |+----+-----------+------------+| 1 | Fred | Flintstone || 2 | Barney | Rubble || 3 | Ralph | Quarry |+----+-----------+------------+3 rows in set (0.00 sec)mysql>
04/22/2304/22/23 BGABGA 1414
Entering commands (6)Entering commands (6)• Updating a recordUpdating a record
– UPDATE names SET lastName = 'Stone'UPDATE names SET lastName = 'Stone'WHERE id=3;WHERE id=3;
– SELECT * FROM names;SELECT * FROM names;
mysql> UPDATE names SET lastName = 'Stone' WHERE id=3;Query OK, 1 row affected (0.28 sec)Rows matched: 1 Changed: 1 Warnings: 0mysql> SELECT * FROM names;+----+-----------+------------+| id | firstName | lastName |+----+-----------+------------+| 1 | Fred | Flintstone || 2 | Barney | Rubble || 3 | Ralph | Stone |+----+-----------+------------+3 rows in set (0.00 sec)mysql>
04/22/2304/22/23 BGABGA 1515
Logging outputLogging output• The commands you type and their The commands you type and their
ouput can be logged to a file by ouput can be logged to a file by using the following command inside using the following command inside the MySQL command line clientthe MySQL command line client
•tee log.txttee log.txt• Here log.txt is the name of the file Here log.txt is the name of the file
04/22/2304/22/23 BGABGA 1616
Executing SQL files (1)Executing SQL files (1)• It is usually better to use an editor to write an It is usually better to use an editor to write an
SQL script and send it to the server.SQL script and send it to the server.• A file of SQL commands such as A file of SQL commands such as books.sqlbooks.sql can can
be executed by the server by using a command be executed by the server by using a command such assuch as– C:\mysql\bin\mysql -u root -p < C:\mysql\bin\mysql -u root -p < books.sqlbooks.sql
• This assumes that This assumes that books.sqlbooks.sql is in your current is in your current directory. Otherwise the complete path to directory. Otherwise the complete path to books.sqlbooks.sql must be supplied must be supplied
04/22/2304/22/23 BGABGA 1717
Executing SQL files (2)Executing SQL files (2)• A file of SQL commands such as A file of SQL commands such as books.sqlbooks.sql can also be executed can also be executed from inside the MySQL client using from inside the MySQL client using the the sourcesource command command– source c:\.....\books.sqlsource c:\.....\books.sql
• Here the full path to Here the full path to books.sqlbooks.sql should be used.should be used.
04/22/2304/22/23 BGABGA 1818
DocumentationDocumentation• MySQL comes with a tutorial and MySQL comes with a tutorial and
complete documentation in a HUGE complete documentation in a HUGE file:file:– c:\mysql\Docs\manual.htmlc:\mysql\Docs\manual.html
• Table of contents with links:Table of contents with links:– c:\mysql\Docs\manual_toc.htmlc:\mysql\Docs\manual_toc.html
• Use this file to locate the link to the Use this file to locate the link to the topic you are interested in.topic you are interested in.
04/22/2304/22/23 BGABGA 1919
Database concepts (1)Database concepts (1)• A relational database management system A relational database management system
consists of a number of databases.consists of a number of databases.• Each database consists of a number of Each database consists of a number of
tables.tables.• Example tableExample table
isbn title author pub year pricebookstable rows
(records)
columnheadings
04/22/2304/22/23 BGABGA 2020
Some SQL data types (1)Some SQL data types (1)• Each entry in a row has a type specified by Each entry in a row has a type specified by
the column.the column.• Numeric data typesNumeric data types
– TINYINT, SMALLINT, MEDIUMINT,TINYINT, SMALLINT, MEDIUMINT,– INT, BIGINTINT, BIGINT– FLOAT(display_length, decimals)FLOAT(display_length, decimals)– DOUBLE(display_length, decimals)DOUBLE(display_length, decimals)– DECIMAL(display_length, decimals)DECIMAL(display_length, decimals)
•NUMERICNUMERIC is the same as is the same as DECIMALDECIMAL
04/22/2304/22/23 BGABGA 2121
Some SQL data types (2)Some SQL data types (2)• Date and time typesDate and time types
– DATEDATE• format is YYYY-MM-DDformat is YYYY-MM-DD
– DATETIMEDATETIME• format YYYY-MM-DD HH:MM:SSformat YYYY-MM-DD HH:MM:SS
– TIMESTAMPTIMESTAMP• format YYYYMMDDHHMMSSformat YYYYMMDDHHMMSS
– TIMETIME• format HH:MM:SSformat HH:MM:SS
– YEARYEAR• default length is 4default length is 4
04/22/2304/22/23 BGABGA 2222
SQL data types (3)SQL data types (3)• String typesString types
– CHARCHAR•fixed length string, e.g., fixed length string, e.g., CHAR(20)CHAR(20)
– VARCHARVARCHAR•variable length string, e.g., VARCHAR(20)variable length string, e.g., VARCHAR(20)
– BLOB, TINYBLOB, MEDIUMBLOB, LONGBLOBBLOB, TINYBLOB, MEDIUMBLOB, LONGBLOB•same as same as TEXTTEXT, , TINYTEXTTINYTEXT ... ...
– ENUMENUM• list of items from which value is selectedlist of items from which value is selected
04/22/2304/22/23 BGABGA 2323
SQL commands SHOW, USESQL commands SHOW, USE• SHOWSHOW
– Display databases or tables in current database;Display databases or tables in current database;– Example (command line client):Example (command line client):– show databases;show databases;– show tables;show tables;
• USEUSE– Specify which database to useSpecify which database to use– ExampleExample– use bookstore;use bookstore;
04/22/2304/22/23 BGABGA 2424
The The CREATECREATE Command (1) Command (1)•CREATE CREATE creates a creates a databasedatabase table tableCREATE TABLE table_name( column_name1 column_type1, column_name2 column_type2, ... column_nameN column_typeN);
Note: To create a database use the statementCREATE db_name;
04/22/2304/22/23 BGABGA 2525
The CREATE Command (2)The CREATE Command (2)• Specifying primary keysSpecifying primary keysCREATE TABLE table_name( column_name1 column_type1 NOT NULL DEFAULT '0', column_name2 column_type2, ... column_nameN column_typeN, PRIMARY KEY (column_name1));
04/22/2304/22/23 BGABGA 2626
The CREATE Command (3)The CREATE Command (3)• autoincrement primary integer keysautoincrement primary integer keysCREATE TABLE table_name( column_name1 column_type1 PRIMARY KEY NOT NULL DEFAULT '0' AUTO_INCREMENT, column_name2 column_type2, ... column_nameN column_typeN,);
04/22/2304/22/23 BGABGA 2727
The CREATE Command (4)The CREATE Command (4)• Can also create UNIQUE keys. They Can also create UNIQUE keys. They
are similar to PRIMARY KEYS but can are similar to PRIMARY KEYS but can have NULL values.have NULL values.
• Can also create INDEX fields.Can also create INDEX fields.
04/22/2304/22/23 BGABGA 2828
Conditional CreationConditional Creation• Conditional database creationConditional database creation
– CREATE DATABASE IF NOT EXISTS CREATE DATABASE IF NOT EXISTS db_name;db_name;
• Conditional table creationConditional table creation– CREATE TABLE IF NOT EXISTS CREATE TABLE IF NOT EXISTS table_name;table_name;
04/22/2304/22/23 BGABGA 2929
The DROP CommandThe DROP Command• To delete databases and tables use To delete databases and tables use
the DROP commandthe DROP command• ExamplesExamples
– DROP DATABASE db_name;DROP DATABASE db_name;– DROP DATABASE IF EXISTS db_name;DROP DATABASE IF EXISTS db_name;– DROP TABLE table_name;DROP TABLE table_name;– DROP TABLE IF EXISTS table_name;DROP TABLE IF EXISTS table_name;
Note: Don't confuse DROP with DELETE which deletes rowsof a table.
04/22/2304/22/23 BGABGA 3030
The INSERT CommandThe INSERT Command• Inserting rows into a tableInserting rows into a table
INSERT INTO table_name ( col_1, col_2, ..., col_N)VALUES ( val_1, val_2, ..., val_N);
String values are enclosed in single quotes by defaultbut double quotes are also allowed. Literal quotesneed to be escaped using \' and \"
04/22/2304/22/23 BGABGA 3131
The SELECT Command (1)The SELECT Command (1)• Selecting rows from a tableSelecting rows from a table• Simplest form: select all columnsSimplest form: select all columns
• Select specified columnsSelect specified columns
• Conditional selection of rowsConditional selection of rowsSELECT column_list FROM table_name;
SELECT * FROM table_name;
SELECT column_list FROM table_nameWHERE condition;
04/22/2304/22/23 BGABGA 3232
The SELECT Command (2)The SELECT Command (2)• Specifying ascending row orderingSpecifying ascending row ordering
• Specifying descending row orderingSpecifying descending row ordering
SELECT column_list FROM table_nameWHERE conditionORDER by ASC;
SELECT column_list FROM table_nameWHERE conditionORDER by DESC;
04/22/2304/22/23 BGABGA 3333
The SELECT Command (3)The SELECT Command (3)• There are many other variations of the There are many other variations of the
select command.select command.• Example: finding the number of records in Example: finding the number of records in
a table assuming a primary key called a table assuming a primary key called idid::
• Can also perform searching using the Can also perform searching using the WHERE optionWHERE option
SELECT COUNT(id) FROM table_name
04/22/2304/22/23 BGABGA 3434
The UPDATE CommandThe UPDATE Command• Used to modify an existing recordUsed to modify an existing record
• Conditional update versionConditional update version
UPDATE table_nameSET col_1 = 'new_value1',..., col_n = 'new_value2';
UPDATE table_nameSET col_1 = 'new_value1',..., col_n = 'new_value2'WHERE condition;
04/22/2304/22/23 BGABGA 3535
marks.sql (1)marks.sql (1)studentID first_name
USE test;CREATE TABLE marks ( studentID SMALLINT AUTO_INCREMENT NOT NULL, first_name VARCHAR(20) NOT NULL, last_name VARCHAR(20) NOT NULL, mark SMALLINT DEFAULT 0 NOT NULL, PRIMARY KEY (studentID));
markstable
last_name mark
04/22/2304/22/23 BGABGA 3636
marks.sql (2) marks.sql (2) -- Insert some rows into marks table
INSERT INTO marks (first_name, last_name, mark) VALUES ('Fred', 'Jones', 78);INSERT INTO marks (first_name, last_name, mark) VALUES ('Bill', 'James', 67);INSERT INTO marks (first_name, last_name, mark) VALUES ('Carol', 'Smith', 82);INSERT INTO marks (first_name, last_name, mark) VALUES ('Bob', 'Duncan', 60);INSERT INTO marks (first_name, last_name, mark) VALUES ('Joan', 'Davis', 86);
04/22/2304/22/23 BGABGA 3737
Executing The ScriptExecuting The Script• within MySQL use a command such within MySQL use a command such
asas
– source c:/.........../marks.sqlsource c:/.........../marks.sql
• This adds the This adds the marksmarks table to the table to the testtest databasedatabase
04/22/2304/22/23 BGABGA 3838
The Marks Table The Marks Table • Selecting the complete tableSelecting the complete tableSELECT * FROM marks;
+-----------+------------+-----------+------+| studentID | first_name | last_name | mark |+-----------+------------+-----------+------+| 1 | Fred | Jones | 78 || 2 | Bill | James | 67 || 3 | Carol | Smith | 82 || 4 | Bob | Duncan | 60 || 5 | Joan | Davis | 86 |+-----------+------------+-----------+------+5 rows in set (0.00 sec)
04/22/2304/22/23 BGABGA 3939
The WHERE Clause (1)The WHERE Clause (1)• Select rows according to some Select rows according to some
criterioncriterionSELECT * FROM marks WHERE studentID > 1 AND studentID < 5;
+-----------+------------+-----------+------+| studentID | first_name | last_name | mark |+-----------+------------+-----------+------+| 2 | Bill | James | 67 || 3 | Carol | Smith | 82 || 4 | Bob | Duncan | 60 |+-----------+------------+-----------+------+3 rows in set (0.01 sec)
04/22/2304/22/23 BGABGA 4040
The WHERE Clause (2)The WHERE Clause (2)• Select rows with marks >= 80Select rows with marks >= 80SELECT * FROM marks WHERE mark >= 80;
+-----------+------------+-----------+------+| studentID | first_name | last_name | mark |+-----------+------------+-----------+------+| 3 | Carol | Smith | 82 || 5 | Joan | Davis | 86 |+-----------+------------+-----------+------+2 rows in set (0.00 sec)
04/22/2304/22/23 BGABGA 4141
The ORDER BY ClauseThe ORDER BY Clause• Select rows according to some Select rows according to some
criterioncriterionSELECT * FROM marks ORDER BY mark DESC;
+-----------+------------+-----------+------+| studentID | first_name | last_name | mark |+-----------+------------+-----------+------+| 5 | Joan | Davis | 86 || 3 | Carol | Smith | 82 || 1 | Fred | Jones | 78 || 2 | Bill | James | 67 || 4 | Bob | Duncan | 60 |+-----------+------------+-----------+------+5 rows in set (0.00 sec)
04/22/2304/22/23 BGABGA 4242
Searching Using LIKE (1)Searching Using LIKE (1)• LIKE is used to search a table for values LIKE is used to search a table for values
containing a search string:containing a search string:• There are two wild-card characters There are two wild-card characters
used to specifiy patterns:used to specifiy patterns:– _ matches a single character_ matches a single character– % matches zero or more characters% matches zero or more characters
• Can also use NOT LIKECan also use NOT LIKE• Searching is case insensitiveSearching is case insensitive
04/22/2304/22/23 BGABGA 4343
Searching Using LIKE (2)Searching Using LIKE (2)• Example: last names in marks table Example: last names in marks table
that begin with Jthat begin with J
• Example: first names that have 3 Example: first names that have 3 lettersletters
SELECT * FROM marks WHERE last_name LIKE 'J%';
SELECT * FROM marks WHERE first_name LIKE '_ _ _';
04/22/2304/22/23 BGABGA 4444
Quoting stringsQuoting strings• If a string contains a single quote it If a string contains a single quote it
must be backquoted (escaped) must be backquoted (escaped) before it can be used in a querybefore it can be used in a query
• Example: find records containing Example: find records containing O'ReillyO'Reilly in the in the last_namelast_name field. field.
SELECT * FROM marks WHERE last_name = 'O\'Reilly';
04/22/2304/22/23 BGABGA 4545
Limiting number of rowsLimiting number of rows•LIMITLIMIT can be used to specify the can be used to specify the
maximum number of rows that are to be maximum number of rows that are to be returned by a select query. Examplereturned by a select query. Example– SELECTSELECT * * FROMFROM marks marks LIMITLIMIT 3; 3;
• This query will return only the first 3 rows This query will return only the first 3 rows from the from the marksmarks table table
• To return 15 rows beginning at row 5 useTo return 15 rows beginning at row 5 use– SELECTSELECT * * FROMFROM marks marks LIMITLIMIT 4, 15; 4, 15;
04/22/2304/22/23 BGABGA 4646
MySQL Functions (1)MySQL Functions (1)• How many rows are there ?How many rows are there ?
• Can use Can use COUNTCOUNT(marks)(marks) instead of instead of COUNTCOUNT(*)(*)
SELECT COUNT(*) FROM marks;
+----------+| COUNT(*) |+----------+| 5 |+----------+1 row in set (0.00 sec)
04/22/2304/22/23 BGABGA 4747
MySQL Functions (2)MySQL Functions (2)• What is the sum of all the marks?What is the sum of all the marks?SELECT SUM(mark) FROM marks;
+-----------+| SUM(mark) |+-----------+| 373 |+-----------+1 row in set (0.00 sec)
04/22/2304/22/23 BGABGA 4848
MySQL Functions (3)MySQL Functions (3)• What is the average mark?What is the average mark?SELECT AVG(mark) FROM marks;
+-----------+| AVG(mark) |+-----------+| 74.6000 |+-----------+1 row in set (0.00 sec)
04/22/2304/22/23 BGABGA 4949
MySQL Functions (4)MySQL Functions (4)• What is the minimum mark?What is the minimum mark?SELECT MIN(mark) FROM marks;
+-----------+| MIN(mark) |+-----------+| 60 |+-----------+1 row in set (0.00 sec)
04/22/2304/22/23 BGABGA 5050
MySQL Functions (5)MySQL Functions (5)• What is the maximum mark?What is the maximum mark?
SELECT MAX(mark) FROM marks;
+-----------+| MAX(mark) |+-----------+| 86 |+-----------+1 row in set (0.00 sec)
04/22/2304/22/23 BGABGA 5151
books.sql (1)books.sql (1)isbn title author pub year price
USE web_db;CREATE TABLE books ( isbn CHAR(15) PRIMARY KEY NOT NULL, title VARCHAR(100) NOT NULL, author VARCHAR(100) NOT NULL, pub VARCHAR(20) NOT NULL, year YEAR NOT NULL, price DECIMAL(9,2) DEFAULT NULL);
bookstable
this is asimpledesign
04/22/2304/22/23 BGABGA 5252
books.sql (2) books.sql (2) -- Insert some books into books table
INSERT INTO books VALUES ('0-672-31784-2', 'PHP and MySQL Web Development', 'Luke Welling, Laura Thomson', 'Sams', 2001, 74.95);
INSERT INTO books VALUES ('1-861003-02-1', 'Professional Apache', 'Peter Wainwright', 'Wrox Press Ltd', 1999, 74.95);
04/22/2304/22/23 BGABGA 5353
Executing The ScriptExecuting The Script• within MySQL use a command such within MySQL use a command such
asas
– source c:/.........../books.sqlsource c:/.........../books.sql
• This adds the books table to the This adds the books table to the web_dbweb_db database database
04/22/2304/22/23 BGABGA 5454
employee_db.sql (1)employee_db.sql (1)employeeID name position address
CREATE DATABASE IF NOT EXISTS employee_db;USE employee_db;DROP TABLE IF EXISTS employees;DROP TABLE IF EXITS jobs;
employeeID hours
employeestable
jobstable
04/22/2304/22/23 BGABGA 5555
employee_db.sql (1)employee_db.sql (1)CREATE TABLE employees ( employeeID SMALLINT NOT NULL, name VARCHAR(20) NOT NULL, position VARCHAR(20) NOT NULL, address VARCHAR(40) NOT NULL, PRIMARY KEY (employeeID));INSERT INTO employees VALUES (1001, 'Fred', 'programmer', '13 Windle St');INSERT INTO employees VALUES (1002, 'Joan', 'programmer', '23 Rock St');INSERT INTO employees VALUES (1003, 'Bill', 'manager', '37 Front St');
04/22/2304/22/23 BGABGA 5656
employee_db.sql (2)employee_db.sql (2)CREATE TABLE jobs ( employeeID SMALLINT NOT NULL, hours DECIMAL(5,2) NOT NULL,);INSERT INTO jobs VALUES (1001, 13.5);INSERT INTO jobs VALUES (1002, 2);INSERT INTO jobs VALUES (1002, 6.25);INSERT INTO jobs VALUES (1003, 4);INSERT INTO jobs VALUES (1001, 1);INSERT INTO jobs VALUES (1003, 7);INSERT INTO jobs VALUES (1003, 9.5);
04/22/2304/22/23 BGABGA 5757
Executing The ScriptExecuting The Script• within MySQL use a command such aswithin MySQL use a command such as
– source c:/......./employee_db.sqlsource c:/......./employee_db.sql
• This creates the This creates the employee_dbemployee_db database and adds the employees and database and adds the employees and jobs tables to itjobs tables to it
04/22/2304/22/23 BGABGA 5858
Select Queries With Joins (1)Select Queries With Joins (1)• Cartesian product queryCartesian product querySELECT * FROM employees, jobs;
+------------+------+------------+--------------+------------+-------+| employeeID | name | position | address | employeeID | hours |+------------+------+------------+--------------+------------+-------+| 1001 | Fred | programmer | 13 Windle St | 1001 | 13.50 || 1002 | Joan | programmer | 23 Rock St | 1001 | 13.50 || 1003 | Bill | manager | 37 Front St | 1001 | 13.50 || 1001 | Fred | programmer | 13 Windle St | 1002 | 2.00 || 1002 | Joan | programmer | 23 Rock St | 1002 | 2.00 || 1003 | Bill | manager | 37 Front St | 1002 | 2.00 || 1001 | Fred | programmer | 13 Windle St | 1002 | 6.25 || 1002 | Joan | programmer | 23 Rock St | 1002 | 6.25 || 1003 | Bill | manager | 37 Front St | 1002 | 6.25 |
04/22/2304/22/23 BGABGA 5959
Select Queries With Joins (2)Select Queries With Joins (2)• Cartesian product query (continued)Cartesian product query (continued)| 1001 | Fred | programmer | 13 Windle St | 1003 | 4.00 || 1002 | Joan | programmer | 23 Rock St | 1003 | 4.00 || 1003 | Bill | manager | 37 Front St | 1003 | 4.00 || 1001 | Fred | programmer | 13 Windle St | 1001 | 1.00 || 1002 | Joan | programmer | 23 Rock St | 1001 | 1.00 || 1003 | Bill | manager | 37 Front St | 1001 | 1.00 || 1001 | Fred | programmer | 13 Windle St | 1003 | 7.00 || 1002 | Joan | programmer | 23 Rock St | 1003 | 7.00 || 1003 | Bill | manager | 37 Front St | 1003 | 7.00 || 1001 | Fred | programmer | 13 Windle St | 1003 | 9.50 || 1002 | Joan | programmer | 23 Rock St | 1003 | 9.50 || 1003 | Bill | manager | 37 Front St | 1003 | 9.50 |+------------+------+------------+--------------+------------+-------+21 rows in set (0.01 sec)
The cartesian product query is rarely what we want.
04/22/2304/22/23 BGABGA 6060
Select Queries With Joins (3)Select Queries With Joins (3)• SubstitutionSubstitution
+------+-------+| name | hours |+------+-------+| Fred | 13.50 || Joan | 2.00 || Joan | 6.25 || Bill | 4.00 || Fred | 1.00 || Bill | 7.00 || Bill | 9.50 |+------+-------+
7 rows in set (0.00 sec)
Here we are replacing the employeeID
numbers in the jobs table by the employee's
name
SELECT name, hours FROM employees, jobs WHEREemployees.employeeID = jobs.employeeID;
04/22/2304/22/23 BGABGA 6161
Select Queries With Joins (4)Select Queries With Joins (4)• Entries only for FredEntries only for Fred
+------+-------+| name | hours |+------+-------+| Fred | 13.50 || Fred | 1.00 |+------+-------+
2 rows in set (0.00 sec)
SELECT name, hours FROM employees, jobs WHEREemployees.employeeID = jobs.employeeID ANDname = 'Fred';
04/22/2304/22/23 BGABGA 6262
Select Queries With Joins (5)Select Queries With Joins (5)• Total hours worked for each personTotal hours worked for each person
+------+------------+| name | SUM(hours) |+------+------------+| Bill | 20.50 || Fred | 14.50 || Joan | 8.25 |+------+------------+3 rows in set (0.00 sec)
SELECT name, SUM(hours) FROM employees, jobsWHERE employees.employeeID = jobs.employeeIDGROUP BY name;
04/22/2304/22/23 BGABGA 6363
Select Queries With Joins (6)Select Queries With Joins (6)• Total hours worked, for FredTotal hours worked, for Fred
+------+------------+| name | SUM(hours) |+------+------------+| Fred | 14.50 |+------+------------+1 row in set (0.00 sec)
SELECT name, SUM(hours) FROM employees, jobsWHERE employees.employeeID = jobs.employeeIDAND name = 'Fred' GROUP BY name;
04/22/2304/22/23 BGABGA 6464
SQL linksSQL links• TutorialsTutorials
– http://www.w3schools.com/sql/http://www.w3schools.com/sql/– http://www.sqlzoo.nethttp://www.sqlzoo.net – http://sqlcourse.comhttp://sqlcourse.com (part 2) (part 2)– http://sqlcourse2/comhttp://sqlcourse2/com (part 1) (part 1)
• MySQL online reference manualMySQL online reference manual– http://dev.mysql.com/doc/mysql/en/Referhttp://dev.mysql.com/doc/mysql/en/Refer
ence.htmlence.html