Mysql lectures notes
Download
1 / 14

MySQL Lectures Notes - PowerPoint PPT Presentation


  • 117 Views
  • Uploaded on

MySQL Lectures Notes. Stored Procedures, Triggers, Program Access Dr Lisa Ball 2008. Sources. dev.mysql.com www.mysqltutorial.org www.digitalpropulsion.org www.databasedesign-resource.com/ mysql-triggers.html. Trigger Example.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'MySQL Lectures Notes' - teal


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Mysql lectures notes

MySQL Lectures Notes

Stored Procedures, Triggers, Program Access

Dr Lisa Ball

2008


Sources
Sources

dev.mysql.com

www.mysqltutorial.org

www.digitalpropulsion.org

www.databasedesign-resource.com/ mysql-triggers.html


Trigger example
Trigger Example

DELIMITER $$ -- set delimeter (allow ; inside) CREATE TRIGGER newsCounterAFTER INSERT ON NewsFOR EACH ROW BEGIN INSERT INTO NewsCount (newsItemCount) 

(SELECT count(*) FROM News);END;$$

DELIMITER ; -- reset delimeter


Sample db
Sample DB

CREATE TABLE NewsCategories( catIDint not null auto_increment, 

catNamevarchar(32), 

primary key(catID));

CREATE TABLE News( newsIDint not null auto_increment, 

catIDint not null, 

title varchar(32) not null, txt blob, 

primary key(newsID));

CREATE TABLE NewsCount( newsItemCountint );


Trigger example1
Trigger Example

DELIMITER $$CREATE TRIGGER newsCategoryHandlerAFTER DELETE ON NewsCategoriesFOR EACH ROW BEGIN DELETE FROM News 

WHERE catID=OLD.catID;END;$$

DELIMETER ;

-- Note: can reference NEW.attr on insert, update


Trigger example2
Trigger Example

DELIMITER $$CREATE TRIGGER newsCounterAFTER INSERT ON NewsFOR EACH ROW BEGIN DELETE FROM NewsCount; INSERT INTO NewsCount (newsItemCount)

 (SELECT count(*) FROM News);END;

$$


Trigger statements
Trigger Statements

DROP TRIGGER newsCounter;

SHOW TRIGGERS;

One trigger per event, per table

Can add procedural elements, such as IF statements

See reference 4 (databasedesign-resource) for another example


Stored procedures
Stored Procedures

Why go to the trouble of extracting logic from your application, putting it into a different format, and placing it on the database server? There are several advantages to doing so. Here is a (incomplete) list of some of the most commonly sited advantages:

MySQL stored procedures can greatly cut down on the amount of traffic going back and forth over your network. (usually FASTER ingeneralthan using app program)

Stored procedures can greatly improve the security of your database server. SQL that is executed on the server is not subject to SQL injection attacks.

Stored procedures provide a way to abstract and separate data access routines from the business logic of your application.

Stored procedures allow these routines to be accessed by programs using different platforms and API's, and make your applications more portable.

From source 4 (databasedesign-resource)


Stored procedures1
Stored Procedures

  • Block structured language similar to Oracle PL/SQL and IBM DB2 SQL

  • Some folks recommend using MySQL query browser to aid creation, but can be done from command line

  • Seeing what you have

    • SHOW PROCEDURE STATUS;

    • SHOW PROCEUDRE LIKE ‘%Test%’;

    • SHOW CREATE PROCEDURE myproc;


Stored procedures2
Stored Procedures

  • Sample DB

    -- create News table, be sure to be in a 'test' DBCREATE TABLE News (NewsIDintauto_increment not null,

      Title varchar(32), 

    primary key(NewsID))


Stored procedures3
Stored Procedures

DELIMITER $$DROP PROCEDURE IF EXISTS sprocTest $$CREATE PROCEDURE sprocTest (id int, title varchar(32))BEGIN -- INSERT NEW RECORD IF PREEXISTING RECORD DOESNT EXIST IF (id = 0) THEN   SET id = null; END IF; IF (id IS NOT NULL) AND (EXISTS 

(SELECT * FROM News WHERE NewsID=id)) THEN   UPDATE News SET Title=title WHERE NewsID=id; ELSE   INSERT INTO News (Title) VALUES (title); END IF;END $$DELIMITER ;

To call:

CALL sprocTest(1,'Some News Title');  -- this will update recordID 1


Stored procedures4
Stored Procedures

  • Using cursors

    • Let’s us loop on each row returned from a query (the result set)

    • see design-resources link (also on next slide)


stored procedure using cursors in a loop

To use:

call events(‘11/09’);

more detailed tutorial at mysqltutorial.org


Program db access
Program DB Access

  • First:

    • Chapter 9 Slides 18-37 from Elmasri 5th edition

  • Some sources for Java access

    • http://www.kitebird.com/articles/jdbc.html

    • http://www.cs.ucdavis.edu/~devanbu/teaching/160/docs/mysql_java.pdf

    • http://www.romow.com/computer-blog/how-to-use-mysql-with-java/

  • Can also access mysql with Perl, PHP, Python, Ruby


ad