5.0_sql_part_1

Upload: catherine-lee-cheau-yih

Post on 02-Jun-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/10/2019 5.0_SQL_PART_1

    1/45

    1

    STRUCTURED

    QUERY

    LANGUAGE (SQL)

  • 8/10/2019 5.0_SQL_PART_1

    2/45

    2

    Database Language

    Allow user to:

    create the database and relation structures

    perform basic data management tasks, such as theinsertion, modification, and deletion of data from therelations

    perform both simple and complex queries

    perform the above tasks with minimal user effort

    command structure and syntax must be easy tolearn

    must be portable; which conform to some standard

    SQL

  • 8/10/2019 5.0_SQL_PART_1

    3/45

    3

    SQL

    is an example of a transform-oriented

    language, or language designed to use

    relations to transform inputs into requiredoutputs

    has 2 major components:

    DDL: for defining the d/b structure andcontrolling access to data

    DML: for retrieving and updating data

  • 8/10/2019 5.0_SQL_PART_1

    4/45

    4

    SQL

    It is a non-procedural language: you

    specify what information you require,

    rather than how to get it.

    Free-format

  • 8/10/2019 5.0_SQL_PART_1

    5/45

    5

    SQL

    Consists of standard English words: CREATE TABLEStaff(staffNo VARCHAR(5),

    lName VARCHAR(15),

    salary DECIMAL(7,2));

    INSERT INTO Staff VALUES ('SG16', 'Brown',8300);

    SELECTstaffNo, lName, salary

    FROM Staff

    WHERE salary > 10000;

  • 8/10/2019 5.0_SQL_PART_1

    6/45

    6

    SQL

    Can be used by range of users including

    DBAs, management, application

    developers, and other types of end users.

    An ISO standard now exists for SQL,

    making it both the formal and de facto

    standard language for relational databases.

  • 8/10/2019 5.0_SQL_PART_1

    7/45

    7

    Writing SQL Commands

    SQL statement consists of reserved wordsand user-def ined words.

    Reserved words are a fixed part of SQL andmust be spelt exactly as required andcannot be split across lines.

    User-defined words are made up by user

    and represent names of various databaseobjects such as relations, columns, views.

  • 8/10/2019 5.0_SQL_PART_1

    8/45

    8

    Writing SQL Commands

    Most components of an SQL statement are caseinsensitive, except for literal character data.

    More readable with indentation and lineation:

    Each clause should begin on a new line.Start of a clause should line up with start of

    other clauses.

    If clause has several parts, should each appear

    on a separate line and be indented under startof clause.

  • 8/10/2019 5.0_SQL_PART_1

    9/45

    9

    Literals

    Literals are constants used in SQL

    statements.

    All non-numeric literals must be enclosed

    in single quotes (e.g. London).

    All numeric literals must not be enclosed in

    quotes (e.g. 650.00).

  • 8/10/2019 5.0_SQL_PART_1

    10/45

    10

    Writing SQL Commands

    Use extended form of BNF notation: Upper-case letters represent reserved words.

    Lower-case letters represent user-defined words.

    a vertical bar (|) indicates a choice amongalternatives.

    Curly braces indicate a requi red element.

    Square brackets indicate an optional element.

    an ellipsis () indicates optional repeti tion (0 ormore).

  • 8/10/2019 5.0_SQL_PART_1

    11/45

    SQL: Data Defini tion

    ISO SQL Data types

    Integrity Enhancement Feature

    Data Definition

    Views

    Transactions Discretionary Access Control

  • 8/10/2019 5.0_SQL_PART_1

    12/45

    I SO SQL Data Types

  • 8/10/2019 5.0_SQL_PART_1

    13/45

    I ntegr i ty Enhancement Feature

    facilities provided by SQL to protect the d/b frombecoming inconsistent.

    Consider five types of integrity constraints:

    Required data.

    Domain constraints.

    Entity integrity.

    Referential integrity.

    Enterprise constraints.

    These constraints can be defined in the CREATE andALTER TABLE statements (as we will see shortly).

  • 8/10/2019 5.0_SQL_PART_1

    14/45

    I ntegr ity Enhancement Feature -

    Required Data

    position VARCHAR(10) NOT NULL

    specify that column position cannot be null

  • 8/10/2019 5.0_SQL_PART_1

    15/45

    I ntegr i ty Enhancement Feature -

    Domain Constraints

    (a) CHECK

    sex CHAR NOT NULL

    CHECK (sex IN ('M', 'F'))

    (b) CREATE DOMAIN

    CREATE DOMAIN DomainName [AS] dataType

    [DEFAULT defaultOption]

    [CHECK (searchCondition)]

    For example:

    CREATE DOMAIN SexType AS CHAR

    CHECK (VALUE IN ('M', 'F'));

    sex SexType NOT NULL;

  • 8/10/2019 5.0_SQL_PART_1

    16/45

    I ntegr ity Enhancement Feature -

    Domain Constraints

    searchConditioncan involve a table lookup:

    CREATE DOMAIN BranchNo AS CHAR(4)

    CHECK (VALUE IN (SELECT branchNo

    FROM Branch));

    Domains can be removed using DROP DOMAIN:

    DROP DOMAIN DomainName

    [RESTRICT | CASCADE]

  • 8/10/2019 5.0_SQL_PART_1

    17/45

    I ntegr i ty Enhancement Feature -

    Entity I ntegr ity

    Primary key of a table must contain a unique,non-null value for each row.

    ISO standard supports PRIMARY KEY clause inCREATE and ALTER TABLE statements:

    PRIMARY KEY(staffNo)

    PRIMARY KEY(clientNo, propertyNo)

    Can only have one PRIMARY KEY clause pertable. Can still ensure uniqueness for alternatekeys using UNIQUE:

    UNIQUE(telNo)

  • 8/10/2019 5.0_SQL_PART_1

    18/45

    I ntegr ity Enhancement Feature -

    Referential I ntegr ity

    Foreign Key (FK) is column or set of columns thatlinks each row in child table containing the FK to

    the row of parent table containing matching PK. Referential integrity means that, if FK contains a

    value, that value must refer to existing row inparent table.

    ISO standard supports definition of FKs withFOREIGN KEY clause in CREATE and ALTERTABLE:

    FOREIGN KEY(branchNo) REFERENCES Branch

    I t i t E h t F t

  • 8/10/2019 5.0_SQL_PART_1

    19/45

    I ntegr ity Enhancement Feature -

    Referential I ntegr ity

    Any INSERT/UPDATE that attempts to createFK value in child table without matchingcandidate key value in parent is rejected.

    Action taken that attempts to update/delete acandidate key value in parent table with matchingrows in child is dependent on referential actionspecified using ON UPDATE and ON DELETEsubclauses:

    CASCADE - SET NULL,

    SET DEFAULT - NO ACTION

  • 8/10/2019 5.0_SQL_PART_1

    20/45

    I ntegr i ty Enhancement Feature -

    Referential I ntegr ity

    CASCADE: Delete row from parent and delete matchingrows in child, and so on in cascading manner.

    SET NULL: Delete row from parent and set FK column(s) inchild to NULL. Only valid if FK columns are NOT NULL.

    SET DEFAULT: Delete row from parent and set each

    component of FK in child to specified default. Only valid ifDEFAULT specified for FK columns

    NO ACTION: Reject delete from parent. Default.

  • 8/10/2019 5.0_SQL_PART_1

    21/45

    I ntegr i ty Enhancement Feature -

    Referential I ntegr ity

    FOREIGN KEY (staffNo) REFERENCES

    Staff ON DELETE SET NULL

    FOREIGN KEY (ownerNo) REFERENCES

    Owner ON UPDATE CASCADE

  • 8/10/2019 5.0_SQL_PART_1

    22/45

    I ntegr i ty Enhancement Feature

    General/Enterpr ise Constraints

    The ISO standard allows enterprise constraints to

    be specified using CHECK/UNIQUE in CREATE

    and ALTER TABLE and also the CREATE

    ASSERTION statement with following format:

    CREATE ASSERTION AssertionName

    CHECK (searchCondition)

    which is very similar to the CHECK clause.

  • 8/10/2019 5.0_SQL_PART_1

    23/45

    I ntegr i ty Enhancement Feature

    General/Enterpr ise Constraints

    CREATE ASSERTION StaffNotHandlingTooMuch

    CHECK (NOT EXISTS (SELECT staffNo

    FROM PropertyForRent

    GROUP BY staffNo

    HAVING COUNT(*) > 100))

  • 8/10/2019 5.0_SQL_PART_1

    24/45

    Data Defini tion

    SQL DDL allows database objects such as schemas,domains, tables, views, and indexes to be createdand destroyed.

    Main SQL DDL statements are:CREATE SCHEMA DROP SCHEMA

    CREATE/ALTER DOMAIN DROP DOMAIN

    CREATE/ALTER TABLE DROP TABLE

    CREATE VIEW DROP VIEW

    Many DBMSs also provide:

    CREATE INDEX DROP INDEX

  • 8/10/2019 5.0_SQL_PART_1

    25/45

    Data Defini tion

    Relations and other database objects exist in anenvironment.

    Each environment contains one or more catalogs,

    and each catalog consists of set of schemas. Schema is named collection of related database

    objects.

    Objects in a schema can be tables, views, domains,

    assertions, collations, translations, and charactersets. All have same owner.

  • 8/10/2019 5.0_SQL_PART_1

    26/45

    Data Defini tion - CREATE

    SCHEMA

    CREATE SCHEMA [Name |

    AUTHORIZATION CreatorId ]

    DROP SCHEMA Name [RESTRICT | CASCADE ]

    With RESTRICT (default), schema must beempty or operation fails.

    With CASCADE, operation cascades to drop

    all objects associated with schema in order

    defined above. If any of these operations fail,

    DROP SCHEMA fails.

  • 8/10/2019 5.0_SQL_PART_1

    27/45

    Data Defini tion - CREATE

    TABLE

    CREATE TABLE TableName

    {(colName dataType [NOT NULL] [UNIQUE]

    [DEFAULT defaultOption]

    [CHECK searchCondition] [,...]}

    [PRIMARY KEY (listOfColumns),]

    {[UNIQUE (listOfColumns),] [,]}

    {[FOREIGN KEY (listOfFKColumns)

    REFERENCES ParentTableName [(listOfCKColumns)],

    [ON UPDATE referentialAction]

    [ON DELETE referentialAction ]] [,]}

    {[CHECK searchCondition)] [,] })

  • 8/10/2019 5.0_SQL_PART_1

    28/45

    Data Defini tion - CREATE

    TABLE

    Creates a table with one or more columns of thespecified dataType.

    With NOT NULL, system rejects any attempt to

    insert a null in the column. Can specify a DEFAULT value for the column.

    Primary keys should always be specified as NOTNULL.

    FOREIGN KEY clause specifies FK along withthe referential action

  • 8/10/2019 5.0_SQL_PART_1

    29/45

    Example 6.1 - CREATE TABLE

    CREATE DOMAIN OwnerNumber AS VARCHAR(5)CHECK (VALUE IN (SELECT ownerNo FROM Owner));

    CREATE DOMAIN StaffNumber AS VARCHAR(5)

    CHECK (VALUE IN (SELECT staffNo FROM Staff));

    CREATE DOMAIN PNumber AS VARCHAR(5);

    CREATE DOMAIN PRooms AS SMALLINT;

    CHECK(VALUE BETWEEN 1 AND 15);

    CREATE DOMAIN PRent AS DECIMAL(6,2)

    CHECK(VALUE BETWEEN 0 AND 9999.99);

  • 8/10/2019 5.0_SQL_PART_1

    30/45

    Example 6.1 - CREATE TABLE

    CREATE TABLE PropertyForRent (

    propertyNo PNumber NOT NULL,

    rooms PRooms NOT NULL DEFAULT 4,

    rent PRent NOT NULL, DEFAULT 600,

    ownerNo OwnerNumber NOT NULL,

    staffNo StaffNumber

    Constraint StaffNotHandlingTooMuch,

    branchNo BranchNumber NOT NULL,

    PRIMARY KEY (propertyNo),FOREIGN KEY (staffNo) REFERENCES Staff

    ON DELETE SET NULL ON UPDATE CASCADE);

  • 8/10/2019 5.0_SQL_PART_1

    31/45

    Data Defini tion - ALTER TABLE

    Add a new column to a table.

    Drop a column from a table.

    Add a new table constraint. Drop a table constraint.

    Set a default for a column.

    Drop a default for a column.

  • 8/10/2019 5.0_SQL_PART_1

    32/45

    Example 6.2(a) - ALTER TABLE

    Change Staff table by removing default of

    'Assistant' for position column and setting

    default for sex column to female ('F').

    ALTER TABLE Staff

    ALTER position DROP DEFAULT;

    ALTER TABLE StaffALTER sex SET DEFAULT 'F';

  • 8/10/2019 5.0_SQL_PART_1

    33/45

    Example 6.2(b) - ALTER TABLE

    Remove constraint from PropertyForRent that

    staff not allowed to handle more than 100

    properties at time. Add new column to Client table.

    ALTER TABLE PropertyForRent

    DROP CONSTRAINT StaffNotHandlingTooMuch;

    ALTER TABLE Client

    ADD prefNoRooms PRooms;

  • 8/10/2019 5.0_SQL_PART_1

    34/45

    Data Defini tion - DROP TABLE

    DROP TABLE TableName [RESTRICT | CASCADE]

    e.g. DROP TABLE PropertyForRent;

    Removes named table and all rows within it. With RESTRICT, if any other objects depend for

    their existence on continued existence of this table,

    SQL does not allow request.

    With CASCADE, SQL drops all dependent objects

    (and objects dependent on these objects).

  • 8/10/2019 5.0_SQL_PART_1

    35/45

    Views

    View

    Dynamic result of one or more relational

    operations operating on base relations to

    produce another relation.

    Virtual relation that does not necessarily

    actually exist in the database but is

    produced upon request, at time of request.

  • 8/10/2019 5.0_SQL_PART_1

    36/45

    Views

    Contents of a view are defined as a query on one

    or more base relations.

    With view resolution, any operations on view are

    automatically translated into operations onrelations from which it is derived.

    With view materialization, the view is stored as a

    temporary table, which is maintained as the

    underlying base tables are updated.

  • 8/10/2019 5.0_SQL_PART_1

    37/45

    SQL - CREATE VI EW

    CREATE VIEW ViewName [ (newColumnName [,...]) ]AS subselect

    [WITH [CASCADED | LOCAL] CHECK OPTION]

    Can assign a name to each column in view. If list of column names is specified, it must have

    same number of items as number of columnsproduced by subselect.

    If omitted, each column takes name ofcorresponding column in subselect.

  • 8/10/2019 5.0_SQL_PART_1

    38/45

    SQL - CREATE VI EW

    List must be specified if there is any ambiguity ina column name.

    The subselectis known as the defining query.

    WITH CHECK OPTION ensures that if a rowfails to satisfy WHERE clause of defining query, itis not added to underlying base table.

    Need SELECT privilege on all tables referenced in

    subselect and USAGE privilege on any domainsused in referenced columns.

  • 8/10/2019 5.0_SQL_PART_1

    39/45

    Example - Create Horizontal View

    Create view so that manager at branch B003

    can only see details for staff who work in his or

    her office.

    CREATE VIEW Manager3StaffAS SELECT *FROM StaffWHERE branchNo = 'B003';

  • 8/10/2019 5.0_SQL_PART_1

    40/45

    Example - Create Vertical View

    Create view of staff details at branch B003

    excluding salaries.

    CREATE VIEW Staff3

    AS SELECT staffNo, fName, lName, position, sex

    FROM Staff

    WHERE branchNo = 'B003';

  • 8/10/2019 5.0_SQL_PART_1

    41/45

    Example - Grouped and Joined Views

    Create view of staff who manage properties for rent,including branch number they work at, staff number, and

    number of properties they manage.

    CREATE VIEW StaffPropCnt (branchNo, staffNo, cnt)

    AS SELECT s.branchNo, s.staffNo, COUNT(*)

    FROM Staff s, PropertyForRent p

    WHERE s.staffNo = p.staffNo

    GROUP BY s.branchNo, s.staffNo;

  • 8/10/2019 5.0_SQL_PART_1

    42/45

    SQL - DROP VI EW

    DROP VIEW ViewName [RESTRICT | CASCADE]

    Causes definition of view to be deleted from

    database. For example:

    DROP VIEW Manager3Staff;

  • 8/10/2019 5.0_SQL_PART_1

    43/45

    SQL - DROP VIEW

    With CASCADE, all related dependent

    objects are deleted; i.e. any views defined on

    view being dropped.

    With RESTRICT (default), if any other

    objects depend for their existence on

    continued existence of view being dropped,

    command is rejected.

  • 8/10/2019 5.0_SQL_PART_1

    44/45

    Advantages of Views

    Data Independence

    Currency

    Improved Security Reduced Complexity

    Convenience

    Customization Data integrity

  • 8/10/2019 5.0_SQL_PART_1

    45/45

    Disadvantages of Views

    Update restriction

    Structure restriction

    Performance