Standard Query Language (SQL) Hamid Zarrabi-Zadeh Web Programming – Fall 2013 2 Outline

• Introduction • Local Storage Options  Cookies  • Standard Query Language (SQL)  Commands  Queries • Summary 3 Introduction

• Any (web) application needs persistence storage • There are three general storage strategies:  server-side storage  client-side storage  a hybrid strategy 4 Client-Side Storage

• Client-side data is stored locally within the user's browser • A web page can only access data stored by itself • For a long time, cookies were the only option to store data locally • HTML5 introduced several new web storage options 5 Server-Side Storage

• Server-side data is usually stored within a file or a database system • For large data, database systems are preferable over plain files • Database Management Systems (DBMSs) provide an efficient way to store and retrieve data Cookies 7 Cookies

• A cookie is a piece of information stored on a user's browser • Each time the browser requests a page, it also sends the related cookies to the server • The most common use of cookies is to identify a particular user amongst a set of users 8 Cookies Structure

• Each cookie has: • a name • a value (a 4000 character string) • expiration date (optional) • path and domain (optional) • if no expiration date is specified, the cookie is considered as a session cookie • Session cookies are deleted when the browser session ends (the browser is closed by the user) 9 Set/Get Cookies

• In JavaScript, cookies can be accessed via the document.cookie pseudo-variable • Set cookie: document.cookie = "name=value; expires=date; path=/; domain=ce.sharif.edu"

• Read all cookies:

var pairs = document.cookie.split(';'); 10 jQuery.Cookie

• A simple jQuery plugin for reading, writing and deleting cookies • Read cookie  $.cookie(); // all cookies as a dictionary  $.cookie('the_cookie'); • Set cookie  $.cookie('the_cookie', 'the_value');  $.cookie('the_cookie', 'the_value', {expires: 7, path: '/'}); • Remove cookie  $.removeCookie('the_cookie'); Web Storage 12 Web Storage

• HTML5 introduces new local storages, which are more secure and faster than cookies  they are not included with every server request  they can store large amounts of data efficiently • Two new objects for storing data  localStorage – stores data with no expiration date  sessionStorage – stores data for one session 13 Web Storage Example

• Here is an example:

if (typeof (Storage) !== 'undefined') { localStorage.student = 'Ali', localStorage.grade = 19.5; }

• Note: values are always stored as strings • Use JSON.stringify() to convert objects to string before storing, and use JSON.parse() to retrieve 14 Local

• HTML5 has two standard interfaces for supporting local databases:  Web SQL Database  Indexed Database • Web SQL defines a rational database that can be queried using SQL • IndexedDB is a NoSQL database which uses object stores rather than the typical rational database implementation Standard Query Language (SQL) 16 What is SQL?

• SQL is a standard language for accessing and manipulating rational databases • SQL is an ANSI (American National Standards Institute) standard, though there are slightly different versions of the SQL language • Examples of SQL database systems are  Oracle  MS SQL Server  IBM DB 2  MySQL, SQLight, … 17 Rational Databases

• Components:  databases  tables  rows  fields (corresponds to table columns) • Operations  create/drop databases or tables  insert/update/delete table rows  query/fetch a set of rows 18 SQL Commands

• Most database systems provide a command-line tool for issue SQL commands or queries • There are also some GUI tools built upon command-line tools providing a more comfortable user interface • Most databases are configured to be case- insensitive, especially on database commands • Most command-line programs require a trailing semicolon (;) to terminate a SQL statement

SELECT * from table_name; 19 Database Operations

• Creating a Database

CREATE DATABASE test; GRANT ALL ON test.* to user(s);

• Using a Database

USE test;

• Dropping a Database

DROP DATABASE test; 20 Table Operations

• Creating a Table

CREATE TABLE users (name VARCHAR(30), userid INT, groupid INT);

• Dropping a Table

DROP TABLE users;

• Cleaning a Table

TRUNCATE TABLE users; 21 Row Operations

• Inserting a Row

INSERT INTO users VALUES('Ali', 110, 1);

• Updating a Row

UPDATE users SET groupid=4 WHERE groupid=1;

• Deleting a Row

DELETE FROM users WHERE groupid=4; SQL Queries 23 SQL Select

• The SELECT statement is used to select data from a database • The result is stored in a result table, called the result-set

SELECT column_name,column_name FROM table_name;

SELECT * FROM table_name;

SELECT DISTINCT column_name,column_name FROM table_name; 24 Conditional Select

• The WHERE clause is used to extract only those records that fulfill a specified criterion SELECT column_name, column_name FROM table_name WHERE column_name operator value;

• Operators:  =, <>, >, >=, <, <=, BETWEEN, LIKE, IN, IS, IS NOT  AND, OR

SELECT name, userid FROM users Where userid > 10 AND groupid <= 4 25 Order Results

• The ORDER BY keyword is used to sort the result- set by one or more columns SELECT column_name, column_name FROM table_name ORDER BY column_name,column_name ASC|DESC;

• The ORDER BY keyword sorts the records in ascending order by default. • To sort the records in a descending order, you can use the DESC keyword. 26 SQL Functions

• SQL has many built-in functions for performing calculations on data • Sample aggregate function:

SELECT AVG(column_name) FROM table_name

• Sample scalar function: SELECT UCASE(name), userid FROM users; • Combined:

SELECT UCASE(name) FROM users WHERE grade > (SELECT AVG(grade) FROM users); 27 Aggregate Functions

• SQL aggregate functions return a single value, calculated from values in a column • Useful aggregate functions:  AVG() - Returns the average value  COUNT() - Returns the number of rows  FIRST() - Returns the first value  LAST() - Returns the last value  MAX() - Returns the largest value  MIN() - Returns the smallest value  SUM() - Returns the sum 28 Scalar Functions

• SQL scalar functions return a single value, based on the input value. • Useful scalar functions:  UCASE() - Converts a field to upper case  LCASE() - Converts a field to lower case  MID() - Extract characters from a text field  LEN() - Returns the length of a text field  ROUND() - Rounds to the number of decimals specified  NOW() - Returns the current system date and time  FORMAT() - Formats how a field is to be displayed 29 Summary

• There are three general options for storing data on client side:  Cookies  Web Storage  Web SQL / Indexed DB • Most server-side storage systems use rational databases to store data • SQL is a standard language for accessing and manipulating rational databases 30 References

• W3Schools  http://www.w3schools.com/sql • Core Python Applications Programming  By Wesley J. Chun • Internet Programming by Pat Morin  http://cg.scs.carleton.ca/~morin/teaching/2405