Download MySQL

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Extensible Storage Engine wikipedia , lookup

Clusterpoint wikipedia , lookup

Object-relational impedance mismatch wikipedia , lookup

Open Database Connectivity wikipedia , lookup

Relational model wikipedia , lookup

Database model wikipedia , lookup

Transcript
CSC 411/511:
DBMS Design
MySQL
Dr. Nan Wang
CSC411_L12_MySQL
1
Agenda
•
•
•
•
•
Introduction to MySQL
Get Connected
Basic MySQL Commands
MySQL Syntax
Data Retrieval
Dr. Nan Wang
CSC411_L12_MySQL
2
Overview of MySQL
• MySQL is a database management system.
• MySQL is a relational database management
system.
• The MySQL Database Server is very fast, reliable,
and easy to use.
• MySQL Server works in client/server or embedded
systems.
• A large amount of contributed MySQL software is
available.
• MySQL software is Open Source.
– Download MySQL reference manual
http://dev.mysql.com/doc/
– Download MySQL
http://dev.mysql.com/downloads/
Dr. Nan Wang
CSC411_L12_MySQL
3
Download MySQL
• Http://dev.mysql.com/downloads/
• GUI Tools:
– MySQL Administrator 1.2 Generally Available (GA)
– MySQL Query Browser 1.2 Generally Available (GA)
– MySQL Migration Toolkit 1.1 Generally Available (GA)
Dr. Nan Wang
CSC411_L12_MySQL
4
Get connected
• To connect to the server, use the MySQL user name when
you invoke mysql and, most likely, a password.
• If the server runs on a machine other than the one where you
log in, you will also need to specify a host name.
shell> mysql -h host -u user -p
Enter password: ********
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
• Disconnect it by typing
QUIT (or \q) at the mysql> prompt:
mysql> QUIT
Dr. Nan Wang
CSC411_L12_MySQL
5
Connection
• There are numerous command line options, but the most
essential options and syntax are
• mysql -u<username> -h<hostname> -p[password]
[database_name]
• If you leave out the -u option MySQL assumes the current
shell user.
• If you leave out the host mysql assumes localhost – i.e.,
the machine you're logged onto.
• If you give it the -p option but no password, mysql prompts
you for it.
Dr. Nan Wang
CSC411_L12_MySQL
6
Create and Use Database
• Create a database
mysql> CREATE DATABASE CSC411;
• Your database needs to be created only once, but
you must select it for use each time you begin a
mysql session.
mysql> USE CSC411
Database changed
– or
shell> mysql -h host -u user -p CSC411
Enter password: ********
Dr. Nan Wang
CSC411_L12_MySQL
7
Show Database
• Use the SHOW statement to find out what
databases currently exist on the server:
mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql
|
| test
|
| tmp
|
+----------+
• If the test database exists, try to access it:
mysql> USE test
Dr. Nan Wang
CSC411_L12_MySQL
8
Creating a Table
•
Creating the database is the easy part, but at this point it's empty, as
SHOW TABLES tells you:
mysql> SHOW TABLES;
Empty set (0.00 sec)
•
Use a CREATE TABLE statement to specify the layout of your table:
mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
-> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
•
Once you have created a table, SHOW TABLES should produce some
output:
mysql> SHOW TABLES;
+---------------------+
| Tables in menagerie |
+---------------------+
| pet |
+---------------------+
Dr. Nan Wang
CSC411_L12_MySQL
9
Describe statement
• To verify that your table was created the way you expected, use a
DESCRIBE statement:
mysql> DESCRIBE pet;
Dr. Nan Wang
CSC411_L12_MySQL
10
MySQL Data Types
• In the most general terms, there are three types:
numeric, string, and date/time.
• The concept of the NULL value
– A common source of confusion for newcomers to SQL, who often think
that NULL is the same thing as an empty string. This is not the case.
– For example, the following statements are completely different:
• mysql> INSERT INTO my_table (phone) VALUES (NULL);
• mysql> INSERT INTO my_table (phone) VALUES ('');
Dr. Nan Wang
CSC411_L12_MySQL
11
Loading Data into a Table
• After creating your table, you need to populate it. The LOAD DATA and
INSERT statements are useful for this.
• To load the text file pet.txt into the pet table, use this command:
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;
• Note that if you created the file on Windows with an editor that uses \r\n
as a line terminator, you should use:
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet
-> LINES TERMINATED BY '\r\n';
• Add a New record using an INSERT statement:
mysql> INSERT INTO pet
-> VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
Dr. Nan Wang
CSC411_L12_MySQL
12
Entering Queries
• Here's a simple command that asks the server to
tell you its version number and the current date.
• Type it in as shown here following the mysql>
prompt and press Enter:
mysql> SELECT VERSION(), CURRENT_DATE;
+------------+--------------+
| VERSION() | CURRENT_DATE |
+------------+--------------+
| 4.1.14-Max | 2005-09-03 |
+------------+--------------+
1 row in set (0.01 sec)
mysql> SELECT NOW();
Dr. Nan Wang
CSC411_L12_MySQL
13
Executing SQL Statements from a
Text File
• Put your SQL statements in a file and then tell
mysql to read its input from that file.
– Create a text file text_file that contains the statements you
wish to execute.
shell> mysql db_name < text_file
• If you are running mysql, you can execute an SQL
script file using the source or \. command:
mysql> source filename
mysql> \. filename
Dr. Nan Wang
CSC411_L12_MySQL
14
Use Scripts from MySQL Prompt
CREATE TABLE Sailors(
sid VARCHAR(8),
sname varchar(20),
age numeric,
primary key (sid));
CREATE TABLE Boats(
bid VARCHAR(8),
bname varchar(20),
color varchar(10),
primary key (bid));
CREATE TABLE Reserve(
sid VARCHAR(8) not null references Sailors(sid),
bid varchar(8) not null references Boads(did),
day date,
primary key (sid, bid));
Dr. Nan Wang
CSC411_L12_MySQL
15
Retrieving Information from a Table
• The SELECT statement is used to pull information from a table. The
general form of the statement is:
SELECT what_to_select
FROM which_table
WHERE conditions_to_satisfy;
• Selecting All Data:
mysql> SELECT * FROM pet;
Dr. Nan Wang
CSC411_L12_MySQL
16
Selecting Particular Rows
mysql> SELECT * FROM pet WHERE name = 'Bowser';
mysql> SELECT * FROM pet WHERE birth > '1998-1-1';
Dr. Nan Wang
CSC411_L12_MySQL
17
Examples
mysql> SELECT * FROM pet WHERE species = 'dog' AND sex = 'f';
mysql> SELECT * FROM pet WHERE species = 'snake' OR species = 'bird';
mysql> SELECT * FROM pet WHERE (species = 'cat' AND sex = 'm')
-> OR (species = 'dog' AND sex = 'f');
Dr. Nan Wang
CSC411_L12_MySQL
18
Selecting Particular Columns
mysql> SELECT name, birth FROM pet;
mysql> SELECT name, species, birth FROM pet
-> WHERE species = 'dog' OR species = 'cat';
Dr. Nan Wang
CSC411_L12_MySQL
19
Sorting Rows
• To sort a result, use an ORDER BY clause.
• In ascending order
mysql> SELECT name, birth FROM pet ORDER BY birth;
• In descending order
mysql> SELECT name, birth FROM pet ORDER BY birth DESC;
• You can sort on multiple columns
mysql> SELECT name, species, birth FROM pet ORDER BY species, birth
DESC;
– Note that the DESC keyword applies only to the column name
immediately preceding it (birth); it does not affect the species
column sort order.
Dr. Nan Wang
CSC411_L12_MySQL
20
Counting Rows
mysql> SELECT COUNT(*) FROM pet;
mysql> SELECT owner, COUNT(*) FROM pet GROUP BY owner;
mysql> SELECT species, sex, COUNT(*) FROM pet
-> WHERE species = 'dog' OR species = 'cat'
-> GROUP BY species, sex;
Dr. Nan Wang
CSC411_L12_MySQL
21
Using More Than one Table
mysql> LOAD DATA LOCAL INFILE 'event.txt' INTO TABLE event;
mysql> SELECT pet.name,
-> (YEAR(date)-YEAR(birth)) - (RIGHT(date,5)<RIGHT(birth,5)) AS age,
-> remark
-> FROM pet, event
-> WHERE pet.name = event.name AND event.type = 'litter';
Here, YEAR() pulls out the year part of a date and RIGHT() pulls off the
rightmost five characters that represent the MM-DD (calendar year) part of
the date.
The part of the expression that compares the MM-DD values evaluates to 1
or 0, which adjusts the year difference down a year if date occurs earlier in
the year than birth.
Dr. Nan Wang
CSC411_L12_MySQL
22
Using More Than one Table
• Sometimes it is useful to join a table to itself, if you want to
compare records in a table to other records in that same
table.
– For example, to find breeding pairs among your pets, you can
join the pet table with itself to produce candidate pairs of
males and females of like species:
mysql> SELECT p1.name, p1.sex, p2.name, p2.sex, p1.species
-> FROM pet AS p1, pet AS p2
-> WHERE p1.species = p2.species AND p1.sex = 'f' AND p2.sex = 'm';
+--------+------+--------+------+---------+
| name | sex | name | sex |species|
+--------+------+--------+------+---------+
| Fluffy | f
| Claws | m | cat
|
| Buffy | f | Fang | m | dog |
| Buffy | f | Bowser| m | dog |
+--------+------+--------+------+---------+
•
Dr. Nan Wang
CSC411_L12_MySQL
23
CSC 411/511:
DBMS Design
Questions?
Dr. Nan Wang
CSC411_L12_MySQL
24