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

SQL Lecture

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

SQL Lecture

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

Database

Systems

Dr. Abdalla Mostafa

abdalla.mosta75@gmail.com
SQL ( Structured Query Language)

‫لغة اإلستعالم الهيكلية‬

Copyright © 2007 Ramez Elmasri and Shamkant B.


Navathe
‫التعامل مع قاعدة البيانات‬

‫لخلق قاعدة بيانات جديدة •‬


‫;‪CREATE DATABASE COMPANY‬‬

‫لحذف قاعدةبيانات موجودة •‬


‫;‪DROP DATABASE COMPANY‬‬

‫‪Slide 8- 3‬‬
SQL ‫الجداول بإستخدام‬
‫إسم الجدول‬
Product ‫إسم الحقل‬

PName Price Category Manufacturer

Gizmo $19.99 Gadgets GizmoWorks

Powergizmo $29.99 Gadgets GizmoWorks

SingleTouch $149.99 Photography Canon

MultiTouch $203.99 Household Hitachi

‫السجالت‬
‫‪Data Types in SQL‬‬
‫بعض أنواع البيانات فى ‪SQL‬‬
‫• أنواع البيانات‬
‫– ‪Characters:‬النصوص‬
‫)‪ CHAR(20‬نص ثابت الطول)‪ , VARCHAR(50‬نص متغير‬
‫الطول‬
‫– ‪Numbers:‬األرقام‬
‫‪ INT‬ارقام حقيقية ‪Double ,‬أرقام عشرية‬
‫– أخرى‪:‬‬
‫‪ , DATETIME‬تاريخ… ‪,‬‬

‫• كل حقل يجب أن يكون له نوع بيانات واحد‬


SQL Query ‫اإلستعالم‬

‫الشكل العام لجملة االستعالم‬

SELECT <attributes> ‫الحقول‬


FROM <one or more relations>‫الجداول‬
WHERE <conditions> ‫الشرط‬
‫مثال على جملة االستعالم‬
Product(PName, Price, Category, Manfacturer)

Product ‫الجدول‬ Category‫التصن‬ Manufacturer


Pname ‫اإلسم‬ Price ‫السعر‬
‫يف‬ ‫المصنع‬
Gizmo $19.99 Gadgets GizmoWorks
Powergizmo $29.99 Gadgets GizmoWorks
SingleTouch $149.99 Photography Canon
MultiTouch $203.99 Household Hitachi

SELECT *
FROM Product
WHERE category=‘Gadgets’

PName Price Category Manufacturer


Gizmo $19.99 Gadgets GizmoWorks

“‫”النتيجة‬ Powergizmo $29.99 Gadgets GizmoWorks


‫مثال على جملة االستعالم‬
Product ‫جدول المنتجات‬ Category‫التصن‬ Manufacturer
Pname ‫اإلسم‬ Price ‫السعر‬
‫يف‬ ‫المصنع‬
Gizmo $19.99 Gadgets GizmoWorks
Powergizmo $29.99 Gadgets GizmoWorks
SingleTouch $149.99 Photography Canon
MultiTouch $203.99 Household Hitachi

SELECT PName, Price, Manufacturer


FROM Product
WHERE Price > 100

PName Price Manufacturer

‫اإلختيار‬
SingleTouch $149.99 Canon
MultiTouch $203.99 Hitachi
Notation

‫الجدول األساسى‬

Product (PName, Price, Category, Manfacturer)

SELECT PName, Price, Manufacturer


FROM Product
WHERE Price > 100

(PName, Price, Manfacturer) ‫مخرجات جملةاإلستعالم‬

‫المخرجات‬
‫‪Details‬‬
‫لغة ‪ SQL‬ليست حساسة ‪Not case sensitive‬‬
‫– نفس الكتابة تتساوى فى األوامر ‪SELECT Select select‬‬
‫– نفس الكتابة تتساوى بالنسبة السماء الحقول ‪Product‬‬
‫‪product‬‬
‫– تختلف فقط فى االستعالم بالنص ’‪‘Cairo’ ‘cairo‬‬
‫مثل ‪The LIKE operator‬‬

‫* ‪SELECT‬‬
‫‪FROM‬‬ ‫‪Products‬‬
‫’‪WHERE PName LIKE ‘%gizmo%‬‬
‫‪s LIKE p:‬‬ ‫•‬
‫تقارن بين نصين متشابهين تماما فى اإلستعالم‬
‫وهناك رمزان يمكن استخدامهما إلستبدال الحروف فى اإلستعالم‬ ‫•‬
‫‪ %‬ويمكن استبدالها بأى مجموعة متتالية من الحروف‬
‫_ و يمكن استبدال هذا الرمز بحرف واحد فقط‬
‫تقليل التكرارات فى نتيجة اإلستعالم‬
Distinct ‫مميز‬
Category
SELECT DISTINCT category Gadgets
FROM Product Photography
Household

‫قارن بينها و بين اإلستعالم العادى‬


Category
Gadgets
SELECT category Gadgets
FROM Product Photography
Household
Order by ‫ترتيب النتيجة بإستخدام األمر‬
SELECT pname, price, manufacturer
FROM Product
WHERE category=‘gizmo’ AND price > 50
ORDER BY price, pname

‫الترتيب عادة ما يكون تصاعديا‬


‫ فيصبح تنازليا‬Desc ‫إال إذاأضفنا األمر‬
PName Price Category Manufacturer
Gizmo $19.99 Gadgets GizmoWorks
Powergizmo $29.99 Gadgets GizmoWorks
SingleTouch $149.99 Photography Canon
MultiTouch $203.99 Household Hitachi

SELECT DISTINCT category


FROM Product
ORDER BY category ?
?
SELECT Category
FROM Product
ORDER BY PName

?
SELECT DISTINCT category
FROM Product
ORDER BY PName
Keys and Foreign Keys
PK ‫المفتاح األساسى‬

Company

StockPrice
CName Country ‫البلد‬
‫سعر المنتج‬
GizmoWorks 25 USA

Canon 65 Japan

Hitachi 15 Japan Foreign


key‫المفتاح األجنبى‬
Product

PName Price Category Manufacturer


Gizmo $19.99 Gadgets GizmoWorks
Powergizmo $29.99 Gadgets GizmoWorks
SingleTouch $149.99 Photography Canon
MultiTouch $203.99 Household Hitachi
Joins ‫الربط‬
Product (pname, price, category, manufacturer)
Company (cname, stockPrice, country)

‫ دوالر‬200 ‫إستخرج كل المنتجات المصنعة فى اليابان أقل من‬


‫مظهرا اسماء المنتجات واسعارها‬
Find all products under $200 manufactured in Japan;
return their names and prices.
‫ الربط ما بين المنتج‬Product
‫و الشركة‬Company
SELECT PName, Price
FROM Product, Company

WHERE Manufacturer=CName
AND Country=‘Japan’
AND Price <= 200
Joins ‫الربط‬
Product Company
Manufacture
PName Price Category
r
Gizmo $19.99 Gadgets GizmoWorks Cname StockPrice Country
Powergizmo $29.99 Gadgets GizmoWorks GizmoWorks 25 USA
SingleTouch $149.99 Photography Canon Canon 65 Japan
MultiTouch $203.99 Household Hitachi Hitachi 15 Japan

SELECT PName, Price


FROM Product, Company
WHERE Manufacturer=CName
PName Price
SingleTouch $149.99
AND Country=‘Japan’
AND Price <= 200
More Joins
Product (pname, price, category, manufacturer)
Company (cname, stockPrice, country)

Find all Chinese companies that manufacture


products both in the ‘electronic’ and ‘toy’
categories
SELECT
SELECT PName
cname
FROM Product, Company
WHERE
FROM category = ‘electronic’

or category =‘toy’
WHERE
AND Country=‘China ’
A Subtlety about Joins
Product (pname, price, category,
manufacturer)
Company (cname, stockPrice, country)

Find all countries that manufacture some


product in the ‘Gadgets’ category.

SELECT Country
FROM Product, Company
WHERE Manufacturer=CName
AND Category=‘Gadgets’
Unexpected duplicates
A Subtlety about Joins
Product Company
Name Price Category Manufacturer Cname StockPrice Country
Gizmo $19.99 Gadgets GizmoWorks GizmoWorks 25 USA
Powergizmo $29.99 Gadgets GizmoWorks Canon 65 Japan
SingleTouch $149.99 Photography Canon Hitachi 15 Japan
MultiTouch $203.99 Household Hitachi

SELECT Country
FROM Product, Company
WHERE Manufacturer=CName
AND Category=‘Gadgets’
Country

What is the problem ? ??

What’s the ??

solution ?
Stopped here
Tuple Variables
Person(pname, address, worksfor)
Company(cname, address)
Which
SELECT DISTINCT pname, address address ?
FROM Person, Company
WHERE worksfor = cname

SELECT DISTINCT Person.pname, Company.address


FROM Person, Company
WHERE Person.worksfor = Company.cname

SELECT DISTINCT x.pname, y.address


FROM Person AS x, Company AS y
WHERE x.worksfor = y.cname
An Unintuitive Query

SELECT DISTINCT R.A


FROM R, S, T
WHERE R.A=S.A OR R.A=T.A

What does it compute ?

Computes R  (S  T) But what if S =  ?


Aggregation ‫تجميع‬

SELECT avg(price) SELECT count(*)


FROM Product FROM Product
WHERE maker=“Toyota” WHERE year > 1995

SQL supports several aggregation operations:

sum, count, min, max, avg

Except count, all aggregations


apply to a single attribute
Aggregation: Count

COUNT applies to duplicates, unless otherwise stated:

SELECT Count(category) same as Count(*)


FROM Product
WHERE year > 1995

We probably want:

SELECT Count(DISTINCT category)


FROM Product
WHERE year > 1995
More Examples

Purchase(product, date, price, quantity)

SELECT Sum(price * quantity)


FROM Purchase

What do
SELECT Sum(price * quantity) they mean ?
FROM Purchase
WHERE product = ‘bagel’
Simple Aggregations
Purchase
Product Date Price Quantity
Bagel 10/21 1 20
Banana 10/3 0.5 10
Banana 10/10 1 10
Bagel 10/25 1.50 20

SELECT Sum(price * quantity)


FROM Purchase 50 (= 20+30)
WHERE product = ‘bagel’

You might also like