* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download table - Staffordshire University
Survey
Document related concepts
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
Extensible Storage Engine wikipedia , lookup
Microsoft Access wikipedia , lookup
Ingres (database) wikipedia , lookup
Microsoft Jet Database Engine wikipedia , lookup
Clusterpoint wikipedia , lookup
Database model wikipedia , lookup
Microsoft SQL Server wikipedia , lookup
Open Database Connectivity 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