SlideShare uma empresa Scribd logo
1 de 67
Structured Query Language
1   Introduction to SQL
    What is SQL?
    – When a user wants to get some information
      from a database file, he can issue a query.
    – A query is a user–request to retrieve data or
      information with a certain condition.
    – SQL is a query language that allows user to
      specify the conditions. (instead of algorithms)
1   Introduction to SQL
    Concept of SQL

– The user specifies a certain condition.
– The program will go through all the records
  in the database file and select those records
  that satisfy the condition.(searching).
– Statistical information of the data.
– The result of the query will then be stored in
  form of a table.
2   Basic structure of an SQL
    query
     G e n e ra l           S E L E C T , A L L / D IS T IN C T , *,
     S tru c tu re          A S, FRO M , W H ERE


     C o m p a ris o n      IN , B E T W E E N , L IK E "% _"

     G ro u p in g          G R O U P B Y , H A V IN G ,
                            C O U N T ( ), S U M ( ), A V G ( ), M A X ( ), M IN ( )

     D is p la y O rd e r   O RD ER BY , A SC / D ESC

     L o g ic a l           AND, OR, NOT
     O p e ra to rs

     O u tp u t             IN T O T A B L E / C U R S O R
                            T O F IL E [A D D IT IV E ], T O P R IN T E R , T O S C R E E N

     U n io n               U N IO N
2   The Situation:
    Student Particulars
     field       type      width   contents
     id          numeric     4     student id number
     name        character  10     name
     dob         date        8     date of birth
     sex         character   1     sex: M / F
     class       character   2     class
     hcode       character   1     house code: R, Y, B, G
     dcode       character   3     district code
     remission   logical     1     fee remission
     mtest       numeric     2     Math test score
I   General Structure


    SELECT ...... FROM ...... WHERE ......
    SELECT [ALL / DISTINCT] expr1 [AS col1], expr2 [AS col2] ;
    FROM tablename WHERE condition
I    General Structure
     SELECT [ALL / DISTINCT] expr1 [AS col1], expr2 [AS col2] ;
     FROM tablename WHERE condition
    – The query will select rows from the source tablename
      and output the result in table form.
    – Expressions expr1, expr2 can be :
       • (1) a column, or
       • (2) an expression of functions and fields.

    – And col1, col2 are their corresponding column names
      in the output table.
I    General Structure
     SELECT [ALL / DISTINCT] expr1 [AS col1], expr2 [AS col2] ;
     FROM tablename WHERE condition
    – DISTINCT will eliminate duplication in the output
      while ALL will keep all duplicated rows.
    – condition can be :
       • (1) an inequality, or
       • (2) a string comparison
       • using logical operators AND, OR, NOT.
I       General Structure
       Before using SQL, open the student file:
         USE student
 eg. 1  List all the student records.
            SELECT * FROM student

          id   name     dob        sex   class   mtest   hcode   dcode   remission
Result    9801 Peter    06/04/86   M     1A      70      R       SSP     .F.
          9802 Mary     01/10/86   F     1A      92      Y       HHM     .F.
          9803 Johnny   03/16/86   M     1A      91      G       SSP     .T.
          9804 Wendy    07/09/86   F     1B      84      B       YMT     .F.
          9805 Tobe     10/17/86   M     1B      88      R       YMT     .F.
          :    :        :          :     :       :       :       :       :
I       General Structure
eg. 2    List the names and house code of 1A students.

          SELECT name, hcode, class FROM student ;
          WHERE class="1A"

           Class                         Class
            1A                          1A
            1A
                      class="1A"
                                        1A
            1A                          1A
            1B                          1B
            1B                          1B
             :                            :
I        General Structure
eg. 2      List the names and house code of 1A students.


        Result      name     hcode   class
                    Peter    R       1A
                    Mary     Y       1A
                    Johnny   G       1A
                    Luke     G       1A
                    Bobby    B       1A
                    Aaron    R       1A
                    :        :       :
I        General Structure
eg. 3       List the residential district of the Red House
            members.
             SELECT DISTINCT dcode FROM student ;
             WHERE hcode="R"
                         dcode
        Result
                         HHM
                         KWC
                         MKK
                         SSP
                         TST
                         YMT
I
eg. 4
        General Structure
         List the names and ages (1 d.p.) of 1B girls.




                    1B Girls ?
I
eg. 4
        General Structure
         List the names and ages (1 d.p.) of 1B girls.


          Condition for "1B Girls":
        1) class = "1B"
        2) sex = "F"
        3) Both ( AND operator)
I
eg. 4
        General Structure
         List the names and ages (1 d.p.) of 1B girls.




               What is "age"?
I
eg. 4
        General Structure
         List the names and ages (1 d.p.) of 1B girls.


                    Functions:
    # days : DATE( ) – dob
    # years :(DATE( ) – dob) / 365
    1 d.p.: ROUND(__ , 1)
I
eg. 4
         General Structure
            List the names and ages (1 d.p.) of 1B girls.

        SELECT name, ROUND((DATE( )-dob)/365,1) AS age ;
        FROM student WHERE class="1B" AND sex="F"


        Result        name       age
                      Wendy      12.1
                      Kitty      11.5
                      Janet      12.4
                      Sandy      12.3
                      Mimi       12.2
I        General Structure
eg. 5       List the names, id of 1A students with no fee
            remission.
                 SELECT name, id, class FROM student ;
                 WHERE class="1A" AND NOT remission
                        name     id     class
        Result          Peter    9801   1A
                        Mary     9802   1A
                        Luke     9810   1A
                        Bobby    9811   1A
                        Aaron    9812   1A
                        Ron      9813   1A
                        Gigi     9824   1A
                        :        :      :
II   Comparison
     expr IN ( value1, value2, value3)
     expr BETWEEN value1 AND value2
     expr LIKE "%_"
II       Comparison
eg. 6       List the students who were born on Wednesday
            or Saturdays.
             SELECT name, class, CDOW(dob) AS bdate ;
             FROM student ;
             WHERE DOW(dob) IN (4,7)
                  name    class   bdate
        Result    Peter   1A      Wednesday
                  Wendy   1B      Wednesday
                  Kevin   1C      Saturday
                  Luke    1A      Wednesday
                  Aaron   1A      Saturday
                  :       :       :
II       Comparison
eg. 7       List the students who were not born in January,
            March, June, September.
             SELECT name, class, dob FROM student ;
             WHERE MONTH(dob) NOT IN (1,3,6,9)
                      name     class   dob
        Result        Wendy    1B      07/09/86
                      Tobe     1B      10/17/86
                      Eric     1C      05/05/87
                      Patty    1C      08/13/87
                      Kevin    1C      11/21/87
                      Bobby    1A      02/16/86
                      Aaron    1A      08/02/86
                      :        :       :
II       Comparison

eg. 8       List the 1A students whose Math test score is
            between 80 and 90 (incl.)
             SELECT name, mtest FROM student ;
             WHERE class="1A" AND ;
             mtest BETWEEN 80 AND 90

        Result        name       mtest
                      Luke       86
                      Aaron      83
                      Gigi       84
II       Comparison
eg. 9       List the students whose names start with "T".

             SELECT name, class FROM student ;
             WHERE name LIKE "T%"

        Result
                  name       class
                  Tobe       1B
                  Teddy      1B
                  Tim        2A
II        Comparison

eg. 10     List the Red house members whose names contain
           "a" as the 2nd letter.

              SELECT name, class, hcode FROM student ;
              WHERE name LIKE "_a%" AND hcode="R"


         Result   name     class    hcode
                  Aaron    1A       R
                  Janet    1B       R
                  Paula    2A       R
III Grouping
    SELECT ...... FROM ...... WHERE condition ;
    GROUP BY groupexpr [HAVING requirement]

    Group functions:
     COUNT( ), SUM( ), AVG( ), MAX( ), MIN( )

     – groupexpr specifies the related rows to be grouped
       as one entry. Usually it is a column.
     – WHERE condition specifies the condition of
       individual rows before the rows are group.
       HAVING requirement specifies the condition
       involving the whole group.
III Grouping
eg. 11   List the number of students of each class.
Group By Class
     class
      1A

1A    1A
      1A
                            COUNT( )

      1B
      1B
      1B                    COUNT( )
1B    1B
      1B
      1B
      1C

1C    1C
      1C
                            COUNT( )

     Student
III Grouping
eg. 11     List the number of students of each class.
             SELECT class, COUNT(*) FROM student ;
             GROUP BY class
                          class     cnt
         Result              1A       10
                              1B      9
                             1C       9
                             2A       8
                              2B      8
                             2C       6
III Grouping
eg. 12   List the average Math test score of each class.
Group By Class
     class
      1A

1A    1A                    AVG( )
      1A
      1B
      1B

1B    1B                    AVG( )
      1B
      1B
      1B
      1C

1C    1C                    AVG( )
      1C
     Student
III Grouping
eg. 12     List the average Math test score of each class.

             SELECT class, AVG(mtest) FROM student ;
             GROUP BY class

                       class   avg_mtest
         Result           1A      85.90
                          1B      70.33
                          1C      37.89
                          2A      89.38
                          2B      53.13
                          2C      32.67
III Grouping
eg. 13     List the number of girls of each district.

             SELECT dcode, COUNT(*) FROM student ;
             WHERE sex="F" GROUP BY dcode


         Result        dcode      cnt
                       HHM              6
                       KWC              1
                       MKK              1
                       SSP              5
                       TST              4
                       YMT              8
III Grouping
eg. 14     List the max. and min. test score of Form 1
           students of each district.
             SELECT MAX(mtest), MIN(mtest), dcode ;
             FROM student ;
             WHERE class LIKE "1_" GROUP BY dcode
                   max_mtest min_mtest dcode
         Result        92        36    HHM
                       91        19    MKK
                       91        31    SSP
                       92        36    TST
                       75        75    TSW
                       88        38    YMT
III Grouping
eg. 15     List the average Math test score of the boys in
           each class. The list should not contain class with
           less than 3 boys.
             SELECT AVG(mtest), class FROM student ;
             WHERE sex="M" GROUP BY class ;
             HAVING COUNT(*) >= 3
         Result          avg_mtest class
                            86.00   1A
                            77.75   1B
                            35.60   1C
                            86.50   2A
                            56.50   2B
IV Display Order
    SELECT ...... FROM ...... WHERE ......
    GROUP BY ..... ;
    ORDER BY colname ASC / DESC
IV Display Order
eg. 16   List the boys of class 1A, order by their names.

     SELECT name, id FROM student ;
     WHERE sex="M" AND class="1A" ORDER BY name

          name     id          Result   name     id
          Peter    9801                 Aaron    9812
          Johnny   9803   ORDER BY      Bobby    9811
          Luke     9810                 Johnny   9803
                            dcode
          Bobby    9811                 Luke     9810
          Aaron    9812                 Peter    9801
          Ron      9813                 Ron      9813
IV Display Order
eg. 17     List the 2A students by their residential district.
             SELECT name, id, class, dcode FROM student ;
             WHERE class="2A" ORDER BY dcode
                     name      id     class   dcode
         Result      Jimmy     9712   2A      HHM
                     Tim       9713   2A      HHM
                     Samual    9714   2A      SHT
                     Rosa      9703   2A      SSP
                     Helen     9702   2A      TST
                     Joseph    9715   2A      TSW
                     Paula     9701   2A      YMT
                     Susan     9704   2A      YMT
IV Display Order
eg. 18     List the number of students of each district
           (in desc. order).
             SELECT COUNT(*) AS cnt, dcode FROM student ;
             GROUP BY dcode ORDER BY cnt DESC
                         cnt        docode
         Result                11   YMT
                               10   HHM
                               10   SSP
                               9    MKK
                               5    TST
                               2    TSW
                               1    KWC
                               1    MMK
                               1    SHT
IV Display Order
eg. 19   List the boys of each house order by the
         classes. (2-level ordering)

          SELECT name, class, hcode FROM student ;
          WHERE sex="M" ORDER BY hcode, class
IV Display Order
 Result
                  name     hcode   class
          Blue
                  Bobby    B       1A
          House   Teddy    B       1B      Order
                  Joseph   B       2A       by
                  Zion     B       2B      class
 Order
                  Leslie   B       2C
  by              Johnny   G       1A
 hcode            Luke     G       1A
                  Kevin    G       1C
          Green
          House   George   G       1C
                  :        :       :
           :
           :
V   Output

    IN T O T A B L E tablen am e             the output table is saved as a
                                             database file in the disk.

    IN T O C U R S O R tem p                 the output is stored in the
                                             w orking m em ory tem porarily.

    T O F IL E filen am e [A D D IT IV E ]   output to a text file.
                                             (additive = append)

    T O P R IN T E R                         send to printer.



    TO SC R EEN                              display on screen .
V
eg. 20
         Output
         List the students in desc. order of their names and
         save the result as a database file name.dbf.
          SELECT * FROM student ;
          ORDER BY name DESC INTO TABLE name.dbf
Result    id     name      dob        sex   class   mtest   hcode   dcode   remission
          9707   Zion      07/29/85   M     2B      51      B       MKK     .F.
          9709   Yvonne    08/24/85   F     2C      10      R       TST     .F.
          9804   Wendy     07/09/86   F     1B      84      B       YMT     .F.
          9819   Vincent   03/15/85   M     1C      29      Y       MKK     .F.
          9805   Tobe      10/17/86   M     1B      88      R       YMT     .F.
          9713   Tim       06/19/85   M     2A      91      R       HHM     .T.
          9816   Teddy     01/30/86   M     1B      64      B       SSP     .F.
          :      :         :          :     :       :       :       :       :
V
eg. 21
          Output
           Print the Red House members by their classes, sex
           and name.
             SELECT class, name, sex FROM student ;
             WHERE hcode="R" ;
             ORDER BY class, sex DESC, name TO PRINTER
                      class   name    sex
         Result       1A      Aaron   M
                      1A      Peter   M
                      1A      Ron     M
                      1B      Tobe    M
                      1B      Janet   F
                      1B      Kitty   F
                      1B      Mimi    F
                      :       :       :
3   Union, Intersection and
    Difference of Tables
            The union of A and B (A B)

                A                       B




       A table containing all the rows from A and B.
3   Union, Intersection and
    Difference of Tables
          The intersection of A and B (A B)

                   A                       B




    A table containing only rows that appear in both A and B.
3   Union, Intersection and
    Difference of Tables
            The difference of A and B (A–B)

                  A                        B




     A table containing rows that appear in A but not in B.
3   The Situation:
    Bridge Club & Chess Club
     Consider the members of the Bridge Club and
     the Chess Club. The two database files have
     the same structure:

     field   type        width   contents
     id      numeric       4     student id number
     name    character    10     name
     sex     character     1     sex: M / F
     class   character     2     class
3   Union, Intersection and
    Difference of Tables
          B rid ge [A ]                        C hess [B ]
          id      nam e    sex   class        id      nam e    sex   class

     1   9812     A aron   M     1A      1   9802     M ary    F     1A
     2   9801     P eter   M     1A      2   9801     P eter   M     1A
     3   9814    K enn y   M      1B     3   9815     E dd y   M      1B
     4   9806     K itty   F      1B     4   9814    K enn y   M      1B
     5   9818   E dm ond   M      1C     5   9817    G eorge   M      1C
          :          :     :      :           :         :      :      :



              Before using SQL, open the two tables:
                   SELECT A
                   USE bridge
                   SELECT B
                   USE chess
3        Union, Intersection and
         Difference of Tables
         SELECT ...... FROM ...... WHERE ...... ;
         UNION ;
         SELECT ...... FROM ...... WHERE ......

eg. 22   The two clubs want to hold a joint party.
         Make a list of all students. (Union)
            SELECT * FROM bridge ;
Result
            UNION ;
            SELECT * FROM chess ;
            ORDER BY class, name INTO TABLE party
3        Union, Intersection and
         Difference of Tables
         SELECT ...... FROM table1 ;
         WHERE col IN ( SELECT col FROM table2 )


eg. 23   Print a list of students who are members of both
         clubs. (Intersection)

Result      SELECT * FROM bridge ;
            WHERE id IN ( SELECT id FROM chess ) ;
            TO PRINTER
3        Union, Intersection and
         Difference of Tables
         SELECT ...... FROM table1 ;
         WHERE col NOT IN ( SELECT col FROM table2 )


eg. 24    Make a list of students who are members of the
          Bridge Club but not Chess Club. (Difference)

Result       SELECT * FROM bridge ;
             WHERE id NOT IN ( SELECT id FROM chess ) ;
             INTO TABLE diff
4   Multiple Tables:
    •   SQL provides a convenient operation to
        retrieve information from multiple tables.

    •   This operation is called join.

    •   The join operation will combine the tables into
        one large table with all possible combinations
        (Math: Cartesian Product), and then it will filter
        the rows of this combined table to yield useful
        information.
4   Multiple Tables:

                       field1   field2
                         A         1
    field1   field2
                         A         2
     A         1
                         A         3
     B         2
                         B         1
               3
                         B         2
                         B         3
4   The Situation:
    Music Lesson
    Each student should learn a musical instrument.
    Two database files: student.dbf & music.dbf
    The common field: student id

    field   type        width contents
    id      numeric       4   student id number
    type    character    10   type of the music instrument

            SELECT A
            USE student
            SELECT B
            USE music
4   Natural Join
A Natural Join is a join operation that joins two
tables by their common column. This operation
is similar to the setting relation of two tables.


SELECT a.comcol, a.col1, b.col2, expr1, expr2 ;
FROM table1 a, table2 b ;
WHERE a.comcol = b.comcol
4
eg. 25
         Natural Join
         Make a list of students and the instruments they
         learn. (Natural Join)
             id     name class                     id   type

                                   Same id       9801
            9801

                                        Join
                  Student                           Music

                            id      name class   type


                            9801
                                   Product
4
eg. 25
         Natural Join
         Make a list of students and the instruments they
         learn. (Natural Join)
          SELECT s.class, s.name, s.id, m.type ;
          FROM student s, music m ;
          WHERE s.id=m.id ORDER BY class, name
                     class   name     id     type
     Result          1A      Aaron    9812   Piano
                     1A      Bobby    9811   Flute
                     1A      Gigi     9824   Recorder
                     1A      Jill     9820   Piano
                     1A      Johnny   9803   Violin
                     1A      Luke     9810   Piano
                     1A      Mary     9802   Flute
                     :       :        :      :
4        Natural Join
eg. 26   Find the number of students learning piano in
         each class.


                    Three Parts :
     (1) Natural Join.
     (2) Condition: m.type="Piano"
     (3) GROUP BY class
4        Natural Join
eg. 26




  Student   Join              Condition        Group By
                             m.type= "Piano"     class
                   Product

   Music
4        Natural Join
eg. 26   Find the number of students learning piano in
         each class.
          SELECT s.class, COUNT(*) ;
          FROM student s, music m ;
          WHERE s.id=m.id AND m.type="Piano" ;
          GROUP BY class ORDER BY class
                     class   cnt
     Result          1A      4
                     1B      2
                     1C      1
4   Outer Join
An Outer Join is a join operation that includes
rows that have a match, plus rows that do not
have a match in the other table.
4        Outer Join
eg. 27   List the students who have not yet chosen an
         instrument. (No match)

             id     name class              id   type


            9801
                                 No match

                  Student                    Music
4        Outer Join
eg. 27   List the students who have not yet chosen an
         instrument. (No match)
          SELECT class, name, id FROM student ;
          WHERE id NOT IN ( SELECT id FROM music ) ;
          ORDER BY class, name
                    class   name     id
     Result         1A      Mandy    9821
                    1B      Kenny    9814
                    1B      Tobe     9805
                    1C      Edmond   9818
                    1C      George   9817
                    :       :        :
4        Outer Join
eg. 28   Make a checking list of students and the
         instruments they learn. The list should also
         contain the students without an instrument.
         (Outer Join)
4        Outer Join
eg. 28


                  Natural Join


                                 Outer Join


                  No Match
4        Outer Join
eg. 28    SELECT s.class, s.name, s.id, m.type ;
          FROM student s, music m ;
          WHERE s.id=m.id ;
          UNION ;
          SELECT class, name, id, "" ;
          FROM student ;
          WHERE id NOT IN ( SELECT id FROM music ) ;
          ORDER BY 1, 2
4
class
        Outer Join
        name      id     type
                                    class   name     id     type
1A      Aaron     9812   Piano
1A      Bobby     9811   Flute      1A      Aaron    9812   Piano
1A      Gigi      9824   Recorder   1A      Bobby    9811   Flute
1A      Jill      9820   Piano      1A      Gigi     9824   Recorder
1A      Johnny    9803   Violin     1A      Jill     9820   Piano
1A      Luke      9810   Piano      1A      Johnny   9803   Violin
1A      Mary      9802   Flute      1A      Luke     9810   Piano
:       :         :      :          1A      Mandy    9821
                 Natural Join       1A      Mary     9802   Flute
                                    1A      Peter    9801   Piano
class   name      id
1A      Mandy     9821
                                    1A      Ron      9813   Guitar     empty
                                    1B      Eddy     9815   Piano
1B      Kenny     9814
1B      Tobe      9805              1B      Janet    9822   Guitar
1C      Edmond    9818              1B      Kenny    9814
1C      George    9817              1B      Kitty    9806   Recorder
:       :         :                 :       :        :      :
                   No Match                                  Outer Join

Mais conteúdo relacionado

Mais procurados (20)

SQL
SQLSQL
SQL
 
Chapter 1 introduction to sql server
Chapter 1 introduction to sql serverChapter 1 introduction to sql server
Chapter 1 introduction to sql server
 
Using the set operators
Using the set operatorsUsing the set operators
Using the set operators
 
SQL select statement and functions
SQL select statement and functionsSQL select statement and functions
SQL select statement and functions
 
PLSQL
PLSQLPLSQL
PLSQL
 
5. stored procedure and functions
5. stored procedure and functions5. stored procedure and functions
5. stored procedure and functions
 
Sql commands
Sql commandsSql commands
Sql commands
 
PL/SQL Introduction and Concepts
PL/SQL Introduction and Concepts PL/SQL Introduction and Concepts
PL/SQL Introduction and Concepts
 
Sql select
Sql select Sql select
Sql select
 
1. SQL Basics - Introduction
1. SQL Basics - Introduction1. SQL Basics - Introduction
1. SQL Basics - Introduction
 
Advanced Sql Training
Advanced Sql TrainingAdvanced Sql Training
Advanced Sql Training
 
SQL Views
SQL ViewsSQL Views
SQL Views
 
Introduction to structured query language (sql)
Introduction to structured query language (sql)Introduction to structured query language (sql)
Introduction to structured query language (sql)
 
Sql basics and DDL statements
Sql basics and DDL statementsSql basics and DDL statements
Sql basics and DDL statements
 
SQL(DDL & DML)
SQL(DDL & DML)SQL(DDL & DML)
SQL(DDL & DML)
 
PL/SQL TRIGGERS
PL/SQL TRIGGERSPL/SQL TRIGGERS
PL/SQL TRIGGERS
 
Database Triggers
Database TriggersDatabase Triggers
Database Triggers
 
Introduction to-sql
Introduction to-sqlIntroduction to-sql
Introduction to-sql
 
Introduction to SQL
Introduction to SQLIntroduction to SQL
Introduction to SQL
 
Oracle sql material
Oracle sql materialOracle sql material
Oracle sql material
 

Último

ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxiammrhaywood
 
Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptx
Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptxMusic 9 - 4th quarter - Vocal Music of the Romantic Period.pptx
Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptxleah joy valeriano
 
Integumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.pptIntegumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.pptshraddhaparab530
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)lakshayb543
 
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxCarlos105
 
4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptxmary850239
 
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxQ4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxlancelewisportillo
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxHumphrey A Beña
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...Nguyen Thanh Tu Collection
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptxmary850239
 
Full Stack Web Development Course for Beginners
Full Stack Web Development Course  for BeginnersFull Stack Web Development Course  for Beginners
Full Stack Web Development Course for BeginnersSabitha Banu
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfTechSoup
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYKayeClaireEstoconing
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxAshokKarra1
 
Concurrency Control in Database Management system
Concurrency Control in Database Management systemConcurrency Control in Database Management system
Concurrency Control in Database Management systemChristalin Nelson
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...Postal Advocate Inc.
 

Último (20)

ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
 
Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptx
Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptxMusic 9 - 4th quarter - Vocal Music of the Romantic Period.pptx
Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptx
 
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptxLEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
 
Integumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.pptIntegumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.ppt
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
 
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
 
4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx
 
Raw materials used in Herbal Cosmetics.pptx
Raw materials used in Herbal Cosmetics.pptxRaw materials used in Herbal Cosmetics.pptx
Raw materials used in Herbal Cosmetics.pptx
 
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxQ4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx
 
Full Stack Web Development Course for Beginners
Full Stack Web Development Course  for BeginnersFull Stack Web Development Course  for Beginners
Full Stack Web Development Course for Beginners
 
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptxFINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptx
 
Concurrency Control in Database Management system
Concurrency Control in Database Management systemConcurrency Control in Database Management system
Concurrency Control in Database Management system
 
YOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptx
YOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptxYOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptx
YOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptx
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
 

Sql

  • 2. 1 Introduction to SQL What is SQL? – When a user wants to get some information from a database file, he can issue a query. – A query is a user–request to retrieve data or information with a certain condition. – SQL is a query language that allows user to specify the conditions. (instead of algorithms)
  • 3. 1 Introduction to SQL Concept of SQL – The user specifies a certain condition. – The program will go through all the records in the database file and select those records that satisfy the condition.(searching). – Statistical information of the data. – The result of the query will then be stored in form of a table.
  • 4. 2 Basic structure of an SQL query G e n e ra l S E L E C T , A L L / D IS T IN C T , *, S tru c tu re A S, FRO M , W H ERE C o m p a ris o n IN , B E T W E E N , L IK E "% _" G ro u p in g G R O U P B Y , H A V IN G , C O U N T ( ), S U M ( ), A V G ( ), M A X ( ), M IN ( ) D is p la y O rd e r O RD ER BY , A SC / D ESC L o g ic a l AND, OR, NOT O p e ra to rs O u tp u t IN T O T A B L E / C U R S O R T O F IL E [A D D IT IV E ], T O P R IN T E R , T O S C R E E N U n io n U N IO N
  • 5. 2 The Situation: Student Particulars field type width contents id numeric 4 student id number name character 10 name dob date 8 date of birth sex character 1 sex: M / F class character 2 class hcode character 1 house code: R, Y, B, G dcode character 3 district code remission logical 1 fee remission mtest numeric 2 Math test score
  • 6. I General Structure SELECT ...... FROM ...... WHERE ...... SELECT [ALL / DISTINCT] expr1 [AS col1], expr2 [AS col2] ; FROM tablename WHERE condition
  • 7. I General Structure SELECT [ALL / DISTINCT] expr1 [AS col1], expr2 [AS col2] ; FROM tablename WHERE condition – The query will select rows from the source tablename and output the result in table form. – Expressions expr1, expr2 can be : • (1) a column, or • (2) an expression of functions and fields. – And col1, col2 are their corresponding column names in the output table.
  • 8. I General Structure SELECT [ALL / DISTINCT] expr1 [AS col1], expr2 [AS col2] ; FROM tablename WHERE condition – DISTINCT will eliminate duplication in the output while ALL will keep all duplicated rows. – condition can be : • (1) an inequality, or • (2) a string comparison • using logical operators AND, OR, NOT.
  • 9. I General Structure Before using SQL, open the student file: USE student eg. 1 List all the student records. SELECT * FROM student id name dob sex class mtest hcode dcode remission Result 9801 Peter 06/04/86 M 1A 70 R SSP .F. 9802 Mary 01/10/86 F 1A 92 Y HHM .F. 9803 Johnny 03/16/86 M 1A 91 G SSP .T. 9804 Wendy 07/09/86 F 1B 84 B YMT .F. 9805 Tobe 10/17/86 M 1B 88 R YMT .F. : : : : : : : : :
  • 10. I General Structure eg. 2 List the names and house code of 1A students. SELECT name, hcode, class FROM student ; WHERE class="1A" Class Class 1A  1A 1A class="1A"  1A 1A  1A 1B  1B 1B  1B : :
  • 11. I General Structure eg. 2 List the names and house code of 1A students. Result name hcode class Peter R 1A Mary Y 1A Johnny G 1A Luke G 1A Bobby B 1A Aaron R 1A : : :
  • 12. I General Structure eg. 3 List the residential district of the Red House members. SELECT DISTINCT dcode FROM student ; WHERE hcode="R" dcode Result HHM KWC MKK SSP TST YMT
  • 13. I eg. 4 General Structure List the names and ages (1 d.p.) of 1B girls. 1B Girls ?
  • 14. I eg. 4 General Structure List the names and ages (1 d.p.) of 1B girls. Condition for "1B Girls": 1) class = "1B" 2) sex = "F" 3) Both ( AND operator)
  • 15. I eg. 4 General Structure List the names and ages (1 d.p.) of 1B girls. What is "age"?
  • 16. I eg. 4 General Structure List the names and ages (1 d.p.) of 1B girls. Functions: # days : DATE( ) – dob # years :(DATE( ) – dob) / 365 1 d.p.: ROUND(__ , 1)
  • 17. I eg. 4 General Structure List the names and ages (1 d.p.) of 1B girls. SELECT name, ROUND((DATE( )-dob)/365,1) AS age ; FROM student WHERE class="1B" AND sex="F" Result name age Wendy 12.1 Kitty 11.5 Janet 12.4 Sandy 12.3 Mimi 12.2
  • 18. I General Structure eg. 5 List the names, id of 1A students with no fee remission. SELECT name, id, class FROM student ; WHERE class="1A" AND NOT remission name id class Result Peter 9801 1A Mary 9802 1A Luke 9810 1A Bobby 9811 1A Aaron 9812 1A Ron 9813 1A Gigi 9824 1A : : :
  • 19. II Comparison expr IN ( value1, value2, value3) expr BETWEEN value1 AND value2 expr LIKE "%_"
  • 20. II Comparison eg. 6 List the students who were born on Wednesday or Saturdays. SELECT name, class, CDOW(dob) AS bdate ; FROM student ; WHERE DOW(dob) IN (4,7) name class bdate Result Peter 1A Wednesday Wendy 1B Wednesday Kevin 1C Saturday Luke 1A Wednesday Aaron 1A Saturday : : :
  • 21. II Comparison eg. 7 List the students who were not born in January, March, June, September. SELECT name, class, dob FROM student ; WHERE MONTH(dob) NOT IN (1,3,6,9) name class dob Result Wendy 1B 07/09/86 Tobe 1B 10/17/86 Eric 1C 05/05/87 Patty 1C 08/13/87 Kevin 1C 11/21/87 Bobby 1A 02/16/86 Aaron 1A 08/02/86 : : :
  • 22. II Comparison eg. 8 List the 1A students whose Math test score is between 80 and 90 (incl.) SELECT name, mtest FROM student ; WHERE class="1A" AND ; mtest BETWEEN 80 AND 90 Result name mtest Luke 86 Aaron 83 Gigi 84
  • 23. II Comparison eg. 9 List the students whose names start with "T". SELECT name, class FROM student ; WHERE name LIKE "T%" Result name class Tobe 1B Teddy 1B Tim 2A
  • 24. II Comparison eg. 10 List the Red house members whose names contain "a" as the 2nd letter. SELECT name, class, hcode FROM student ; WHERE name LIKE "_a%" AND hcode="R" Result name class hcode Aaron 1A R Janet 1B R Paula 2A R
  • 25. III Grouping SELECT ...... FROM ...... WHERE condition ; GROUP BY groupexpr [HAVING requirement] Group functions: COUNT( ), SUM( ), AVG( ), MAX( ), MIN( ) – groupexpr specifies the related rows to be grouped as one entry. Usually it is a column. – WHERE condition specifies the condition of individual rows before the rows are group. HAVING requirement specifies the condition involving the whole group.
  • 26. III Grouping eg. 11 List the number of students of each class.
  • 27. Group By Class class 1A 1A 1A 1A COUNT( ) 1B 1B 1B COUNT( ) 1B 1B 1B 1B 1C 1C 1C 1C COUNT( ) Student
  • 28. III Grouping eg. 11 List the number of students of each class. SELECT class, COUNT(*) FROM student ; GROUP BY class class cnt Result 1A 10 1B 9 1C 9 2A 8 2B 8 2C 6
  • 29. III Grouping eg. 12 List the average Math test score of each class.
  • 30. Group By Class class 1A 1A 1A AVG( ) 1A 1B 1B 1B 1B AVG( ) 1B 1B 1B 1C 1C 1C AVG( ) 1C Student
  • 31. III Grouping eg. 12 List the average Math test score of each class. SELECT class, AVG(mtest) FROM student ; GROUP BY class class avg_mtest Result 1A 85.90 1B 70.33 1C 37.89 2A 89.38 2B 53.13 2C 32.67
  • 32. III Grouping eg. 13 List the number of girls of each district. SELECT dcode, COUNT(*) FROM student ; WHERE sex="F" GROUP BY dcode Result dcode cnt HHM 6 KWC 1 MKK 1 SSP 5 TST 4 YMT 8
  • 33. III Grouping eg. 14 List the max. and min. test score of Form 1 students of each district. SELECT MAX(mtest), MIN(mtest), dcode ; FROM student ; WHERE class LIKE "1_" GROUP BY dcode max_mtest min_mtest dcode Result 92 36 HHM 91 19 MKK 91 31 SSP 92 36 TST 75 75 TSW 88 38 YMT
  • 34. III Grouping eg. 15 List the average Math test score of the boys in each class. The list should not contain class with less than 3 boys. SELECT AVG(mtest), class FROM student ; WHERE sex="M" GROUP BY class ; HAVING COUNT(*) >= 3 Result avg_mtest class 86.00 1A 77.75 1B 35.60 1C 86.50 2A 56.50 2B
  • 35. IV Display Order SELECT ...... FROM ...... WHERE ...... GROUP BY ..... ; ORDER BY colname ASC / DESC
  • 36. IV Display Order eg. 16 List the boys of class 1A, order by their names. SELECT name, id FROM student ; WHERE sex="M" AND class="1A" ORDER BY name name id Result name id Peter 9801 Aaron 9812 Johnny 9803 ORDER BY Bobby 9811 Luke 9810 Johnny 9803 dcode Bobby 9811 Luke 9810 Aaron 9812 Peter 9801 Ron 9813 Ron 9813
  • 37. IV Display Order eg. 17 List the 2A students by their residential district. SELECT name, id, class, dcode FROM student ; WHERE class="2A" ORDER BY dcode name id class dcode Result Jimmy 9712 2A HHM Tim 9713 2A HHM Samual 9714 2A SHT Rosa 9703 2A SSP Helen 9702 2A TST Joseph 9715 2A TSW Paula 9701 2A YMT Susan 9704 2A YMT
  • 38. IV Display Order eg. 18 List the number of students of each district (in desc. order). SELECT COUNT(*) AS cnt, dcode FROM student ; GROUP BY dcode ORDER BY cnt DESC cnt docode Result 11 YMT 10 HHM 10 SSP 9 MKK 5 TST 2 TSW 1 KWC 1 MMK 1 SHT
  • 39. IV Display Order eg. 19 List the boys of each house order by the classes. (2-level ordering) SELECT name, class, hcode FROM student ; WHERE sex="M" ORDER BY hcode, class
  • 40. IV Display Order Result name hcode class Blue Bobby B 1A House Teddy B 1B Order Joseph B 2A by Zion B 2B class Order Leslie B 2C by Johnny G 1A hcode Luke G 1A Kevin G 1C Green House George G 1C : : : : :
  • 41. V Output IN T O T A B L E tablen am e the output table is saved as a database file in the disk. IN T O C U R S O R tem p the output is stored in the w orking m em ory tem porarily. T O F IL E filen am e [A D D IT IV E ] output to a text file. (additive = append) T O P R IN T E R send to printer. TO SC R EEN display on screen .
  • 42. V eg. 20 Output List the students in desc. order of their names and save the result as a database file name.dbf. SELECT * FROM student ; ORDER BY name DESC INTO TABLE name.dbf Result id name dob sex class mtest hcode dcode remission 9707 Zion 07/29/85 M 2B 51 B MKK .F. 9709 Yvonne 08/24/85 F 2C 10 R TST .F. 9804 Wendy 07/09/86 F 1B 84 B YMT .F. 9819 Vincent 03/15/85 M 1C 29 Y MKK .F. 9805 Tobe 10/17/86 M 1B 88 R YMT .F. 9713 Tim 06/19/85 M 2A 91 R HHM .T. 9816 Teddy 01/30/86 M 1B 64 B SSP .F. : : : : : : : : :
  • 43. V eg. 21 Output Print the Red House members by their classes, sex and name. SELECT class, name, sex FROM student ; WHERE hcode="R" ; ORDER BY class, sex DESC, name TO PRINTER class name sex Result 1A Aaron M 1A Peter M 1A Ron M 1B Tobe M 1B Janet F 1B Kitty F 1B Mimi F : : :
  • 44. 3 Union, Intersection and Difference of Tables The union of A and B (A B) A B A table containing all the rows from A and B.
  • 45. 3 Union, Intersection and Difference of Tables The intersection of A and B (A B) A B A table containing only rows that appear in both A and B.
  • 46. 3 Union, Intersection and Difference of Tables The difference of A and B (A–B) A B A table containing rows that appear in A but not in B.
  • 47. 3 The Situation: Bridge Club & Chess Club Consider the members of the Bridge Club and the Chess Club. The two database files have the same structure: field type width contents id numeric 4 student id number name character 10 name sex character 1 sex: M / F class character 2 class
  • 48. 3 Union, Intersection and Difference of Tables B rid ge [A ] C hess [B ] id nam e sex class id nam e sex class 1 9812 A aron M 1A 1 9802 M ary F 1A 2 9801 P eter M 1A 2 9801 P eter M 1A 3 9814 K enn y M 1B 3 9815 E dd y M 1B 4 9806 K itty F 1B 4 9814 K enn y M 1B 5 9818 E dm ond M 1C 5 9817 G eorge M 1C : : : : : : : : Before using SQL, open the two tables: SELECT A USE bridge SELECT B USE chess
  • 49. 3 Union, Intersection and Difference of Tables SELECT ...... FROM ...... WHERE ...... ; UNION ; SELECT ...... FROM ...... WHERE ...... eg. 22 The two clubs want to hold a joint party. Make a list of all students. (Union) SELECT * FROM bridge ; Result UNION ; SELECT * FROM chess ; ORDER BY class, name INTO TABLE party
  • 50. 3 Union, Intersection and Difference of Tables SELECT ...... FROM table1 ; WHERE col IN ( SELECT col FROM table2 ) eg. 23 Print a list of students who are members of both clubs. (Intersection) Result SELECT * FROM bridge ; WHERE id IN ( SELECT id FROM chess ) ; TO PRINTER
  • 51. 3 Union, Intersection and Difference of Tables SELECT ...... FROM table1 ; WHERE col NOT IN ( SELECT col FROM table2 ) eg. 24 Make a list of students who are members of the Bridge Club but not Chess Club. (Difference) Result SELECT * FROM bridge ; WHERE id NOT IN ( SELECT id FROM chess ) ; INTO TABLE diff
  • 52. 4 Multiple Tables: • SQL provides a convenient operation to retrieve information from multiple tables. • This operation is called join. • The join operation will combine the tables into one large table with all possible combinations (Math: Cartesian Product), and then it will filter the rows of this combined table to yield useful information.
  • 53. 4 Multiple Tables: field1 field2 A 1 field1 field2 A 2 A 1 A 3 B 2 B 1 3 B 2 B 3
  • 54. 4 The Situation: Music Lesson Each student should learn a musical instrument. Two database files: student.dbf & music.dbf The common field: student id field type width contents id numeric 4 student id number type character 10 type of the music instrument SELECT A USE student SELECT B USE music
  • 55. 4 Natural Join A Natural Join is a join operation that joins two tables by their common column. This operation is similar to the setting relation of two tables. SELECT a.comcol, a.col1, b.col2, expr1, expr2 ; FROM table1 a, table2 b ; WHERE a.comcol = b.comcol
  • 56. 4 eg. 25 Natural Join Make a list of students and the instruments they learn. (Natural Join) id name class id type Same id 9801 9801 Join Student Music id name class type 9801 Product
  • 57. 4 eg. 25 Natural Join Make a list of students and the instruments they learn. (Natural Join) SELECT s.class, s.name, s.id, m.type ; FROM student s, music m ; WHERE s.id=m.id ORDER BY class, name class name id type Result 1A Aaron 9812 Piano 1A Bobby 9811 Flute 1A Gigi 9824 Recorder 1A Jill 9820 Piano 1A Johnny 9803 Violin 1A Luke 9810 Piano 1A Mary 9802 Flute : : : :
  • 58. 4 Natural Join eg. 26 Find the number of students learning piano in each class. Three Parts : (1) Natural Join. (2) Condition: m.type="Piano" (3) GROUP BY class
  • 59. 4 Natural Join eg. 26 Student Join Condition Group By m.type= "Piano" class Product Music
  • 60. 4 Natural Join eg. 26 Find the number of students learning piano in each class. SELECT s.class, COUNT(*) ; FROM student s, music m ; WHERE s.id=m.id AND m.type="Piano" ; GROUP BY class ORDER BY class class cnt Result 1A 4 1B 2 1C 1
  • 61. 4 Outer Join An Outer Join is a join operation that includes rows that have a match, plus rows that do not have a match in the other table.
  • 62. 4 Outer Join eg. 27 List the students who have not yet chosen an instrument. (No match) id name class id type 9801 No match Student Music
  • 63. 4 Outer Join eg. 27 List the students who have not yet chosen an instrument. (No match) SELECT class, name, id FROM student ; WHERE id NOT IN ( SELECT id FROM music ) ; ORDER BY class, name class name id Result 1A Mandy 9821 1B Kenny 9814 1B Tobe 9805 1C Edmond 9818 1C George 9817 : : :
  • 64. 4 Outer Join eg. 28 Make a checking list of students and the instruments they learn. The list should also contain the students without an instrument. (Outer Join)
  • 65. 4 Outer Join eg. 28 Natural Join Outer Join No Match
  • 66. 4 Outer Join eg. 28 SELECT s.class, s.name, s.id, m.type ; FROM student s, music m ; WHERE s.id=m.id ; UNION ; SELECT class, name, id, "" ; FROM student ; WHERE id NOT IN ( SELECT id FROM music ) ; ORDER BY 1, 2
  • 67. 4 class Outer Join name id type class name id type 1A Aaron 9812 Piano 1A Bobby 9811 Flute 1A Aaron 9812 Piano 1A Gigi 9824 Recorder 1A Bobby 9811 Flute 1A Jill 9820 Piano 1A Gigi 9824 Recorder 1A Johnny 9803 Violin 1A Jill 9820 Piano 1A Luke 9810 Piano 1A Johnny 9803 Violin 1A Mary 9802 Flute 1A Luke 9810 Piano : : : : 1A Mandy 9821 Natural Join 1A Mary 9802 Flute 1A Peter 9801 Piano class name id 1A Mandy 9821 1A Ron 9813 Guitar empty 1B Eddy 9815 Piano 1B Kenny 9814 1B Tobe 9805 1B Janet 9822 Guitar 1C Edmond 9818 1B Kenny 9814 1C George 9817 1B Kitty 9806 Recorder : : : : : : : No Match Outer Join