Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
67 views

Basic Queries in SQL:: SELECT FROM WHERE

The document summarizes basic SQL queries including: 1) The SELECT statement is used to retrieve information from a database. The basic form includes SELECT, FROM, and WHERE clauses. 2) The SELECT clause specifies the attributes to retrieve. The FROM clause lists the relation names. The WHERE clause identifies which tuples to retrieve based on a conditional expression. 3) Examples are provided that demonstrate retrieving employee data based on name, department, and location conditions using the SELECT, FROM, and WHERE clauses.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
67 views

Basic Queries in SQL:: SELECT FROM WHERE

The document summarizes basic SQL queries including: 1) The SELECT statement is used to retrieve information from a database. The basic form includes SELECT, FROM, and WHERE clauses. 2) The SELECT clause specifies the attributes to retrieve. The FROM clause lists the relation names. The WHERE clause identifies which tuples to retrieve based on a conditional expression. 3) Examples are provided that demonstrate retrieving employee data based on name, department, and location conditions using the SELECT, FROM, and WHERE clauses.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

Basic Queries in SQL:

The SELECT statement: SELECT is the basic statement to retrieve information


from a database. SQL allows a table (relation) to have two or more tuples
identical in all their attribute values, consequently an SQL table is not a set of
tuples, it is rather a bag of tuples. Some SQL relations are constrained to be
sets because of key constraint has been declared.

The SELECT-FROM-WHERE Structure of SQL Queries:

The basic form of the SELECT statement, sometimes called a mapping is


formed of the three clauses SELECT, FROM, and WHERE :

SELECT <attribute list>

FROM <table list>

WHERE <condition>

Where:

 <attribute list> is a list of attribute names whose values are to be


retrieved by the query
 <table list> is a list of relation names
 <condition> is a conditional expression that identifies the tuples to be
retrieved by the query.

A more general version is:

SELECT <attribute list>

FROM <table list>

[ WHERE <condition>]

[ORDER BY < attribute list>]

with the clauses between [] being optional.


Q0: Retrieve the bithdate and address of the employee(s) whose name
is “John B. Smith”

SELECT BDATE, ADDRESS

FROM EMPLOYEE

WHERE FNAME= ‘John’ AND MINIT= ‘B’ AND LNAME=’Smith’;

QUERY 1:

Retrieve the name and address of all employees who work for the
‘Research’ department.

Q1: SELECT FNAME, LNAME, ADDRESS

FROM EMPLOYEE, DEPARTMENT

WHERE DNAME= ‘Research’ AND DNUMBER=DNO

QUERY 2:

For every project located in “Stafford”, list the project number, the
controlling department number, and the department manager’s last
name, address, and birthdate.

Q2:

SELECT PNUMBER, DNUM, LNAME, ADDRESS, BDATE

FROM PROJECT, DEPARTMENT, EMPLOYEE

WHERE PLOCATION= ‘Stafford’ AND DNUM=DNUMBER AND


MGRSSN=SSN;

Dealing with Ambiguous Attribute Names and Renaming:


In SQL, the same name can be used for two (or more) attributes as long
as the attributes are in different relations.

If a query refers to two or more attributes with the same name, we must
qualify the attribute name with the relation name and separate them
with a dot(.). This is done by prefixing the relation name to the attribute
name.

Ambiguity also arises in the case of queries that refer to the same
relation twice as in the following

QUERY:

For each employee, retrieve the employee’s first and last name and the
first and last name of his or her immediate supervisor.

Q8: SELECT E.FNAME, E.LNAME, S.FNAME, S.LNAME

FROM EMPLOYEE AS E, EMPLOYEE AS S

WHERE E.SUPERSSN=S.SSN

In this case, we declare tuple variable or aliases, for the EMPLOYEE


relation.

An alias can follow the keyword AS or it can directly follow the relation
name as in : FROM EMPLOYEE E, EMPLOYEE S

It is also possible to rename the relation attributes within the query in


SQL by giving them aliases; for example:

EMPLOYEE AS E (FN,MI, LN, SSN,BD,ADDR,SEX,SAL,SSSN,DNO)

Unspecified WHERE-Clause and Use of *

-A missing WHERE clause indicates that no condition on tuple selection.


Hence this type of SELECT will retrieve all tuples of the relations
specified in the FROM qualify and are selected for the query result.

QUERIES 9 and 10:


Select all employees ssns

SELECT SSN

FROM EMPLOYEE;

Select all combinations of EMPLOYEE SSN and DEPARTMENT DNAME in


the database.

SELECT SSN, DNAME

FROM EMPLOYEE, DEPARTMENT;

It is very important to specify every selection in the WHERE clause. If


such conditions are overlooked, incorrect or very large relations may
result.To retrieve all attributes values of selected tuples , we do not
need to list each attribute name explicitly in SQL; we can just enter (*)
which stands for all attribute.

QUERY: Retrieve all attributes of an EMPLOYEE and the attributes of the


DEPARTMENT he/she works in for every employee of the “Research”
department.

SELECT *

FROM EMPLOYEE

WHERE DNO =5;

SELECT *

FROM EMPLOYEE, DEPARTMENT

WHERE DNAME= ‘Research’ AND DNO=DNUMBER;

Tables as Sets in SQL:


SQL does not automatically eliminate duplicate tuples in the results of
queries:

-They are expensive.

-the user may want to see duplicate tuples

An SQL table with a key is however a set with no duplicate tuples.

If we want to eliminate duplicate tuples from the result of an SQL query,


we use the keyword DISTINCT in the SELECT clause, so as to eliminate
all duplicate tuples.

SELECT ALL and SELECT are equivalent in that they do not eliminate
duplicate tuples.

SELECT ALL Salary

FROM EMPLOYEE;

SELECT DISTINCT Salary

FROM EMPLOYEE;

SET Operations:

SQL has incorporated some Set building operations as defined in


mathematics, such as set union: UNION and set intersection
(INTERSECT) and set difference (EXCEPT). The relations resulting from
these set operations are sets of tuples, in which duplicates are
eliminated from the results.

(SELECT DISTINCT Pnumber

FROM PROJECT, DEPARTMENT, EMPLOYEE

WHERE Dnum= Dnumber AND Mgr_ssn= Ssn AND Lname=’Smith’);

UNION

(SELECT DISTINCT Pnumber

FROM PROJECT, WORKS_ON, EMPLOYEE

WHERE Pnumber= Pno AND Essn= Ssn AND Lname= ‘Smith’

);

The first SELECT query retrieves the projects that involve ‘Smith’ as a
manager of the department that controls the project.

The second SELECT query retrieves the projects that involve ‘Smith’ as
worker on the project.

SQL also has corresponding multiset operations which use the set
operator followed by the keyword ALL (UNION ALL, INTERSECT ALL,
EXCEPT ALL). Their results are bags in that duplicates are not
eliminated.

Substring Pattern Matching and Arithmetic Operators:

String pattern matching:

The LIKE operator is used for comparing strings values in tuples and for
string pattern matching.

Partial strings are specified using two reserved characters % replaces an


arbitrary number (0 or more) of characters , whereas _ replaces a single
character.
SELECT Fname, Lname

FROM EMPLOYEE

WHERE Address LIKE ‘%Houston, TX%’

Retrieves all employees whose address is in Houston, Texas

SELECT Fname, Lname

FROM EMPLOYEE

WHERE BDate LIKE ‘__5_______’

Retrieves all employees born in the 1950’s

Note:

- if the underscore or % is part of the string, it should be preceded by the


keyword ESCAPE. For example ‘AB\_CD\%F’ ESCAPE ‘\’ represents the string
“AB_CD%F” and ‘\’ is specified as the escape character. Any character not used
in the string, can be chosen as the escape character.

-If the single quote symbol ‘ or apostrophe is part of the string, then they are
entered as “ so it will not be interpreted as the string ending symbol.

Substring comparison implies that the attribute values are strings.

Arithmetic operators in queries:

The standard arithmetic operators +. *, - and / can be applied to numeric


values or attributes with numeric domains. For example: suppose we want to
see the effect of giving a 10% raise to all employees working on ‘ProductX’,
we can issue the query:

SELECT E.Fname, E.Lname, 1.1*E.Salary AS Increased_sal

FROM EMPLOYEE AS E, WORKS_ON AS W, PROJECT AS P

WHERE E.Ssn=W.Essn AND W.Po= P.Pnumber AND P.Pname= ‘ProductX’;


For string data types, the concatenate operator || can be used to append two
string values.

For date, time and interval data types, operators include incrementing (+)
decrementing (-) a date, a time or timestamp by an interval.

BETWEEN: is a comparison operator that is used to check or retrieve tuples


whose attribute value is between two values:

SELECT *

FROM EMPLOYEE

WHERE (Salary BETWEEN 30000 AND 40000) AND Dno=5;

(Salary BETWEEN 30000 AND 40000) is equivalent to (Salary <= 40000)


AND (Salary >= 30000)

Ordering of Query Results:

ORDER BY clause allows the user to order the result of the query by the
values of one or more attributes.

SELECT D.Dname, E.Lname, E.Fname, P.Pname

FROM DEPARTMENT AS D, EMPLOYEE AS E, WORKS_ON AS W, PROJECT AS


P

WHERE D.Dnumber= E.Dno AND E.Ssn=W.Essn AND W.Po= P.Pnumber

ORDER BY D.Dname, E.Lname, E.Fname;

The default order is the ascending order of values. We can specify the order
using either DESC for descending or ASC for ascending.

ORDER BY D.Dname DESC, E.Lname ASC, E.Fname ASC;


STRINGS:

Strings are character sequences enclosed between pairs of single quotes.


Special characters that can be used within strings:

Special Character Meaning when used in a string

\’ Single quote character

\” Double quote character

\b Backspace

\n New line

\r Carriage return

\t Tab

\\ Backslash

% Without a preceding backslash, the percent is


interpreted by the string operator LIKE as a wildcard
matching 0 or more characters

_ Without a preceding backslash, the underscore


character is interpreted by the string operator LIKE as
a wildcard matching a single character.

Operators: Arithmetic: The usual arithmetic operators such as +. -, *, and /


are available.

LOGICAL: The logical operators return the value TRUE or FALSE, they are:

 NOT (or !)
 AND (or &&)
 OR (or ||)
 XOR

COMPARISON

 = (equal)
 >=(greater than or equal)
 > (greater than)
 <=( less than or equal)
 < (less than)
 <> ( not equal or !=)
 IS ( NULL test)
 BETWEEN (value is in a specified range)

The IS operator can be used to test whether a value is NULL or NOT NULL as
in:

expression IS NULL (IS NOT NULL)

The BETWEEN operator is used to determine whether or not a value is within


a specified range (including the end points)

BETWEEN low AND high

STRING:

The string operators LIKE and NOT LIKE are used for string pattern
matching:

String LIKE pattern_string

String NOT LIKE pattern_string

PRECEDENCE:

The precedence of the commonly used operators is:


OR, XOR

AND

BETWEEN

=, >=, >, <=, <, <>, !=, IS, LIKE, NOT LIKE

-,+

*, /

-(unary minus)

FUNCTIONS:

 CEIL (rounds up to the nearest integer), and


 SIN (sine function, argument in radians)

Standard Aggregate Functions

Aggregate function Meaning

COUNT(*) Computes the number of rows

COUNT(column) Counts the non-null values in columns;


DISTINCT can be used to count the unique
column values

AVG

SUM

MIN

MAX
SQL in a nutshell:

Comments: Comments start with -- and are terminated with the end of line
or if there are multiple lines, we use the pairs /* .. */.

Names: Database items such as databases , tables, and columns are names
using identifiers. An identifier is a sequence of letters and digits that have a
maximum length of 128 characters and must begin with a letter. Names are
case sensitive.

Types: A datatype must be associated with every value stored in the


databases. Datatypes are associated with attributes and all values in a
column must be of the same datatype.

Datatype Comment

BOOLEAN True or false or unkown

CHAR Single character

VARCHAR(n) Variable length string with maximum size =n

BLOB Large binary objects, such as images

TEXT Same as VARCHAR strings with a very large max size

INTEGER (INT) Normal-size integer (2 bytes)

SMALLINT Small Integer (1 byte)

BIGINT Large integer (4 bytes)

DECIMAL(precision, Decimal number: precision is the display width and


scale) scale is the number of fractional digits (2 for
currency)

FLOAT Floating point number


DOUBLE (REAL) Double precision floating-point number

DATE Date in YYYY-MM-DD format

TIME Time in HH:MM:SS format

DATETIME Time in YYYY-MM-DD HH:MM:SS format

You might also like