Top Banner
Chapter 5 Types
26

Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

Dec 17, 2015

Download

Documents

Megan Henry
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

Chapter 5

Types

Page 2: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-2

Topics in this Chapter

• Values vs. Variables• Types vs. Representations• Type Definition• Operators• Type Generators• SQL Facilities

Page 3: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-3

Types

• A type is a set of values• F/k/a (formerly known as) a domain• Types can be system-defined or user-defined• All types have associated operators• Formally, this means that the operator can

take the given type as a parameter• For example integers can be passed to an

addition operator but not a sub-string operator

Page 4: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-4

Values vs. Variables - Values

• A value is an individual constant• It has no location in time or space• A value is represented by encoding, which

generates its appearance, which is spatial and temporal

• Appearances can occur in different times and spaces: they are manifold

• A value cannot be updated, for then it would be some other value: a value is immutable

Page 5: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-5

Values vs. Variables - Variables

• A variable is a holder for an appearance of a value

• It has location in time or space• A variable can be updated, that is, it can hold

another value• A variable maintains its identity during the

update: it is still the same variable

Page 6: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-6

Values vs. Variables

• Values can be simple or complex– Simple: integer, char

– Complex: an XML document, a relation

• A value per se can have multiple appearances• An appearance can have multiple encodings• When we refer to a “value,” we often mean

“an appearance of an encoding of a value”

Page 7: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-7

Values and Variables are Typed

• Every value has its immutable type• Every variable has its immutable type, so that

all its values will be of that type• Every attribute of every relvar has its

immutable type• Operators have a type when operating, but this

can be polymorphic in different contexts– e.g. = can operate on integers or characters, but

not both at the same time

Page 8: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-8

Types and their Representations

• A type per se is idealized, conceptual, a model• A representation (appearance) of the type is

its implementation• Sometimes a type is called an ADT – Abstract

Data Type, but this is inherently redundant• This logical and physical distinction is an

aspect of data independence

Page 9: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-9

Types and their Representations - Scalar vs. Non-Scalar

• A scalar type is atomic and encapsulated– Integer, char, bool

• A non-scalar type is complex and user-visible– Name, address, employee, radiology image

• Values, variables, attributes, operators, parameters, expressions: all can be scalar or not, mutatis mutandis

Page 10: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-10

Types and their Representations - Possible Representations

• Let T be a scalar type• The physical representation is hidden from the

user• Values of type T must have at least one

possible representation, which is not hidden from the user

• The possible representation of a scalar type may have components, and if so, then at least one set of these must be visible to the user

Page 11: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-11

Types and their Representations - Possible Representations

• Each type has at least one POSSREP visible to the user in its declaration

• Each POSSREP includes two operators– Selector to specify a value for each representation– Ex.: QTY (100), QTY(N1 – N2)– THE_ to access each representation– Ex.: THE_QTY (Q), THE_QTY (Q1 – Q2),

• QTY cannot equal 100, because quantity is not an integer, if it has been declared as a type

• QTY can equal QTY(100)

Page 12: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-12

Type Definition

• TYPE WEIGHT

POSSREP { D DECIMAL (5,1)

CONSTRAINT D > 0.0 AND D < 5000.0 };

• TYPE WEIGHT

POSSREP LBS { L DECIMAL (5,1)

CONSTRAINT L > 0.0 AND L < 5000.0 };

POSSREP GMS { G DECIMAL (7,1)

CONSTRAINT G > 0.0

AND G < 2270000.0

AND MOD (G, 45.4) = 0.0 };

Page 13: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-13

Operators

• OPERATOR ABS (Z RATIONAL)

RETURNS RATIONAL;

RETURN (CASE

WHEN Z > 0.0 THEN +Z

WHEN Z < 0.0 THEN –Z

END CASE);

END OPERATOR;

Page 14: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-14

Operators

• OPERATOR REFLECT (P POINT)UPDATES P;

BEGIN;THE_X (P) := - THE_X (P) ;THE_Y (P) := - THE_Y (P) ;RETURN;

END;END OPERATOR;

DROP OPERATOR REFLECT;

Page 15: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-15

Type Conversions

• QTY(100) converts an integer to a quantity• THE_QTY (Q1) converts a quantity to an

integer• P# = ‘P2’ violates the rule that both sides of

an assignment must be of the same type• Compiler uses the P# selector implicitly to

convert ‘P2’ from Char to P#• a/k/a “Coercion” • Coercion is not permitted

Page 16: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-16

Type Conversions

• Coercion is not permitted• Explicit casting is permitted

CAST_AS_CHAR (530.00)• This is called strong typing:• i.e., every value has a type,• and the compiler checks to verify that

operands are of the correct type for an operation– Can’t add weight to quantity, but can multiply

them

Page 17: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-17

Type and Domain

• All types are known to the system• The types in a database are a closed set• Assignments and comparisons, ditto• In a database system, a domain is a type, and

thereby is an object class• Hence we can speak about relations and

objects simultaneously

Page 18: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-18

Type Generators

• a/k/a parameterized types, or templates• ARRAY is a classic invocation of a type

generator• ARRAY can take in all sorts of types, and can

return all sorts of other types

VAR SALES ARRAY INTEGER [12];• ARRAY operators such as assignment,

equality, THE_ work equally well with any valid type, i.e., a type known to the system

Page 19: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-19

SQL Facilities

• Built-in operators such as CHAR, NUMERIC, BLOB, BOOL…

• Mostly strong typing, but SQL will coerce FLOAT to NUMERIC, for example

• Supports two kinds of user-defined types: distinct types and structured types

• SQL does not support POSSREP – only one representation per type

• SQL does not support CONSTRAINTs

Page 20: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-20

SQL Facilities – Distinct Types

• CREATE TYPE WEIGHT

AS DECIMAL (5,1) FINAL;• For distinct types, SQL supports Selector and

THE_• POSSREP not supported, so WEIGHT is

always a DECIMAL• Distinct types are strong, so you cannot use a

comparison operator between the type and its underlying representation

Page 21: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-21

SQL Facilities – Structured Types

• CREATE TYPE POINT

AS (X FLOAT,Y FLOAT) NOT FINAL;

• Uses operators in place of Select and THE_• Observe and mutate methods• Structured types can be ALTERed or

DROPped• Tuples and relations are structured types

Page 22: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-22

SQL Facilities –Type Generators

• SQL includes three type generators:

REF, ROW, ARRAY• REFERENCE generates a reference• ROW generates a set of fields• ARRAY generates an array

Page 23: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-23

SQL Commands• GROUP BY and HAVING

• By including a GROUP BY clause functions such as SUM and COUNT are applied to groups of items sharing values. When you specify GROUP BY region the result is that you get only one row for each different value of region . All the other columns must be "aggregated" by one of SUM, COUNT ...

• The HAVING clause allows use to filter the groups which are displayed. The WHERE clause filters rows before the aggregation, the HAVING clause filters after the aggregation.

• If a ORDER BY clause is included we can refer to columns by their position.

Page 24: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-24

Orderby Command• Select * from emp order by ename;• SELECT ename, salary FROM emp WHERE salary > 1000 ORDER BY salary DESC

Display Sum in Query.• SELECT SUM(population), SUM(gdp)FROM bbc WHERE region = 'Europe‘;

Distinct CommandSELECT DISTINCT region FROM bbc

Page 25: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-25

Set Operators• Set operators combine the results of two component queries into a

single result. Queries containing set operators are called compound queries. They are fully described, including restrictions on these operators, in Operators

• Operator Returns• UNION - All rows selected by either query

• UNION ALL - All rows selected by either query, including all duplicates

• INTERSECT - All distinct rows selected by both queries

• MINUS - All distinct rows selected by the first query but not the second

Page 26: Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.

5-26

Max, Min

• Select max(sal) from emp;

• Select min(sal) from emp;