Download table - Staffordshire University

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

DBase wikipedia , lookup

Concurrency control wikipedia , lookup

Encyclopedia of World Problems and Human Potential wikipedia , lookup

Tandem Computers wikipedia , lookup

Relational algebra wikipedia , lookup

Oracle Database wikipedia , lookup

Entity–attribute–value model wikipedia , lookup

Btrieve wikipedia , lookup

Extensible Storage Engine wikipedia , lookup

Microsoft Access wikipedia , lookup

Database wikipedia , lookup

Ingres (database) wikipedia , lookup

Microsoft Jet Database Engine wikipedia , lookup

Clusterpoint wikipedia , lookup

Null (SQL) wikipedia , lookup

Database model wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Open Database Connectivity wikipedia , lookup

Relational model wikipedia , lookup

SQL wikipedia , lookup

PL/SQL wikipedia , lookup

Transcript
Using SQL for online databases
A very quick introduction to SQL
•
•
•
•
•
•
Data and tables
Normalisation
Relational databases
The Structured Query Language
Using SQL in PHP (with Object Oriented syntax)
Common SQL constructs
Nic Shulver, FCES, Staffordshire University
Using SQL for online databases
Ways to structure information
 A lot of collected data is repetitive in form
 Data may be repetitive in content, too
 For example, if we have the following information for 15
people;
[Age in years], [Name], [Height in metres]
then we have 15 records of 3 fields, in this format;
[whole number], [text], [fractional number]
Using SQL for online databases
Examples
 Here is some simple information:
Danny DeVito(USA), Hugh Jackman
(Australia), Halle Berry(USA), Patrick
Stewart (UK), …
 This kind of information has a simple structure or format
 We can put the information into a table
Using SQL for online databases
Table with repeats
No.
First Name
Last Name
Origin
1
Danny
DeVito
United States of America
2
Arnold
Schwarzenegger
Austria
3
Halle
Berry
United States of America
4
Patrick
Stewart
United Kingdom
5
Karisma
Kapoor
India
6
Hugh
Jackman
Australia
7
Alec
Guinness
United Kingdom
8
Jack
Nicholson
United States of America
9
Kylie
Minogue
Australia
Using SQL for online databases
Normalised table
No.
First Name
Last Name
Origin
No.
Country Name
1
Danny
DeVito
1
1
United States of America
2
Arnold
Schwarzenegger
2
2
Austria
3
Halle
Berry
1
3
United Kingdom
4
Patrick
Stewart
3
4
Australia
5
Karisma
Kapoor
5
5
India
6
Hugh
Jackman
4
7
Alec
Guinness
3
8
Jack
Nicholson
1
9
Kylie
Minogue
4
This is an example of
a simple one-to-many
relationship.
Using SQL for online databases
Complex Table
No.
First Name
Last Name
Origin
Films
1
Danny
DeVito
United States of America
Batman Returns
Twins
2
Arnold
Schwarzenegger
Austria
Terminator
True Lies
Twins
Using SQL for online databases
Multiple tables…
No.
First Name
Last Name
Origin
No.
Country Name
1
Danny
DeVito
1
1
United States of America
2
Arnold
Schwarzenegger
2
2
Austria
3
United Kingdom
4
Australia
5
India
No.
Films
1
Batman Returns
2
Terminator
1
Hook
1
Twins
2
Twins
This is an example of
several linked tables
Using SQL for online databases
…still too complex?
 The previous example does not solve the problem
 What about the other actors/actresses in the films?
 Databases can soon get complicated
 Need to think carefully about structure before you start –
may be difficult later on
 For this module, we should only need a few tables (at
minimum)
Using SQL for online databases
Terminology
 Rows and Columns
 Broad view of the table – each row is a record, each column is a
set of fields
 This is analogous to a spreadsheet view
 Records and Fields
 Detailed view of the information
 Each record (entry) in the database is made up of fields, possibly
with some fields from joined tables
Using SQL for online databases
Relationships, Joins
 Tables may be joined together – this is very powerful but
can get complex
 Database systems which allow join relationships are
known as Relational Databases (see RDSD)
 To build, use and maintain joins between tables, it is
often easiest to use tools built into database programs
(e.g. MS Access, SQLyog)
Using SQL for online databases
Structured Query Language
 Structured Query Language (SQL), is a set of
commands that all programs and users may use to
access data within databases
 Application programs and tools often allow users to
access SQL databases without directly using SQL, but
these applications in turn must use SQL when executing
the user’s request
Using SQL for online databases
Capabilities
 SQL provides commands for a variety of tasks including:
 querying data,
 inserting, updating, and deleting rows in a table,
 creating, replacing, altering, and dropping objects,
 controlling access to the database and its objects,
 guaranteeing database consistency and integrity.
Using SQL for online databases
Why bother with SQL?
SQL gives us the power to access the contents of a database
in a simple, powerful way
SQL is (mostly) independent of the underlying database
engine
So you can use SQL with many different kinds of database
This is simpler than learning how to access each type of
database in a proprietary way
Using SQL for online databases
The restaurant model
•
•
The query engine provides a layer between programming languages and database.
It allows a developer to write programs which access data, without knowing how
the database is implemented.
Using SQL for online databases
Example SQL usage in PHP
// grabs matching record(s) from the “tblstudent" table
$sSQL="SELECT * FROM tblstudent WHERE Email='$sEmail' ";
$rsMain = $mysqli->query($sSQL);
What does the SQL do?
How does PHP use SQL?
How does the SQL get sent to the database?
Where do the results of the query appear?
Using SQL for online databases
Useful SQL SELECT examples
SELECT lastname, age FROM tblstudent WHERE firstname=‘Naomi’;
SELECT * FROM tblstudent WHERE firstname LIKE ‘Naom*’;
SELECT * FROM tblstudent WHERE age BETWEEN 16 AND 25;
SELECT firstname, studentnumber FROM tblstudent WHERE age>=25;
SELECT * FROM tblstudent WHERE studentnumber IS NOT NULL;
Using SQL for online databases
More SQL SELECT examples
SELECT * FROM tblstudent ORDER BY age DESC;
SELECT * FROM tblstudent WHERE postcode IN(‘ST1’, ‘ST4’, ‘ST6’);
SELECT * FROM tblstudent WHERE age BETWEEN 16 AND 25 ORDER BY age,
studentnumber DESC;
SELECT firstname, studentnumber FROM tblstudent WHERE age>=55 AND
studentnumber IS NOT NULL;
SELECT COUNT(*) AS “Total” FROM tblstudent WHERE age>=55;
Using SQL for online databases
The Four SQL Statements
There are four main SQL statements you will use.
The most useful is SELECT, which we have just seen.
It is usually used in this format;
SELECT column_name(s) FROM table_name
SELECT column_name(s) FROM table WHERE column operator
value
e.g. SELECT lastname, age FROM emp WHERE
firstname=‘Naomi’;
Using SQL for online databases
The Insert Statement
INSERT INTO table_name VALUES (value1, value2,....)
Inserts a new row into an existing table
INSERT INTO Persons VALUES (‘Lightman', ‘David‘, ‘[email protected]’);
INSERT INTO Authorisation VALUES (‘Joshua’, ‘BURGR’);
Insert Data in Specified Columns
INSERT INTO Persons (LastName, Address) VALUES (‘Smith', '7 Lee Avenue');
Using SQL for online databases
The Update Statement
UPDATE table_name SET column_name=new_value WHERE
column_name=some_value;
Update one Column in a Row:
UPDATE Person SET FirstName='Bob' WHERE Email='ab123456';
Update several Columns in a Row:
UPDATE Person SET Address='21 Jump Street', City='Los Angeles' WHERE
LastName='Hanson';
Using SQL for online databases
The Delete Statement
DELETE FROM table_name WHERE column_name = some_value
Delete one Row:
DELETE FROM Person WHERE Email='ab123456';
Delete several Rows:
DELETE FROM Person WHERE LastName='Smith';
Delete all Rows in a Table: [Beware!]
DELETE FROM Person;
→ Same as: DELETE FROM Person WHERE LastName='*';
Using SQL for online databases
The Database Connection
 Creates a new connection, configured for student ID codes
// Note: username is “xy123456”, password is “xy123456”
// This is unusual – normally the user, pwd and dbname differ
$id= 'xy123456';
$mysqli = new mysqli("web.fcet.staffs.ac.uk", $id, $id, $id);
if ($mysqli->connect_errno)
{
die( "Failed to connect to MySQL: (" .
$mysqli->connect_errno . ") " . $mysqli->connect_error );
}
Using SQL for online databases
Using the Statements - Select
// Receives values from Form, assigns values entered to vars
$npage_code = $_REQUEST['code'];
$sSQL = "SELECT * FROM PageElements WHERE PageCode='$npage_code' ";
$rsSearch = $mysqli->query($sSQL);
// fetches a row of fields and steps to the next one
$row = $rsSearch->fetch_assoc();
// gets each field by name
$linkcode=$row['LinkAd'];
$buycode=$row['BuyAd'];
Using SQL for online databases
Using the Statements - Insert
// Receives values from Form, assigns values entered to vars
$formname = $_REQUEST["name"];
$formemail = $_REQUEST["email"];
$formcomments = $_REQUEST["comments"];
// Declares SQL statement that will add data to the database
$sSQL = "INSERT INTO users (usrName, usrEmail, usrComments)
VALUES ('$formname', '$formemail', '$formcomments')";
// Just runs the SQL query (but better if we checked for errors)
$mysqli->query($sSQL);
$mysqli->close();
Using SQL for online databases
Using the Statements - Update
// Declares SQL statement that will update a database
$sSQL = "UPDATE Members SET FirstName='Mike' WHERE
LastName='North' ";
// Executes the SQL…
$mysqli->query($sSQL);
// note that SELECT, UPDATE, DELETE and INSERT SQL statements all
work with the “query()” method
Using SQL for online databases
Using the Statements - Delete
// Declares SQL statement to delete from a DB
$sSQL="DELETE FROM Members WHERE CITY='BELFAST' ";
// Executes the SQL statement
If( !$mysqli->query($sSQL) )
{ die("Could not delete from table: " . $mysqli->error);
}
Using SQL for online databases
Prepared Statements
•
•
Prepared statements use a template system to avoid
SQL injection attacks.
Example code below – look for the placeholder
character
$stmt = $mysqli->prepare("SELECT id FROM
tblMsgHubUser WHERE tuName=?");
$stmt->bind_param("s", $sUser); // s=string
$stmt->execute();
Using SQL for online databases
Conclusion
We have seen
What SQL can be used for,
The value of SQL as a cross-platform database interface
language,
Many examples of SQL clauses,
Examples of SQL in PHP.
http://uk3.php.net/manual/en/class.mysqli.php