may 26, 2005mysql tutorial - 11 mysql tutorial 1 – how to use mysql csci 2140 ta: jiye li...

37
May 26, 2005 MySQL Tutorial - 1 1 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li [email protected] May 26, 2005 http://flame.cs.dal.ca/ ~jiye/CSCI2140/

Upload: evan-warner

Post on 16-Dec-2015

226 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 1

MySQL Tutorial 1 – How to Use MySQL

CSCI 2140TA: Jiye Li [email protected] 26, 2005http://flame.cs.dal.ca/~jiye/CSCI2140/

Page 2: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 2

Agenda Getting familiar with

our network system Introducing MySQL SQL basics

create, add, select, modify, delete Exercises (see handout)

Page 3: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 3

How to get a UNIX account Sun workstation or ssh program

(putty) Log into torch.cs.dal.ca Username: discover Passwd: query Enter your student number

Ask Help Desk

Page 4: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 4

How to get a Windows account

Username: the same as torch account

Password: student ID number. Don’t forget ‘B’ is capitalized.

Page 5: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 5

What is MySQL? MySQL is a database management

system (DBMS) for relational databases

Online Manual http://dev.mysql.com/doc/

MySQL is installed on torch Each user ID stands for a database Create tables under this database

Page 6: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 6

How to Login to MySQL Go on torch.cs.dal.ca Run mysql to login

torch: ~$ mysql -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 123943 to server version: 4.0.12

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.mysql>

Student ID

Lower case

Page 7: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 7

How to Logout Use the command exit or quittorch: ~$ mysql -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 123975 to server version: 4.0.12

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> exitByetorch: ~$

Page 8: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 8

Use your database After login MySQL, use your own

database before creating tablestorch: ~$ mysql -pEnter password: Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 125213 to server version: 4.0.12

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use jiye;Database changedmysql> Your user ID

Page 9: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 9

SQL Basics Suppose we would like to create a

few tables, such as employee table, employer table and payment table, representing a database about employee information.

Page 10: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 10

How to write commands in MySQL

How to create a table Primary Keys and Foreign Keys

How to add records How to select records How to modify records How to delete records

Page 11: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 11

How to create tables Use create

create table <table_name> (column_name data_type [not null] … , column_name data_type [not null], primary key (column_name));

To show the structure of the tabledescribe <table_name>;

Page 12: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 12

Example

mysql> create table employee (

empno smallint(4) not null auto_increment,

name char (8) not null,

job char (4) ,

salary int (8) not null,

deptno int (4) not null,

primary key (empno)

);

Page 13: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 13

Primary Key Primary Key is a column or set of

columns Uniquely identifies the rest of the

data in any given row.

For Example: in the employee table, employee number is the primary key.

Page 14: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 14

Foreign Key A foreign key is a column in a table This column is a primary key of

another table Any data in a foreign key column

must have corresponding data in the other table

http://dev.mysql.com/doc/mysql/en/innodb-foreign-key-constraints.html

Page 15: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 15

Foreign Key The goal of using foreign keys is

that, tables can be related without repeating data

Note that foreign keys in SQL are used to check and enforce referential integrity, not to join tables. If you want to get results from multiple tables from a SELECT statement, you do this by performing a join between them:SELECT * FROM t1, t2 WHERE t1.id = t2.id;

Page 16: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 16

employer

Example – Create table with foreign keys

create table employee2 (empno smallint(4) not null, salary float,primary key (empno)) type = innodb;

create table employer (id smallint(4), employee_no smallint(4), index employ_ind (employee_no), foreign key(employee_no) references employee2(empno) on delete cascade) type=innodb;

empno (PK)

salary

100 200.85

200 129.54

300 98.17

id employee_no(FK)

51 100

52 100

53 200

54 300

employee2

Page 17: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 17

The Syntax of a Foreign Key Constraint Definition[CONSTRAINT [symbol]] FOREIGN KEY

(index_col_name, ...) REFERENCES table_name (index_col_name, ...) [ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT}] [ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT}]

Both tables have to be InnoDB type InnoDB provides MySQL with a transaction-

safe storage engine with commit, rollback, and crash recovery capabilities.

http://dev.mysql.com/doc/mysql/en/innodb-overview.html

Page 18: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 18

The Syntax of a Foreign Key Constraint Definition

InnoDB rejects any INSERT or UPDATE operation that attempts to create a foreign key value in a child table without a matching candidate key value in the parent table.

CASCADE: Delete or update the row from the parent table and automatically delete or update the matching rows in the child table.

SET NULL: Delete or update the row from the parent table and set the foreign key column(s) in the child table to NULL. This is only valid if the foreign key columns do not have the NOT NULL qualifier specified.

NO ACTION: NO ACTION means no action in the sense that an attempt to delete or update a primary key value will not be allowed to proceed if there is a related foreign key value in the referenced table.

RESTRICT: Rejects the delete or update operation for the parent table. NO ACTION and RESTRICT are the same as omitting the ON DELETE or ON UPDATE clause. (Some database systems have deferred checks, and NO ACTION is a deferred check. In MySQL, foreign key constraints are checked immediately, so NO ACTION and RESTRICT are the same.)

SET DEFAULT: This action is recognized by the parser, but InnoDB rejects table definitions containing ON DELETE SET DEFAULT or ON UPDATE SET DEFAULT clauses.

Page 19: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 19

MySQL Table Types If we want to use Foreign Key

InnoDB tables Otherwise

Default table type, MyISAM In SQL queries you can freely mix

InnoDB type tables with other table types of MySQL, even within the same query.

Page 20: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 20

How to add records Use insert

insert into <table_name> values(column_value, …, column_value);

Page 21: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 21

Example

insert into employee values (1000,'Wilson','Clrk',1700,10);

insert into employee values (1001,'Smith','Slsm',2500,40);

insert into employee values (1003,'Reed','Anlt',3500,30);

insert into employee values (1005,'Watson','Mngr',4500,30);

insert into employee values (1009,'Allen','Mngr',3800,40);

insert into employee values (1010,'Turner','Clrk',1800,50);

insert into employee values (2000,'Chen','Mngr',2900,10); insert into employee values (2100,'Ramirez','Mngr',3650,50); insert into employee values (2130,'McDonnel','Clrk',1625,60);insert into employee values (2140,'Simpson','Drvr',825,60);

Page 22: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 22

Example On Slide 17

insert into employee2 values (100, 200.85);insert into employee2 values (200, 129.54);insert into employee2 values (300, 98.17);

insert into employer values (51, 100);insert into employer values (52, 100);insert into employer values (53, 200);insert into employer values (54, 300);

Page 23: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 23

How to Select Records select * from <table_name>; select * from <table_name> where

<column_name> = <qualifier>; select * from <table_name> where

<column_name> = <qualifier> order by <column_name>;

select <column_name, …> from <table_name>;

select <distinct column_name, …> from <table_name>

Page 24: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 24

Example

select * from employee;

select * from employee where empno = 1000;

select * from employee where job = 'Clrk' order by salary;

select name, empno from employee;

select job from employee;

select distinct job from employee;

Page 25: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 25

Example On Slide 17

select empno from employee2;select empno from employee2

where salary >=50 and salary < 150;select * from employee2, employer;select id, empno from employer m, employee2 n

where m.employee_no = n.empno;

Page 26: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 26

How to Modify Records Use update to modify attribute

values of (some) tuples in a tableupdate <table_name> set <column i > = <expression i>, …, <column j> = <expression j> [where <condition>];

Page 27: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 27

Example

update employee set job = ‘Drvr’, deptno = 20 , salary = salary + 1000 where name = 'Reed’;

update employee set salary = salary * 1.15 where deptno in (10, 40);

Page 28: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 28

How to Delete Records Use delete

delete from <table_name> [where <condition>];

Page 29: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 29

Example

delete from employee where salary < 2000;

delete from employee;

Note: this command will delete all the records in the “employee” table.

Page 30: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 30

Tip1: How to Load Command

Execute a SQL script file. Take a file name as an argument. Save SQL commands into a file

<name> Execute the commands:

mysql> source <name>;

Page 31: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 31

Example In file “temp.sql”

select * from employee;select name from employee where salary < 3000;

mysql> source temp.sql;

Page 32: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 32

Tip2: How to Save Results Save results

tee <file>Set outfile. Append everything into given outfile <file>. All the information displayed on screen is stored in <file>.

Page 33: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 33

Examplemysql>tee result;mysql> select * from employee;mysql> notee;mysql> exittorch: ~$ cat resultmysql> select * from employee;

EMPNO NAME JOB SALARY DEPTNO---------- -------- ---- ---------- ---------- 1000 Wilson Clrk 1720 10 1001 Smith Slsm 2500 40

…………10 rows selected.mysql> notee;torch: ~$

Page 34: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 34

Appendix: MySQL Data TypesType Size Description

tinyint[Length] 1 byte Range of –128 to 127

float 4 bytes A small number with a floating decimal point

Date 3 bytes In the format of YYYY-MM-DD

Time 3 bytes In the format ofHH:MM:SS

varchar[Length] String length + 1 byte

A fixed-length field from 0 to 255 characters long

Page 35: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 35

Appendix: MySQL under Unix A few commands

use username; show tables; show columns from employee; help; exit; SQL commands (select, insert, delete,

…)

Page 36: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 36

Appendix: MySQL Control Center

Graphical user interface (GUI) to the MySQL database server

Supports interactive use, including syntax highlighting and tab completion

Download from http://dev.mysql.com/downloads/

other/mysqlcc.html

Page 37: May 26, 2005MySQL Tutorial - 11 MySQL Tutorial 1 – How to Use MySQL CSCI 2140 TA: Jiye Li jiye@cs.dal.cajiye@cs.dal.ca May 26, 2005 jiye/CSCI2140

May 26, 2005 MySQL Tutorial - 1 37

Appendix: MySQL Control Center

Student ID