Your SlideShare is downloading. ×
BITS: Introduction to relational databases and MySQL - Schema design
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

BITS: Introduction to relational databases and MySQL - Schema design

1,709

Published on

BITS training: Introduction to relational databases and MySQL - Module 3: Schema design. …

BITS training: Introduction to relational databases and MySQL - Module 3: Schema design.

See http://www.bits.vib.be/index.php?option=com_content&view=article&id=17204047:green-basics-of-databases&catid=81:training-pages&Itemid=190

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,709
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
44
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Introduction to MySQL● Introduction● Installation● SQL● Schema design● PerlBITS/VIB Bioinformatics Training – Jun 29, 2011 – Luc Ducazu <luc@daphnia.com>
  • 2. Database schema● Although you can execute DDL commands from  the MySQL monitor directly, this is not often  done● There are tools that allow you to design a schema  graphically and generate the CREATE TABLE ...  statements ● Examples: – MySQL workbench – Dia
  • 3. MySQL workbench● Available as a standard package on some Linux  distros (eg Fedora) ● Available as Windows MSI, Linux DEB or RPM  package or source archive from  http://dev.mysql.com/downloads/workbench/● To install a DEB package: # dpkg ­i package.deb● To install a RPM package: # rpm ­Uvh package.rpm
  • 4. MySQL workbench ­ demo
  • 5. Database schema● Once the schema is designed, MySQL workbench  can generate a script containing all SQL  statements to create the tables and other objects: File ­>  Export ­>  Forward Engineer SQL CREATE Script● This script can be executed as usual from the  MySQL monitor
  • 6. Inserting rows● To populate tables, use the INSERT SQL  statement: mysql> insert into tbl        (col1, col2, ...)         values        (val1, val2, ...) [,        (valx, valy, ...) , ...]● With: – tbl the name of the table – col1, col2, ... a list (subset) of column names – val1 value for col1 – val2 value for col2
  • 7. Inserting rows ­ examples● Example (biodb version 1) insert into modorg (id, class, genus, species,  nchr, gsize, draft) values (1, “Bacteria”, “Escherichia”, “coli”,  1, 4.639, “1997­09­05 00:00:00”)● Note that strings and dates have to be properly  quoted
  • 8. Inserting rows● You can leave out the column list if – a value is given for all columns – the values are specified in the order dictated by the  schema mysql> insert into tbl        values        (val1, val2, ...) [,        (valx, valy, ...) , ...]
  • 9. Changing rows● To change one or more rows, use the UPDATE  SQL statement: mysql> update tbl set col1=expr1 [, col2=expr2, ...] [where cond]● With: – tbl the name of the table – col1 the column to change – expr1 the new value  – cond the row filter ­ if unspecified, all rows of the  table will be updated
  • 10. Changing rows ­ examples● To change the C elegans number of  chromosomes to 7: update modorg set nchr = 7 where genus = “caenorhabditis”   and species = “elegans”;● To change the draft date to the current date: update modorg set draft = now();
  • 11. Deleting rows● To remove rows, you use the DELETE SQL  statement: delete from tbl [where cond]● With: – tbl the name of the table – cond the row filter ­ if unspecified, all rows of the  table will be deleted – note: since you can only remove entire rows, there is  no need to specify column names
  • 12. Deleting rows ­ examples● To remove all in model organisms with a genome  publishing date before 2000: delete from modorg where year(draft) < 2000;
  • 13. Introduction to MySQL● Introduction● Installation● SQL● Schema design● PerlBITS/VIB Bioinformatics Training – Jun 29, 2011 – Luc Ducazu <luc@daphnia.com>
  • 14. Perl● Perl is a scripting language that has excellent text  manipulation capabilities● Many biological databases are available as flat  text files● Perl is very handy in the automation of the  population of MySQL databases
  • 15. Automated population● There are basically two ways Perl can help to  insert data into tables: – The Perl script generates USE, INSERT, ... SQL  statements. You can than execute these statements  using the MySQL monitor: $ perl myscript.pl | mysql – The Perl script connects to the database and executes  SQL statements directly: DBI
  • 16. Perl DBI● Perl DBI provides a programming interface that  abstracts most of the RDBMS specifics● In principle it should be possible to port scripts,  written for other RDBMSs (like PostgreSQL), to  MySQL with only minimal effort: all you have to  do is change the connection string● Packages to install (Ubuntu) – libdbi­perl: Perl DBI – libdbd­mysql­perl: MySQL driver for DBI
  • 17. Perl DBI ­ connecting● Here is a minimal program: #!/usr/bin/perl ­w use strict; use DBI; my $dbh = DBI­>connect(      “DBI:mysql:host=localhost;database=biodb”,      “user”,      “password”) or die; ... $dbh­>disconnect();
  • 18. Perl DBI ­ connecting● Some highlights: – use DBI; Load Perl DBI library – DBI­>connect(connection string); Connect to a database ● it is a MySQL database server ● the DB server is running on the local machine ● you can provide the name of the database ● you can provide a user name and password The connect() function returns ● a database handle ($dbh) on success ● false on failure – $dbh­>disconnect() to clean up resources
  • 19. Perl DBI ● To execute a SQL statement that does not return a  result set, eg INSERT, DELETE, use do(): my $n = $dbh­>do(stmt);● This function – requires a valid database handle – returns the number of rows affected, if no rows are  affected, a special value is returned: 0E0 (evaluates  true) – false in case of an error● You can use execute() as well
  • 20. Perl DBI ● To execute a SQL statement that returns a result  set, eg SELECT use the following recipe: 1. Prepare a statement: my $sth = $dbh­>prepare(stmt); 2. Send the query to the database server: $sth­>execute(); 3. Read the result, row by row: my @row = $sth­>fetchrow_array(); my $ref = $sth­>fetchrow_hashref(); 4. Clean up resources: $sth­>finish();
  • 21. Perl DBI ­ examples● To list all classes in modorg: ... my $qry = “select distinct class ”         . “from modorg ”          . “order by class”; my $sth = $dbh­>prepare($qry); $sth­>execute(); while(my @row = $sth­>fetchrow_array()) {    print “$row[0]n”; }; $sth­>finish(); ...
  • 22. Perl DBI ­ examples● To list all organisms in modorg: ... my $qry = “select genus, species ”         . “from modorg ”          . “order by genus”; my $sth = $dbh­>prepare($qry); $sth­>execute(); while(my $ref = $sth­>fetchrow_hashref()) {    print $ref­>{“genus”} . “ “         . $ref­>{“species”} . “n”; }; $sth­>finish(); ...
  • 23. Perl DBI ­ examples● To insert a bunch of rows into modorg: ... my $qry = “insert into modorg ”         . “(id, class, genus, species) ”          . “values (?, ?, ?, ?)”; my $sth = $dbh­>prepare($qry); $sth­>execute(11, “Mammels”,        “Sus”, “scrofa”); ...
  • 24. Quoting● Never allow arbitrary user input in SQL  statements

×