0% found this document useful (0 votes)
11 views

02-Introduction To Relational Model and SQL-SCD

The document discusses SQL data definition language (DDL) which defines database schemas and relation structures. It describes SQL DDL commands like CREATE TABLE to define relation schemas, data types, keys and constraints. It also discusses modifying relation schemas using ALTER TABLE and deleting relations using DROP TABLE.

Uploaded by

Indra Mahesa
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views

02-Introduction To Relational Model and SQL-SCD

The document discusses SQL data definition language (DDL) which defines database schemas and relation structures. It describes SQL DDL commands like CREATE TABLE to define relation schemas, data types, keys and constraints. It also discusses modifying relation schemas using ALTER TABLE and deleting relations using DROP TABLE.

Uploaded by

Indra Mahesa
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 50

1

02 Introduction to Relational
Model
CRI2E4 Basis Data
2

Learning Outcomes
Students can explain and understand the Relational Model
Outline
3

Structure of Relational Databases

Database Schema

Keys

Schema Diagram
4

Structure of Relational
Databases
Basic Concepts
5

• A relational database consists of a


collection of tables, each of which is
assigned a unique name.
• A row in a table represents a
relationship among a set of values.
• In mathematical terminology, a tuple is
simply a sequence (or list) of values.
• Thus, in the relational model the term
relation is used to refer to a table, while
the term tuple is used to refer to a row.
Similarly, the term attribute refers to a
column of a table.
Relation Schema and Instances
6

• A1, A2, …, An are attributes


• R = (A1, A2, …, An ) is a relation schema
Example:
instructor = (ID, name, dept_name, salary)

• Relations are unordered. Order of tuples is irrelevant (tuples may be


stored in an arbitrary order)
Example: instructor relation with unordered tuples
Attributes
7

• The set of allowed values for each attribute is called the domain of the
attribute
• Attribute values are (normally) required to be atomic; that is, indivisible
• The special value null is a member of every domain. Indicated that the value
is “unknown”
• The null value causes complications in the definition of many operations
Example of a Instructor Relation
8

attributes
(or columns)

tuples
(or rows)
9

Database Schema
Database Schema
10

• Database schema -- is the logical structure of the database.


• Database instance -- is a snapshot of the data in the database at a given
instant in time.
• Example:
schema: instructor (ID, name, dept_name, salary)
Instance:
11

Keys
Keys
12

• Let K  R
• K is a superkey of R if values for K are sufficient to identify a unique tuple of
each possible relation r(R)
• Superkey K is a candidate key if K is minimal
• One of the candidate keys is selected to be the primary key. Primary key
attributes are also underlined.
• The primary key should be chosen such that its attribute values are never, or
are very rarely, changed.
• Foreign key constraint: Value in one relation must appear in another
• Referencing relation
• Referenced relation
• Note that in a foreign-key constraint, the referenced attribute(s) must be the
primary key of the referenced relation.
13

Schema Diagram
Schema Diagram
14

• A database schema, along with primary key and foreign-key constraints, can
be depicted by schema diagrams.
15

References

[1] Silberschatz, Korth, and Sudarshan. Database System Concepts – 7th


Edition. McGraw-Hill. 2019.
[2] Slides adapted from Database System Concepts Slide.
Source: https://db-book.com/slides-dir/index.html
Questions
16
1

02 Introduction to SQL
CRI2E4 Basis Data
2

Learning Outcomes
Students can explain and understand DDL, DML, Basic query
structure
Outline
3

Overview of SQL Query Language

SQL Data Definition

Basic Structure of SQL Queries

Modification of the Database


4

Overview of SQL Query


Language
History
5

• IBM Sequel language developed as part of System R project at the IBM San
Jose Research Laboratory
• Renamed Structured Query Language (SQL)
• ANSI and ISO standard SQL:
• SQL-86
• SQL-89
• SQL-92
• SQL:1999 (language name became Y2K compliant!)
• SQL:2003
• Many products now support the SQL language.
• SQL has clearly established itself as the standard relational database
language.
SQL Parts
6

The SQL language has several parts:


• Data-definition language (DDL). The SQL DDL provides commands for defining relation
schemas, deleting relations, and modifying relation schemas.
• Data-manipulation language (DML). The SQL DML provides the ability to query information
from the database and to insert tuples into, delete tuples from, and modify tuples in the
database.
• Integrity. The SQL DDL includes commands for specifying integrity constraints that the data
stored in the database must satisfy. Updates that violate integrity constraints are disallowed.
• View definition. The SQL DDL includes commands for defining views.
• Transaction control. SQL includes commands for specifying the beginning and end points of
transactions.
• Embedded SQL and dynamic SQL. Embedded and dynamic SQL define how SQL statements
can be embedded within general-purpose programming languages, such as C, C++, and Java.
• Authorization. The SQL DDL includes commands for specifying access rights to relations
and views.
7

SQL Data Definition


SQL Data Definition
8

• The set of relations in a database are specified using a data-definition


language (DDL).
• The SQL DDL allows specification of not only a set of relations, but also
information about each relation, including:
• The schema for each relation.
• The types of values associated with each attribute
• The Integrity constraints
• The set of indices to be maintained for each relation.
• Security and authorization information for each relation.
• The physical storage structure of each relation on disk.
Basic Types
9

• char(n). Fixed length character string, with user-specified length n.


• varchar(n). Variable length character strings, with user-specified maximum
length n.
• int. Integer (a finite subset of the integers that is machine-dependent).
• smallint. Small integer (a machine-dependent subset of the integer domain
type).
• numeric(p,d). Fixed point number, with user-specified precision of p digits,
with d digits to the right of decimal point. (ex., numeric(3,1), allows 44.5 to
be stores exactly, but not 444.5 or 0.32)
• real, double precision. Floating point and double-precision floating point
numbers, with machine-dependent precision.
• float(n). Floating point number, with user-specified precision of at least n
digits.
Basic Schema Definition
10

• An SQL relation is defined using the create table command.


create table r
(A1 D1, A2 D2, ..., An Dn,
(integrity-constraint1),
...,
(integrity-constraintk))
• r is the name of the relation
• each Ai is an attribute name in the schema of relation r
• Di is the data type of values in the domain of attribute Ai
• Example:
create table instructor (
ID char(5),
name varchar(20),
dept_name varchar(20),
salary numeric(8,2))
Integrity Constraints in Create Table
11

• Types of integrity constraints


• primary key (A1, ..., An )
• foreign key (Am, ..., An ) references r
• not null
• SQL prevents any update to the database that violates an integrity constraint.
• Example:
create table instructor (
ID char(5),
name varchar(20) not null,
dept_name varchar(20),
salary numeric(8,2),
primary key (ID),
foreign key (dept_name) references department);

• Try to create 4 other tables in the university database


Update to Tables
12

• Insert
• insert into instructor values ('10211', 'Smith', 'Biology', 66000);
• Delete : Remove all tuples from the relation
• delete from r
• Drop Table : Remove a relation from an SQL database
• drop table r
• Alter
• alter table r add A D
• where A is the name of the attribute to be added to relation r and D is the domain of
A.
• All exiting tuples in the relation are assigned null as the value for the new attribute.
• alter table r drop A
• where A is the name of an attribute of relation r
• Dropping of attributes not supported by many databases.
13

Basic Structure of SQL


Queries
Basic Query Structure
14

• A typical SQL query has the form:

select A1, A2, ..., An


from r1, r2, ..., rm
where P

• Ai represents an attribute
• Ri represents a relation
• P is a predicate.
• The result of an SQL query is a relation.
The Select Cause
15

• The select clause lists the attributes desired in the result of a query
• corresponds to the projection operation of the relational algebra
• Example: find the names of all instructors:
select name
from instructor

• NOTE: SQL names are case insensitive (i.e., you may use upper- or lower-case letters.)
E.g., Name ≡ NAME ≡ name
The Select Cause (cont.)
16

• SQL allows duplicates in relations as well as in query results.


• To force the elimination of duplicates, insert the keyword distinct after
select.
• Find the department names of all instructors, and remove duplicates
select distinct dept_name
from instructor
The Select Cause (cont.)
17

• An asterisk in the select clause denotes “all attributes”


select *
from instructor
• An attribute can be a literal with no from clause
select '437'
• Results is a table with one column and a single row with value “437”
• Can give the column a name using:
select '437' as FOO
• An attribute can be a literal with from clause
select 'A'
from instructor
• Result is a table with one column and N rows (number of tuples in the instructors
table), each row with value “A”
The Select Cause (cont.)
18

• The select clause can contain arithmetic expressions involving the operation, +, –, , and
/, and operating on constants or attributes of tuples.
• The query:
select ID, name, salary/12
from instructor
would return a relation that is the same as the instructor relation, except that the value
of the attribute salary is divided by 12.
• Can rename “salary/12” using the as clause:
select ID, name, salary/12 as monthly_salary
The Where Clause
19

• The where clause specifies conditions that the result must satisfy
• Corresponds to the selection predicate of the relational algebra.
• To find all instructors in Comp. Sci. dept
select name
from instructor
where dept_name = 'Comp. Sci.'
• SQL allows the use of the logical connectives and, or, and not
• The operands of the logical connectives can be expressions involving the comparison
operators <, <=, >, >=, =, and <>.
• Comparisons can be applied to results of arithmetic expressions
• To find all instructors in Comp. Sci. dept with salary > 70000
select name
from instructor
where dept_name = 'Comp. Sci.' and salary > 70000
The From Clause
20

• The from clause lists the relations involved in the query


• Corresponds to the Cartesian product operation of the relational algebra.
• Find the Cartesian product instructor X teaches
select 
from instructor, teaches
• generates every possible instructor – teaches pair, with all attributes from both
relations.
• For common attributes (e.g., ID), the attributes in the resulting table are renamed
using the relation name (e.g., instructor.ID)
• Cartesian product not very useful directly, but useful combined with where-clause
condition (selection operation in relational algebra).
Examples
21

• Find the names of all instructors who have


taught some course and the course_id
• select name, course_id
from instructor , teaches
where instructor.ID = teaches.ID
Examples
22

• Find the names of all instructors in the Art


department who have taught some course and
the course_id
• select name, course_id
from instructor , teaches
where instructor.ID = teaches.ID
and instructor. dept_name = ‘Comp. Sci.'
Additional Basic Operations
23

• Rename operations
• String operations
• Ordering the Display of Tuples
• Where-Clause Predicates
Rename Operations
24

• The SQL allows renaming relations and attributes using the as clause:
old-name as new-name

• Find the names of all instructors who have a higher salary than some instructor
in 'Comp. Sci'.
• select distinct T.name
from instructor as T, instructor as S
where T.salary > S.salary and S.dept_name = 'Comp. Sci.’

• Keyword as is optional and may be omitted


instructor as T ≡ instructor T
String Operations
25

• SQL includes a string-matching operator for comparisons on character strings. The


operator like uses patterns that are described using two special characters:
• percent ( % ). The % character matches any substring.
• underscore ( _ ). The _ character matches any character.
• Find the names of all instructors whose name includes the substring “dar”.
select name
from instructor
where name like '%dar%'
• Match the string “100%”
like '100 \%' escape '\'
in that above we use backslash (\) as the escape character.
String Operations (cont.)
26

• Patterns are case sensitive.


• Pattern matching examples:
• 'Intro%' matches any string beginning with “Intro”.
• '%Comp%' matches any string containing “Comp” as a substring.
• '_ _ _' matches any string of exactly three characters.
• '_ _ _ %' matches any string of at least three characters.

• SQL supports a variety of string operations such as


• concatenation (using “||”)
• converting from upper to lower case (and vice versa)
• finding string length, extracting substrings, etc.
Ordering the Display of Tuple
27

• List in alphabetic order the names of all instructors


select distinct name
from instructor
order by name

• We may specify desc for descending order or asc for ascending order, for each
attribute; ascending order is the default.
• Example: order by name desc

• Can sort on multiple attributes


• Example: order by dept_name, name
Where Clauses Predicates
28

• SQL includes a between comparison operator


• Example: Find the names of all instructors with salary between $90,000 and
$100,000 (that is,  $90,000 and  $100,000)
• select name
from instructor
where salary between 90000 and 100000

• Tuple comparison
• select name, course_id
from instructor, teaches
where (instructor.ID, dept_name) = (teaches.ID, 'Biology');
29

Modification of the
Database
Deletion
30

• Delete all instructors


delete from instructor

• Delete all instructors from the Finance department


delete from instructor
where dept_name= 'Finance’;

• Delete all tuples in the instructor relation for those instructors associated with a
department located in the Watson building.
delete from instructor
where dept name in (select dept name
from department
where building = 'Watson');
Insertion
31

• Add a new tuple to course


insert into course
values ('CS-437', 'Database Systems', 'Comp. Sci.', 4);

• or equivalently
insert into course (course_id, title, dept_name, credits)
values ('CS-437', 'Database Systems', 'Comp. Sci.', 4);

• Add a new tuple to student with tot_creds set to null


insert into student
values ('3003', 'Green', 'Finance', null);
Updates
32

• Give a 5% salary raise to all instructors


update instructor
set salary = salary * 1.05
• Give a 5% salary raise to those instructors who earn less than 70000
update instructor
set salary = salary * 1.05
where salary < 70000;
• Give a 5% salary raise to instructors whose salary is less than average
update instructor
set salary = salary * 1.05
where salary < (select avg (salary)
from instructor);
33

References

[1] Silberschatz, Korth, and Sudarshan. Database System Concepts – 7th


Edition. McGraw-Hill. 2019.
[2] Slides adapted from Database System Concepts Slide.
Source: https://db-book.com/slides-dir/index.html
Questions
34

You might also like