Presentation is loading. Please wait.

Presentation is loading. Please wait.

MySQL/PHP Workshop 2 MySQL lectures 2 PHP lectures Each lecture builds on concepts taught and learned in the previous lectures. The first two lectures.

Similar presentations


Presentation on theme: "MySQL/PHP Workshop 2 MySQL lectures 2 PHP lectures Each lecture builds on concepts taught and learned in the previous lectures. The first two lectures."— Presentation transcript:

1 MySQL/PHP Workshop 2 MySQL lectures 2 PHP lectures Each lecture builds on concepts taught and learned in the previous lectures. The first two lectures discuss the concept of a relational database such as MySQL and show you how to manipulate the data stored in the database from the command line. It is essential to learn this first because PHP makes use of the language of the database. The third and fourth lectures will introduce you to PHP, a server- side scripting language that allows you to interact with the MySQL database from a web browser and create fancy web pages to display the data. PHP is the go-between that fetches the data from the MySQL database and then spits it out dynamically as the nicely formatted HTML page that the browser expects. http://www.trii.org/courses/mysql/

2 Class #1: Introduction to MySQL Relational databases Database design SQL o Creating databases o Creating tables o Selecting from, deleting, and updating tables Exercises You should have o Class notes o Exercise handout o MySQL Pocket Reference Useful resource: http://dev.mysql.com/doc/http://dev.mysql.com/doc/ Manda Wilson, BIC, cBio, MSKCC Trii Training: Bioinformatics and Computational Methods

3 Relational Databases A database is a collection of tables Columns define attributes of the data o All data in a column must have the same data type A record is stored in a row table name column row

4 Use a Relational Database When… You have a very large dataset There is redundant data o Wastes disk space o Increases errors Information must be updated in multiple locations Security is important o Different users can be granted different permissions Strict enforcement of data types is important

5 Spreadsheet Example

6 Data is inconsistent! Now imagine you are designing the New York Public Library database which has tens of million books and well over a million cardholders.

7 Database Design Entity Relationship Design Entity (“thing”, “object”)Table Attributes (describe entity)Columns Entity InstanceRow Relationships between entities preserved in relationships between tables. If you are interested in learning more formal design methods look up “normalization” and/or “third normal form”.

8 Our data Ensembl Gene IDSymbol / Name Chromo some Start Position (bp) End Position (bp) LocusLink ID Taxonomy ID Common Name Species ENSG00000186891.3TNFRSF1811044947104814787849606humanHomo sapiens ENSG00000078808.4CAB45110583701073469511509606humanHomo sapiens ENSG00000176022.1B3GALT61107370310764761267929606humanHomo sapiens ENSG00000160087.5UBE2J21109535211152921184249606humanHomo sapiens ENSG00000162572.4SCNN1D11123634113346763399606humanHomo sapiens ENSG00000162576.4MGC3047111941301199973843089606humanHomo sapiens ENSG00000175756.3AKIP112151681216641549989606humanHomo sapiens ENSG00000131586.2MRPL20112887031294063550529606humanHomo sapiens ENSG00000179403.2WARP113223111327547648569606humanHomo sapiens ENSG00000160072.5ATAD3B113586111396091838589606humanHomo sapiens ENSG00000008128.5CDC2L21158261716040609859606humanHomo sapiens ENSG00000169911.4SLC35E211611978162572899069606humanHomo sapiens ENSG00000008130.3FLJ13052116309751659805652209606humanHomo sapiens ENSG00000078369.3GNB111665027177079227829606humanHomo sapiens ENSMUSG00000041954.1TNFRSF1841541397021541422512193610090mouseMus musculus ENSMUSG00000023286.1UBE2J24154057210154072296414049910090mouseMus musculus What entities or “objects” are defined here? Is there any redundant data? What happens if we want to add another species attribute (e.g. genus)?

9 Our tables How do we know which organism a gene belongs to? Do we have unique identifiers? Can the organism have more than one gene? Can the gene have more than one organism?

10 Our tables Means each gene has “one and only one” organism, but that each organism can have more than one gene. This is an example of an entity relationship diagram.

11 Our tables A primary key is a unique identifier for a record in a table. A foreign key in one table refers to the primary key of another. The gene table has a foreign key, Organism_ID. Each record in the gene table will have an organism id to link it to the correct species record in the organism table.

12 Database Design Caveat Sometimes design is “sacrificed” for speed.

13 Data Types float integer tinyint varchar(size) o stores strings o size can be between 0 - 255, inclusive datetime + more What data types should our attributes (columns) be?

14 Complete Design Gene ColumnData Type gene_idinteger ensembl_gene_idvarchar(50) organism_idinteger namevarchar(35) locuslinkvarchar(10) chromosometinyint chromo_startinteger chromo_endinteger descriptionvarchar(255 ) Organism ColumnData Type organism_idinteger taxonomy_idinteger common_namevarchar(35) speciesvarchar(35) Database name: ensmartdb

15 Connecting to MySQL from the Command Line mysql -uusername -p Example: >mysql -uroot To EXIT MySQL: EXIT;

16 Basic SQL Commands SQL statements end with a semicolon View databases SHOW DATABASES;

17 Importing a Database Creating a database CREATE DATABASE trii; From the command line: mysql -uusername -ppassword databasename < filename.sql Example: o mysql -uroot trii < trii.sql

18 Use database databasename USE databasename; Display all tables in a database SHOW TABLES; Basic SQL Commands

19 Create Table CREATE TABLE organism ( organism_id INTEGER NOT NULL AUTO_INCREMENT, taxonomy_id INTEGER NOT NULL, common_name VARCHAR(35) NOT NULL, species VARCHAR(35) NOT NULL, PRIMARY KEY (organism_id), UNIQUE (taxonomy_id) ); database name column names

20 View column details for a table DESC tablename;

21 Selecting all data SELECT * FROM tablename;

22 Select only the columns you need (it will be faster) SELECT common_name, species FROM organism;

23 Limiting your data Get the species name for a specific organism (you have the id) SELECT species FROM organism WHERE organism_id=1; How do we select all the gene names for chromosome 1?

24 Insert Inserting a gene INSERT INTO gene (ensembl_gene_id, organism_id, name, chromosome, chromo_start, chromo_end) VALUES (‘MY_NEW_GENE’, 1, ‘MY GENE’, 1, 12345, 67890); Get the id of the gene: SELECT gene_id FROM gene WHERE name='MY GENE';

25 Delete/Update Deleting a gene DELETE FROM gene WHERE gene_id=19; Updating a gene UPDATE gene SET name=‘NEW NAME’ WHERE name=‘AKIP’;

26 Table Joins Sometimes you want data from more than one table. To do this we join the tables. The result is a new (temporary) table.

27 Cross Join SELECT gene.name, organism.species FROM gene, organism; Note: There are only two records in the gene table with the name “TNFRSF18”. One is a mouse gene and the other is a human gene. What do you think happened?

28 Cross Join (Continued) Each row of the gene table was joined with every row in the organism table.

29 Cross Join (Continued) We want to use the organism id to match a gene record with the correct organism record so that we get: Remember there are two gene records with the name “TNFRSF18”.

30 Cross Join (Continued) SELECT gene.name, organism.species FROM gene, organism WHERE gene.organism_id=organism.organism_id;

31 Notice that we have 18 rows and that there are 18 rows in the gene table.

32 Class #2: Introduction to MySQL (Continued) Table Joins Where clause (continued) Aggregate Functions Backing up your database Indexes (if time) Importing large datasets (if time)


Download ppt "MySQL/PHP Workshop 2 MySQL lectures 2 PHP lectures Each lecture builds on concepts taught and learned in the previous lectures. The first two lectures."

Similar presentations


Ads by Google