SQL Module 1
SQL Module 1
SQL
for Data Analysis
Data Analysis Table of Contents ﺟﺪول اﻟﻤﺤﺘﻮﻳﺎت SQL for Data Analysis
Flat files vs. relational databases اﻟﻔﺮق ﺑﲔ اﻟﻤﻠﻔﺎت اﻟﻤﺴﻄﺤﺔ وﻗﻮاﻋﺪ اﻟﺒﻴﺎﻧﺎت
Client–Server architecture explained simply (Client–Server) ﴍح ﻣﺒﺴﻂ ﻟﻬﻨﺪﺳﺔ اﻟﻌﻤﻴﻞ واﻟﺨﺎدم
Data modeling concepts: Entities, Attributes, Relationships ( اﻟﻌﻼﻗﺎت، اﻟﺨﺼﺎﺋﺺ،ﻣﻔﺎﻫﻴﻢ ﻧﻤﺬﺟﺔ اﻟﺒﻴﺎﻧﺎت )اﻟﻜﻴﺎﻧﺎت
Understanding Relationships ﺷـــــــــﺮح اﻟﻌﻼﻗــــــــــــﺎت
Entity–Relationship Diagram (ERD) basics (ERD) ﺑﻨﺎء اﻟﻤﺨﻄﻂ اﻟﻌﻼﺋﻘﻲ
From ERD to Relational Schema (Relational Schema) ﺗﺤﻮﻳﻞ اﻟﻤﺨﻄﻂ إﱃ ﻣﺨﻄﻂ ﺟﺪاول ﻓﻌﲇ
DDL: CREATE, ALTER, DROP ﻹﻧﺸﺎء وﺗﻌﺪﻳﻞ اﻟﺠﺪاولDDL أواﻣﺮ
DML: INSERT, UPDATE, DELETE, SELECT ﻹﺿﺎﻓﺔ وﺗﺤﺪﻳﺚ واﺳﱰﺟﺎع اﻟﺒﻴﺎﻧﺎتDML أواﻣﺮ
Data Analysis Table of Contents ﺟﺪول اﻟﻤﺤﺘﻮﻳﺎت SQL for Data Analysis
Aliasing and readability improvements (Aliases) ﺗﺒﺴﻴﻂ اﻷﻛﻮاد ﺑﺎﺳﺘﺨﺪام اﻷﺳﻤﺎء اﻟﻤﺴﺘﻌﺎرة
Data Analysis Table of Contents ﺟﺪول اﻟﻤﺤﺘﻮﻳﺎت SQL for Data Analysis
Module 3: Aggregation, Grouping & Set Operations اﻟﻔﻠﱰة واﻟﻔﺮز واﻟﺮﺑﻂ ﺑﲔ اﻟﺠﺪاول
Aggregation with COUNT, SUM, AVG, MIN, MAX AVG وSUM وCOUNT اﺳﺘﺨﺪام دوال اﻟﺘﺤﻠﻴﻞ ﻣﺜﻞ
Grouping data with GROUP BY and HAVING AVG وSUM وCOUNT اﺳﺘﺨﺪام دوال اﻟﺘﺤﻠﻴﻞ ﻣﺜﻞ
Writing subqueries for deeper analysis ﻛﺘﺎﺑﺔ اﺳﺘﻌﻼﻣﺎت ﻓﺮﻋﻴﺔ ﻟﻠﺤﺼﻮل ﻋﲆ ﺗﺤﻠﻴﻼت أﻋﻤﻖ
Using CASE WHEN for conditional logic ﻟﺘﺼﻨﻴﻒ اﻟﺒﻴﺎﻧﺎت أو ﺑﻨﺎء ﴍوط ﺗﺤﻠﻴﻠﻴﺔCASE WHEN اﺳﺘﺨﺪام
Combining datasets with UNION, دﻣﺞ ﻧﺘﺎﺋﺞ ﻣﺘﻌﺪدة ﺑﺎﺳﺘﺨﺪام
INTERSECT, and EXCEPT EXCEPT وINTERSECT وUNION
Data Analysis Table of Contents ﺟﺪول اﻟﻤﺤﺘﻮﻳﺎت SQL for Data Analysis
Module 4: Final Project – SQL for Data Analysis اﻟﻤﴩوع اﻟﺘﻄﺒﻴﻘﻲ ﻟﺘﺤﻠﻴﻞ اﻟﺒﻴﺎﻧﺎت
Building a complete database for a retail business ﺗﻨﻔﻴﺬ ﻣﴩوع ﺗﺤﻠﻴﻞ ﻣﺒﻴﻌﺎت ﻣﺘﻜﺎﻣﻞ
Writing analytical queries to calculate KPIs (KPIs) إﻧﺸﺎء ﻗﺎﻋﺪة ﺑﻴﺎﻧﺎت ﻛﺎﻣﻠﺔ وﺗﺤﻠﻴﻞ ﻣﺆﴍات اﻷداء
Identifying top products, customers, and regions ً
ﻣﺒﻴﻌﺎ وأﻓﻀﻞ اﻟﻌﻤﻼء واﻟﻤﻨﺎﻃﻖ اﺳﺘﺨﺮاج أﻋﲆ اﻟﻤﻨﺘﺠﺎت
Using subqueries and aggregations in combination دﻣﺞ اﻻﺳﺘﻌﻼﻣﺎت واﻟﺘﺤﻠﻴﻼت ﻟﻠﻮﺻﻮل ﻟﺘﻘﺎرﻳﺮ ﻣﻔﺼﻠﺔ
Exporting data for visualization in Power BI or Excel Excel أوPower BI ﺗﺼﺪﻳﺮ اﻟﻨﺘﺎﺋﺞ ورﺑﻄﻬﺎ ﺑﺄدوات ﻋﺮض اﻟﺒﻴﺎﻧﺎت ﻣﺜﻞ
Module 1
& SQL Foundations
Data Modeling
اﻟﻤﺴﺘﻮى اﻷول:
أﺳﺎﺳﻴــــــــــــــــــــﺎت SQL
01 وﻧﻤــﺬﺟــﺔ اﻟﺒﻴـــــــــــــﺎﻧﺎت
Data Analysis Module 1 - Beginner Level
A file system (like Excel) keeps data in one file. (Excel اﻷﻧﻈﻤﺔ اﻟﲇ ﺑﺘﻌﺘﻤﺪ ﻋﲆ اﻟﻤﻠﻔﺎت )زي
ر.ﺑﺘﺨﺰن اﻟﺒﻴﺎﻧﺎت ﻓﻲ ﻣﻠﻒ واﺣﺪ
A database keeps data in many tables. ،أﻣﺎ ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت ﻓﺒﺘﺨﺰﻧﻬﺎ ﻓﻲ ﺟﺪاول ﻣﺘﻌﺪدة
?Data Repeated ﻓﻲ اﻟﻤﻠﻔﺎت اﻟﺒﻴﺎﻧﺎت ﺑﺘﺘﻜﺮر ،ﻓﻲ اﻟـ DBﻛﻞ ﻣﻌﻠﻮﻣﺔ
Yes No ﺑﺘﺘﺴﺠﻞ ﻣﺮة واﺣﺪة
ﺗﻜﺮار اﻟﺒﻴﺎﻧﺎت؟
?Easy to Search
Not easy Very easy اﻟﺒﺤﺚ ﻓﻲ ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت أﴎع وأﺳﻬﻞ
ﺳﻬﻮﻟﺔ اﻟﺒﺤﺚ؟
?Secure
Not Much Very secure ً
أﻣﺎﻧﺎ ﻗﻮاﻋﺪ اﻟﺒﻴﺎﻧﺎت أﻛﱶ
اﻷﻣـــــﺎن
Data Analysis Module 1 - Beginner Level
Data Modeling means planning how the data will be ﻧﻤﺬﺟﺔ اﻟﺒﻴﺎﻧﺎت ﻣﻌﻨﺎﻫﺎ إﻧﻨﺎ ﺑﻨﺨﻄﻂ إزاي ﻫﻨﺨﺰن اﻟﺒﻴﺎﻧﺎت
stored in the database. .داﺧﻞ ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت
We decide what tables we need, what data goes in وإﻳﻪ اﻷﻋﻤﺪة اﻟﲇ،ﺑﻨﺤﺪد اﻟﺠﺪاول اﻟﲇ ﻫﻨﺤﺘﺎﺟﻬﺎ
each table, and how these tables are connected. . وإزاي ﻫﻨﻌﻤﻞ اﻟﻌﻼﻗﺎت ﺑﻴﻨﻬﻢ،ﻫﺘﻜﻮن ﻓﻴﻬﺎ
Example: Student, Teacher, Course, Product . ﻣﻨﺘﺞ، ﻣﺎدة دراﺳﻴﺔ، ﻣﺪرس، ﻃﺎﻟﺐ:ﻣﺜﺎل
Data Analysis Module 1 - Beginner Level
Attribute اﻟﺨـــــــــــــﺎﺻﻴﺔ
An attribute is a detail or property of an entity. .اﻟﺨﺎﺻﻴﺔ ﻫﻲ اﻟﻤﻌﻠﻮﻣﺔ أو اﻟﺘﻔﺼﻴﻠﺔ اﻟﲇ ﺑﺘﻮﺻﻒ اﻟﻜﻴﺎن
Example: For a Student name, age, email, city. . اﻟﻤﺪﻳﻨﺔ، اﻟﱪﻳﺪ اﻹﻟﻜﱰوﻧﻲ، اﻟﻦﺴ،اﻻﺳﻢ ً
ﻟﻠﻄﺎﻟﺐ:ﻣﺜﻼ
Relationship اﻟﻌــــــــــﻼﻗﺔ
A relationship connects two or more entities, It shows ،اﻟﻌﻼﻗﺔ ﻫﻲ اﻟﺮاﺑﻂ اﻟﲇ ﺑﻴﺼﻞ ﺑﲔ ﻛﻴﺎﻧﲔ أو أﻛﱶ
how data in one table is linked to data in another. ّ
وﺑﻴﻮﺿﺢ إزاي اﻟﺒﻴﺎﻧﺎت ﻓﻲ ﺟﺪول ﻣﻌﲔ ﻣﺮﺗﺒﻄﺔ ﺑﺒﻴﺎﻧﺎت ﻓﻲ
.ﺟﺪول ﺗﺎﻧﻲ
Example: :ﻣﺜـــــﺎل
One-to-One (1:1) One person One ID card ﻛﻞ ﺷﺨﺺ ﻟﻪ ﺑﻄﺎﻗﺔ واﺣﺪة ﻓﻘﻂ
One-to-Many (1:M) One teacher Many students اﻟﻤﺪرس ﻳﺪرس ﻟﻌﺪة ﻃﻼب
We use these relationships to design how ﺑﻨﺴﺘﺨﺪم اﻷﻧﻮاع دي ﻋﻠﺸﺎن ﻧﺼﻤﻢ اﻟﻌﻼﻗﺎت ﺑﲔ
our tables will connect. .اﻟﺠﺪاول ﺑﻄﺮﻳﻘﺔ ﺻﺤﻴﺤﺔ
Data Analysis How Relationships Appear in a Database Module 1 - Beginner Level
In SQL, relationships are created using keys: : اﻟﻌﻼﻗﺎت ﺑﺘﺘﻨﻔﺬ ﺑﺎﺳﺘﺨﺪام اﻟﻤﻔﺎﺗﻴﺢ،SQL ﻓﻲ
Foreign Key: connects one table to another (like student_id inside enrollments)
.( ﻋﻤﻮد ﺑﲑﺑﻂ ﺟﺪول ﺑﺂﺧﺮ )زي رﻗﻢ اﻟﻄﺎﻟﺐ داﺧﻞ ﺟﺪول اﻟﺘﺴﺠﻴﻼت:(Foreign Key) اﻟﻤﻔﺘﺎح اﻷﺟﻨﱯ
Data Analysis Module 1 - Beginner Level
Let’s model a small school database. ﻧﺼﻤﻢ ﻗﺎﻋﺪة ﺑﻴﺎﻧﺎت ﺑﺴﻴﻄﺔ ﻟﻤﺪرﺳﺔ
Each student can join many courses so we add table Enrollments to link them
ﻓﺒﻨﻀﻴﻒ ﺟﺪول اﻟﺘﺴﺠﻴﻼت ﻋﻠﺸﺎن ﻳﺮﺑﻄﻬﻢ ﺑﺒﻌﺾ ﻛﻞ ﻃﺎﻟﺐ ﻣﻤﻜﻦ ﻳﺴﺠﻞ ﻓﻲ أﻛﱶ ﻣﻦ ﻣﻘﺮر
Data Analysis Module 1 - Beginner Level
One record in a table matches only one record in ﻛﻞ ﺳﺠﻞ ﻓﻲ ﺟﺪول ﻣﺮﺗﺒﻂ ﺑﺴﺠﻞ واﺣﺪ ﻓﻘﻂ ﻓﻲ
another table. .ﺟﺪول آﺧﺮ
Example: Each person has one national ID. . ﻛﻞ ﺷﺨﺺ ﻟﻪ ﺑﻄﺎﻗﺔ ﻫﻮﻳﺔ واﺣﺪة ﻓﻘﻂ:ﻣﺜﺎل
One-to-Many (1:M)
One record in a table can be linked to many records in ﺳﺠﻞ واﺣﺪ ﻓﻲ ﺟﺪول ﻣﻤﻜﻦ ﻳﺮﺗﺒﻂ ﺑﻌﺪة ﺳﺠﻼت ﻓﻲ
another table. .ﺟﺪول آﺧﺮ
Example: One teacher teaches many students. . ﻣﺪرس واﺣﺪ ﻳﺪ ّرس ﻟﻌﺪة ﻃﻼب:ﻣﺜﺎل
Many records in one table are linked to many records ﺳﺠﻼت ﻣﺘﻌﺪدة ﻓﻲ ﺟﺪول ﻣﻤﻜﻦ ﺗﻜﻮن ﻣﺮﺗﺒﻄﺔ
in another table. .ﺑﺴﺠﻼت ﻣﺘﻌﺪدة ﻓﻲ ﺟﺪول آﺧﺮ
Example: Students can take many courses, and each واﻟﻤﺎدة، اﻟﻄﺎﻟﺐ ﻣﻤﻜﻦ ﻳﺴﺠﻞ ﻓﻲ أﻛﱶ ﻣﻦ ﻣﺎدة:ﻣﺜﺎل
course has many students. .ﻓﻴﻬﺎ أﻛﱶ ﻣﻦ ﻃﺎﻟﺐ
CREATE TABLE students (
student_id INT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE courses ( STUDENTS (student_id, name)
course_id INT PRIMARY KEY, COURSES (course_id, title)
title VARCHAR(50) ENROLLMENTS (enrollment_id, student_id, course_id)
);
CREATE TABLE enrollments (
enrollment_id INT PRIMARY KEY,
student_id INT,
course_id INT,
FOREIGN KEY (student_id) REFERENCES students(student_id),
FOREIGN KEY (course_id) REFERENCES courses(course_id)
);
Data Analysis Many-to-Many (M:N) Module 1 - Beginner Level
SQL
Type Real-Life Example اﻟﺘﻮﺿﻴﺢ
Implementation
One-to-One Foreign Key in ﻋﻼﻗﺔ ﻓﺮدﻳﺔ
Person ID Card one table
Draw ERD first before writing SQL code. . ﻗﺒﻞ ﻛﺘﺎﺑﺔ اﻷﻛﻮادERD ارﺳﻢ اﻟﻌﻼﻗﺎت ﻋﲆ
To see how tables connect to each other ﻋﻠﺸﺎن ﻧﺸﻮف ﺷﻜﻞ اﻟﻌﻼﻗﺎت ﺑﲔ اﻟﺠﺪاول
To plan data structure before coding ﻋﻠﺸﺎن ﻧﺨﻄﻂ ﻟﱰﻛﻴﺐ اﻟﺒﻴﺎﻧﺎت ﻗﺒﻞ اﻟﺘﻨﻔﻴﺬ
To avoid mistakes and repeating data ﻋﻠﺸﺎن ﻧﺘﻔﺎدى اﻟﺘﻜﺮار واﻷﺧﻄﺎء ﻓﻲ اﻟﺘﺼﻤﻴﻢ
To see how tables connect to each other ﻋﻠﺸﺎن ﻧﺸﻮف ﺷﻜﻞ اﻟﻌﻼﻗﺎت ﺑﲔ اﻟﺠﺪاول
To plan data structure before coding ﻋﻠﺸﺎن ﻧﺨﻄﻂ ﻟﱰﻛﻴﺐ اﻟﺒﻴﺎﻧﺎت ﻗﺒﻞ اﻟﺘﻨﻔﻴﺬ
To avoid mistakes and repeating data ﻋﻠﺸﺎن ﻧﺘﻔﺎدى اﻟﺘﻜﺮار واﻷﺧﻄﺎء ﻓﻲ اﻟﺘﺼﻤﻴﻢ
A teacher can teach many students. ،اﻟﻤﺪرس اﻟﻮاﺣﺪ ﻣﻤﻜﻦ ﻳﺪ ّرس ﻟﻌﺪد ﻛﺒﲑ ﻣﻦ اﻟﻄﻼب
Each student has one teacher. .وﻛﻞ ﻃﺎﻟﺐ ﻳﺨﺺ ﻣﺪرس واﺣﺪ ﻓﻘﻂ
Students can take many courses, and each course وﻛﻞ ﻣﻘﺮر ﻓﻴﻪ،اﻟﻄﻼب ﻣﻤﻜﻦ ﻳﺴﺠﻠﻮا ﻓﻲ أﻛﱰ ﻣﻦ ﻣﻘﺮر
can have many students. .ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻄﻼب
CREATE TABLE students (
student_id INT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE courses (
course_id INT PRIMARY KEY,
title VARCHAR(50)
);
CREATE TABLE enrollments (
enrollment_id INT PRIMARY KEY,
student_id INT,
course_id INT,
FOREIGN KEY (student_id) REFERENCES students(student_id),
FOREIGN KEY (course_id) REFERENCES courses(course_id)
);
Data Analysis Module 1 - Beginner Level
One-to-One Relationship
Many-to-Many (M:N)
CREATE TABLE employees (
emp_id INT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE id_cards (
card_id INT PRIMARY KEY,
issue_date DATE,
emp_id INT UNIQUE,
FOREIGN KEY (emp_id) REFERENCES employees(emp_id)
);
Data Analysis ﻣﻠﺨﺺ ﺑﴫي ﻟﻠﻌﻼﻗﺎت Module 1 - Beginner Level
Visual Summary
Exercise
Create an ERD for a small company system with:
Departments
Employees
Projects
ّ
:ﺻﻤﻢ ﻣﺨﻄﻂ ﻋﻼﻗﺎت ﻟﴩﻛﺔ ﺻﻐﲑة ﺗﺤﺘﻮي ﻋﲆ
اﻷﻗﺴﺎم
اﻟﻤﻮﻇﻔﲔ
اﻟﻤﺸﺎرﻳﻊ
ﺧـــﻄـــــــــــــــﻮات اﻟﺘــﺤـــﻮﻳـــــــــﻞ
Use short, clear table names. .اﺳﺘﺨﺪم أﺳﻤﺎء ﻗﺼﲑة وواﺿﺤﺔ ﻟﻠﺠﺪاول
Draw a simple ERD for a Library System, then convert it into a Relational Schema.
DDL Commands
)(CREATE, ALTER, DROP
CREATE Create a new table or database ﻹﻧﺸﺎء ﻗﺎﻋﺪة ﺑﻴﺎﻧﺎت أو ﺟﺪول ﺟﺪﻳﺪ
USE company_db;
-- Rename a column
ALTER TABLE employees RENAME COLUMN name TO full_name;
-- Delete a column
ALTER TABLE employees DROP COLUMN position;
Data Analysis Module 1 - Beginner Level
We use DROP to delete a table or a database . ﻟﺤﺬف ﺟﺪول أو ﻗﺎﻋﺪة ﺑﻴﺎﻧﺎت ﺑﺎﻟﻜﺎﻣﻞDROP ﺑﻨﺴﺘﺨﺪم
completely.
Be careful! This command removes everything — .اﻧﺘﺒﻪ! ﻷن اﻷﻣﺮ ده ﺑﻴﻤﺴﺢ اﻟﺒﻴﺎﻧﺎت واﻟﺘﺼﻤﻴﻢ ﻣﻊ ﺑﻌﺾ
data and structure.
Let’s build a small database for a store: ﻧﻨﺸﺄ ﻗﺎﻋﺪة ﺑﻴﺎﻧﺎت ﺑﺴﻴﻄﺔ ﻟﻠﻤﺘﺠﺮ
UPDATE students
SET city = 'Makkah'
WHERE student_id = 2;
Data Analysis Module 1 - Beginner Level
This deletes the record of student number 3. . ﻣﻦ اﻟﺠﺪول3 اﻟﻜﻮد ده ﺑﻴﺤﺬف ﺑﻴﺎﻧﺎت اﻟﻄﺎﻟﺐ رﻗﻢ
Thank You
Contact Inside Egypt: +201022301728 management@[Link]