پايگاه داده ها.

Slides:



Advertisements
Similar presentations
SQL Rohit Khokher.
Advertisements

Database Languages Chapter 7. The Relational Algebra.
Unit 5 The Network Model  5.1 The Network Model  5.2 IDMS.
BACS 485—Database Management Advanced SQL Overview Advanced DDL, DML, and DCL Commands.
Basic SQL Introduction Presented by: Madhuri Bhogadi.
Chapter 3 An Introduction to Relational Databases.
SQL components In Oracle. SQL in Oracle SQL is made up of 4 components: –DDL Data Definition Language CREATE, ALTER, DROP, TRUNCATE. Creates / Alters.
Murali Mani SQL DDL and Oracle utilities. Murali Mani Datatypes in SQL INT (or) INTEGER FLOAT (or) REAL DECIMAL (n, m) CHAR (n) VARCHAR (n) DATE, TIME.
Structured Query Language Chapter Three DAVID M. KROENKE’S DATABASE CONCEPTS, 2 nd Edition.
Introduction Chapter 1. Reference Book  Database Systems Thomas Connolly, Carolyn Begg, Anne Strachan Addison-Wesley 1999 ISBN:
SQL Basics. SQL SQL (Structured Query Language) is a special-purpose programming language designed from managing data in relational database management.
Database Systems Lecture # 8 11 th Feb,2011. The Relational Model of Data The term relation is basically just a mathematical term for a table. DBMS products.
Data Manipulation 11 After this lecture, you should be able to:  Understand the differences between SQL (Structured Query Language) and other programming.
6.8 Case Study: E-R for Supplier-and-Parts Database
3-1 Unit 3 The Relational Model. 3-2 Wei-Pang Yang, Information Management, NDHU Outline  3.1 Introduction  3.2 Relational Data Structure  3.3 Relational.
4B-1 Wei-Pang Yang, Information Management, NDHU Introduction to Database CHAPTER 4B ( 補 ) DB2 and SQL  Overview  Data Definition  Data Manipulation.
Logical Database Design ( 補 ) Unit 7 Logical Database Design ( 補 )
SQL (Chapter 2: Simple queries; Chapter 7 and 8: Nested and DML queries) Many of the examples in this document are based on the tables in the next slide.
Chapter 10 Views. Topics in this Chapter What are Views For? View Retrievals View Updates Snapshots SQL Facilities.
SQL SQL Server : Overview SQL : Overview Types of SQL Database : Creation Tables : Creation & Manipulation Data : Creation & Manipulation Data : Retrieving.
Further Normalization I
1-1 Homework 3 Practical Implementation of A Simple Rational Database Management System.
Quick review of SQL And conversion to Oracle SQL.
Data Definition After this lecture, you should be able to:
Nitin Singh/AAO RTI ALLAHABAD 1 SQL Nitin Singh/AAO RTI ALLAHABAD 2 OBJECTIVES §What is SQL? §Types of SQL commands and their function §Query §Index.
SQL: DDL. SQL Statements DDL - data definition language –Defining and modifying data structures (metadata): database, tables, views, etc. DML - data manipulation.
BIS Database Systems School of Management, Business Information Systems, Assumption University A.Thanop Somprasong Chapter # 7 Introduction to Structured.
Data Manipulation 21 After this lecture, you should be able to:  Use SQL SELECT statement effectively to retrieve the data from multiple related tables.
SQL Basics. What is SQL? SQL stands for Structured Query Language. SQL lets you access and manipulate databases.
Unit 5 The Network Model  5.1 Data Modeling Issues  5.2 The Network Model  5.3 IDMS.
Algebra1 After this lecture, you should be able to:  Understand the differences between SQL (Structured Query Language) and Relational Algebra expressions.
DBSQL 5-1 Copyright © Genetic Computer School 2009 Chapter 5 Structured Query Language.
Database Fundamental & Design by A.Surasit Samaisut Copyrights : All Rights Reserved.
Chapter 4 An Introduction to SQL. Copyright © 2004 Pearson Addison-Wesley. All rights reserved.4-2 Topics in this Chapter SQL: History and Overview The.
1/18/00CSE 711 data mining1 What is SQL? Query language for structural databases (esp. RDB) Structured Query Language Originated from Sequel 2 by Chamberlin.
Perform DFS from A A B C D E F G. Perform BFS from A A B C D E F G.
An Introduction to SQL For CS Overview of SQL  It is the standard language for relational systems, although imperfect  Supports data definition.
1 Announcements Reading for next week: Chapter 4 Your first homework will be assigned as soon as your database accounts have been set up.  Expect an .
Unit 2 DB2 and SQL. 2-2 Wei-Pang Yang, Information Management, NDHU Outline of Unit Overview 2.2 Data Definition 2.3 Data Manipulation 2.4 The System.
Relational Database Management System(RDBMS) Structured Query Language(SQL)
Introduction to Database SEM I, AY Department of Information Technology Salalah College of Technology Chapter No.3 SQL.
Views Prof. Yin-Fu Huang CSIE, NYUST Chapter 10. Advanced Database System Yin-Fu Huang 10.1Introduction Example: Var Good_Supplier View (S Where Status.
SQL: Structured Query Language It enables to create and operate on relational databases, which are sets of related information stored in tables. It is.
Chapter 4 An Introduction to SQL. Copyright © 2004 Pearson Addison-Wesley. All rights reserved.4-2 Topics in this Chapter SQL: History and Overview The.
Structured Query Language IV Asma Ahmad (C. J. Date) Database Systems.
Chapter 4 An Introduction to SQL.
Structured Query Language
SQL Query Getting to the data ……..
STRUCTURE OF PRESENTATION :
Lecture 3 : Structured Query Language (SQL)
The Basics of Data Manipulation
Unit 2 DB2 and SQL.
Chapter 8 Relational Calculus.
Introduction to Database
Introduction to Database
The Basics of Data Manipulation
Φροντιστήριο SQL (από το βιβλίο του Date)
مقدمة في قواعد البيانات
Database systems Lecture 3 – SQL + CRUD
SQL Fundamentals in Three Hours
SQL-1 Week 8-9.
Unit 7 Normalization (表格正規化).
Session - 6 Sequence - 1 SQL: The Structured Query Language:
Contents Preface I Introduction Lesson Objectives I-2
STRUCTURE OF PRESENTATION :
SQL: Structured Query Language
Question 1: Basic Concepts (45 %)
DATABASE Purpose of database
STRUCTURE OF PRESENTATION :
INTRODUCTION A Database system is basically a computer based record keeping system. The collection of data, usually referred to as the database, contains.
Presentation transcript:

پايگاه داده ها

سرفصلها مفاهيم اصلي پايگاه داده ها: ( تعريف پايگاه داده ها، محاسن و معايب، سازمان داده ها، مقايسه پايگاههاي داده، عناصر اصلي محيط پايگاه داده و ... ) آشنايي با زبان SQL. مراحل طراحي بانک اطلاعاتي. ساير موضوعات مرتبط: ( حفاظت، پشتيباني، وساير موضوعات پيشرفته )

مروري بر سيستم مديريت پايکاه داده ها يک سيستم پايگاه داده چيزي جز يک سيستم کامپيوتري براي نگهداري رکوردها نيست. بانک اطلاعاتي را مي توان يک کشوي فايلينگ الکترونيکي در نظر گرفت. کاربر چنين سيستمي مي تواند اعمالي روي اين فايلها از قبيل : 1. اضافه کردن پرونده هاي جديد خالي. 2. وارد کردن داده هاي جديد به پرونده هاي موجود. 3. بازيابي داده ها از پرونده هاي موجود.

دستورات SQL ايجاد يک جدول جديد CREATE TABLE وارد کردن داده ها در جدول INSERT بازيابي اطلاعات SELECT به هنگام سازي اطلاعات UPDATE حذف داده ها از جدول DELETE حذف يک جدول DROP TABLE

مثالهايي ازدستورات SQL 1. افزودن INSERT INTO parts VALUES(’12’,’P15’,’ALI’,1376,20,’’); 2. انتخاب SELECT name,code,producer FROM parts WHERE Year=1372; 3. ويرايش داده UPDATE parts SET Quantity=60 WHERE Year=1372; 4. حذف يک رکورد DELETE FROM parts WHERE Code=2;

INSERT INTO parts VALUES(’12’,’P15’,’ALI’,1376,20,’’); خروجي دستور اول جدول قطعات بعد از اجراي دستور : جدول قطعات قبل از اجراي دستور : توضيحات تعداد سال توليد سازنده نام کد Code Name Producer Year Quantity Comment 1 P1 Ali 1380 100 - - - - INSERT INTO parts VALUES(’12’,’P15’,’ALI’,1376,20,’’); 2 P2 Ali 1368 55 By Support 5 P3 Hassan 1372 80 - - - - 10 P6 Reza 1381 85 - - - - 11 P9 Hassan 1369 40 By Support 12 P15 Ali 1376 20 - - - -

خروجي دستور دوم Name Code Producer P3 5 Hassan SELECT Name,Code,Producer FROM parts WHERE Year=1372; Name Code Producer P3 5 Hassan

خروجي دستور سوم جدول قطعات بعد از اجراي دستور : جدول قطعات قبل از اجراي دستور : توضيحات تعداد سال توليد سازنده نام کد Code Name Producer Year Quantity Comment 1 P1 Ali 1380 100 - - - - 2 P2 Ali 1368 55 By Support 5 P3 Hassan 1372 80 - - - - 60 UPDATE parts SET Quantity=60 WHERE Year=1372; 10 P6 Reza 1381 85 - - - - 11 P9 Hassan 1369 40 By Support 12 P15 Ali 1376 20 - - - -

خروجي دستور چهارم جدول قطعات بعد از اجراي دستور : DELETE parts FROM parts WHERE Code=2; خروجي دستور چهارم جدول قطعات بعد از اجراي دستور : جدول قطعات قبل از اجراي دستور : توضيحات تعداد سال توليد سازنده نام کد Code Name Producer Year Quantity Comment 1 P1 Ali 1380 100 - - - - 2 P2 Ali 1368 55 By Support 12 P15 Ali 1376 20 - - - - 5 P3 Hassan 1372 60 - - - - 10 P6 Reza 1381 85 - - - - 11 P9 Hassan 1369 40 By Support

يک سيستم بانک اطلاعاتي چيست؟ يک سيستم کامپيوتري است که هدف اصل آن نگهداري اطلاعات و ارائه آنها طبق نياز است. اطلاعات هر چيز مهم براي شخص يا سازمان مربوطه است.

اجزاء يک سيستم مديريت پايگاه داده ها Database Management System (DBMS) 3. کاربران. 1. داده ها. 4.سخت افزار. 2. نرم افزار. يشپ DataBase 1 2 3 برنامه هاي کاربردي کاربران جدول ها

کاربران الف : برنامه نويسان سيستم هاي کاربردي .( Application Programers) ب : کاربران نهايي ( End Users ). ج : مدير بانک اطلاعاتي ( Database Administrator ).

چرا از بانک اطلاعاتي بجاي سيستم دستي استفاده مي کنيم؟ 1. فشردگي. 2. سرعت. 3. انجام کارهاي مکانيکي و غير فکري توسط کامپيوتر. 4. به هنگام ( Update ) بودن. 5.کنترل مرکزي روي داده ها.

مزاياي بانک اطلاعاتي نسبت به سيستم فايل اشتراک داده ها ( Data Sharing) داده ها بين چندين کاربر به اشتراک گذاشته مي شوند، به جاي اينکه کپي هاي متعددي از داده ها ايجاد شود (يعني افزونگي به وجود آيد) کاهش افزونگي (تکرار) داده ها (Redundancy) با به اشتراک گذاري داده ها ، تکرار به حداقل مي رسد ولي هيچوقت به دلايل تکنيکي کاملا از بين نمي رود. ولي در هر صورت بايد هميشه در رابطه با به هنگام کردن تمام موارديکه به صورت تکراري هستند دقت شود. کاهش ناسازگاري داده ها (Inconsistency) اين مساله نتيجه نکته قبلي مي باشد يعني با کاهش افزونگي ناسازگاري هم به حداقل خواهد رسيد. به عبارت ديگر اگر داده هاي تکراري وجود داشت باشد ممکن است يکي از آنها تغيير کند ولي ديگري به هر علتي تغيير نکند و ناسازگاري بين کپي هاي متعدد داده ها به وجود آيد. همچنين اگر تکرار داده ها وجود داشت ولي به وسيله بانک اطلاعاتي کنترل مي شد، مطمئن مي شديم که تغيير در يکي باعث بروز تغيير در ديگري هم شود.

مزاياي بانک اطلاعاتي نسبت به سيستم فايل پشتيباني از تراکنش (Transaction Processing) تراکنش واحد منطقي کار است و معمولا حاوي چند عمل بانک اطلاعاتي است(مثلا چند عمل به هنگام سازي). يک مثال عبارت است از انتقال مبلغي از حساب A به حساب B . بديهي است دو عمل به هنگام سازي بايد انجام شود، يکي براي کم کردن ازحساب A و ديگري براي اضافه کردن به حسابB. اگرکاربر بگويد که اين دو به هنگام سازي بخشي از يک تراکنش هستند، سيستم مي تواند تضمين کند که يا هر دو انجام مي شوند يا هيچکدام انجام نمي شوند، حتي اگر سيستم در اجراي فرايند از کار بيفتد( مثلا به دليل قطع برق). دستورات تراکنش: BeginTrans : شروع تراکنش Commit : خاتمه موفقيت آميز تراکنش و نهايي شدن تغييرات Rollback : اتمام تراکنش و برگشت تغييرات انجام شده روي داده ها به حالت قبل از شروع تراکنش

مزاياي بانک اطلاعاتي نسبت به سيستم فايل جامعيت (يکپارچگي ، صحت ) داده ها (Data Integrity) جامعيت داده ها به اين معناست که مطمئن شويم داده ها در بانک اطلاعات به صورت صحيح هستند.حتي در صورت حذف افزونگي باز ممکن است بانک اطلاعات داراي داده هاي صحيح نباشد. جامعيت داده هم بايد در داخل هر جدول به تنهايي بررسي شود مثلا اگر ساعت کارکرد يک کارمند در هفته 400 ساعت باشد(به جاي 40 ساعت) که به اين قاعده اول جامعيت مي گويند و همچنين بايد در ارتباط جداول با يکديگر بررسي شود (قاعده دوم جامعيت) مثلا محل کار يک کارمند در جدول اطلاعات کارمندان دپارتمان D9 مشخص شده باشد ولي چنين دپارتماني در جدول مشخصات دپارتمانها وجود نداشته باشد. اين مي تواند به وسيله مکانيزمهاي چک کردن جامعيت هنگام ورود يا به هنگام سازي داده ها کنترل شود.

مزاياي بانک اطلاعاتي نسبت به سيستم فايل امنيت (Security) تعريف محدوديتهاي امنيتي(Permission) به صورتي که دسترسي به داده هاي حساس فقط از کانالهاي مشخص و توسط کاربران مشخصي صورت گيرد.همچنين رمزنگاري داده ها(Encryption) تضاد (برخورد) نيازمنديها موازنه ميشود. با توجه به اينکه کاربران مختلف نيازمنديهاي دسترسي متفاوتي به بانک اطلاعاتي دارند و اين نيازمنديها ممکن با هم تضاد داشته باشند( مثلا چندين کاربر در يک زمان بخواهند گزارشات پيچيده اي از سيستم بگيرند) ، مدير بانک اطلاعات که از نيازها و اولويتهاي سازمان با خبر است بانک اطلاعاتي را به صورتي تنظيم مي کند که به کاربران با اولويت بالاتر سرويس بهتري داده شود. استاندارد سازي امکان پذير مي شود. ذخيره سازي و نمايش داده ها با توجه به استانداردهاي مورد نظر انجام شود. استاندارد سازي ذخيره سازي به تبادل داده ها کمک مي کند و استاندارد سازي نامگذاري ، نمايش و مستند سازي داده ها براي اشتراک و قابليت درک داده ها مفيد است.

مزاياي بانک اطلاعاتي نسبت به سيستم فايل استقلال داده ها (Data Independence) استقلال داده ها به معناي مصونيت برنامه هاي کاربردي نسبت به تغيير نمايش فيزيکي و تکنيکهاي دستيابي است. برنامه هاي کاربردي که ازDBMS استفاده نمي کنند وابسته به داده ها هستند. يعني روش قرار گرفتن داده ها در فايلها و همچنين تکنيکهاي لازم براي بازيابي آنها وابسته به نيازمنديهاي آن نرم افزار خاص است. به عبارت ديگر دانش مربوط به روش سازماندهي داده ها و تکنيکهاي دسترسي به داده ها در داخل منطق و کد برنامه قرار دارد. معماري خاص پايگاه داده ها (که بعدا بررسي خواهد شد) به اين مساله کمک مي کند.

SQL(Standard Query Language) Interactive SQL (محاوره اي) Embedded SQL (درج شده) SQL ويرايش هاي SQL: SQL 89 , SQL 92 , SQL 98 , SQL 2003 , SQL 2005 , SQL 2008

دستورات SQL به سه بخش تقسيم مي شوند: بخش تعريف داده ها(DDL) بخش كار با داده ها(DML) بخش دستورات كنترلي(DCL)

1. بخش تعريف داده ها (Data Definition Language) (DDL) CREATE ALTER دستوري جهت ايجاد TABLE و INDEX و VIEW ALTER دستوري جهت تغيير ساختار TABLE و INDEX و VIEW DROP دستوري جهت حذف TABLE و INDEX و VIEW

2. بخش كار با داده ها SELECT INSERT UPDATE DELETE (Data Manipulation Language) (DML) SELECT دستوري جهت بازيابي اطلاعات از بانك اطلاعاتي INSERT دستوري جهت ورود اطلاعات به بانك اطلاعاتي UPDATE دستوري جهت بهنگام سازي اطلاعات در بانك اطلاعاتي DELETE دستوري جهت حذف اطلاعات از بانك اطلاعاتي

3. بخش دستورات كنترلي (Data Control Language) (DCL) GRANT REVOKE اختصاص دسترسي به جداول و ساير عناصر پايگاه داده به كاربران REVOKE گرفتن دسترسي به جداول و ساير عناصر پايگاه داده از كاربران

دستور Create Table شکل کلي دستور Create Table : CREATE TABLE base-table ( column-definition[,column-definition]…. [,primary-key-definition] [,foreign-key-definition [,foreign-key-definition]…] );

دستور Create Table NotNull: هنگام وارد کردن اطلاعات بايد مقداردهي شود. کليد اوليه( Primary Key): فيلد ي (ترکيبي از فيلدها) است که مقاديررکوردهاي جدول در آن يکتا هستند . روي اين فيلد ايندکس ايجاد مي شود و رکوردهاي جدول بر اساس آن مرتب نمايش داده مي شوند. تعريف کليد اوليه يکي از راه هاي برقراري جامعيت داده ها (Integrity) است. (قاعده اول جامعيت) کليد خارجي( Foreign Key ): فيلدي که در جدول ديگر کليد اوليه است . با استفاده از اين کليد جامعيت داده ها (Integrity)چک مي شود.(قاعده دوم جامعيت). به اين نوع جامعيت داده ها، جامعيت ارجاعي(Referential Integrity ) نيزمي گويند.

مثالي از ايجاد جدول Sname CHAR(20) NOT NULL Status SMALLINT NOT NULL CREATE TABLE s (s# CHAR(5) NOT NULL Sname CHAR(20) NOT NULL Status SMALLINT NOT NULL City CHAR(15) NOT NULL PRIMARY KEY (s#) ); S Table: City Status Sname S# London 20 Smith S1 Paris 10 Jones S2 30 Blake S3 Clark S4 Athens Adams S5 جهت ساختن كليداوليه

مثالي ديگر از ايجاد جدول CREATE TABLE p (p# CHAR(6) NOT NULL Pname CHAR(20) NOT NULL Color CHAR(6) NOT NULL Weight SMALLINT NOT NULL City CHAR(15) NOT NULL PRIMARY KEY (p#) ); P Table: City Weight Color Pname P# London 12 Red Nut P1 Paris 17 Green Bolt P2 Rome Blue Screw P3 14 P4 Com P5 19 Cog P6

مثالي ديگر از ايجاد جدول Table: sp Qty P# S# 300 P1 S1 200 P2 400 P3 P4 100 P5 P6 S2 S3 S4 CREATE TABLE sp (s# CHAR(5) NOT NULL, p# CHAR(6) NOT NULL, Qty INTEGER NOT NULL, PRIMARY KEY (s# , p#), FOREIGN KEY (s#) REFERENCES s, FOREIGN KEY (p#) REFERENCES p ); جهت برقراري جامعيت ارجاعي

ايجاد Foriegn Key توسط Access Tools  Relationships

ايجاد Foreign Key توسط Access Enforce Referential Integrity: برقراري جامعيت( صحت) داده ها. Cascade Update Related Fields: در صورت تغيير يک فيلد ارتباطي در يک رکورد، فيلد مرتبط در تمام جدولها بروز رسانده مي شوند. Cascade Delete Related Records: در صورت حذف شدن يک رکورد، رکوردهاي مرتبط در تمام جدولها حذف مي شوند.

اضافه نمودن فيلد به جدول ALTER TABLE s ADD Discount SMALLINT; دستور بالا جهت اضافه نمودن فيلد Discount به جدول s مي باشد.

حذف نمودن جدول DROP TABLE s; دستور بالا جهت حذف نمودن جدول s مي باشد.

شكل كلي دستور SELECT SELECT [DISTINCT] item(s) FROM table(s) جلوگيري از سطرهاي تكراري در خروجي مي تواند مقادير ثابت ، نام فيلد و يا فرمول باشد SELECT [DISTINCT] item(s) FROM table(s) [WHERE condition] ايجاد شرط روي ركوردهاي خروجي [GROUP BY field(s)] جهت گروهبندي روي ركوردهاي خروجي [HAVING condition] ايجاد شرط روي گروههاي خروجي [ORDER BY field(s)]; جهت تنظيم ترتيب خروجي

مثالي از دستور SELECT SELECT s#,Status FROM s WHERE City=‘Paris’; S Table: City Status Sname S# London 20 Smith S1 Paris 10 Jones S2 30 Blake S3 Clark S4 Athens Adams S5 S Table: Status S# 10 S2 30 S3

مثالي ديگر از دستور SELECT Table: sp Qty P# S# 300 P1 S1 200 P2 400 P3 P4 100 P5 P6 S2 S3 S4 Table: sp P# P1 P2 P3 P4 P5 P6 SELECT p# FROM sp;

مثالي ديگر از دستور SELECT Table: sp Qty P# S# 300 P1 S1 200 P2 400 P3 P4 100 P5 P6 S2 S3 S4 SELECT DISTINCT p# FROM sp; Table: sp P# P1 P2 P3 P4 P5 P6

مثالي ديگر از دستور SELECT SELECT s# FROM s WHERE City=‘Paris’ AND Status>20; کد فروشندگان پاريسي که اعتبارشان بيشتر از 20 است S Table: City Status Sname S# London 20 Smith S1 Paris 10 Jones S2 30 Blake S3 Clark S4 Athens Adams S5 S Table: S# S3

QUERY SELECT [S#], Status FROM S WHERE City="Paris"; Q2 S# Status S2 20 S3 30

QUERY حالت Design View براي Q2

QUERY SELECT S# , Status FROM S ORDER BY Status DESC; Q5 S# Status S5 30 S3 S4 20 S2 S1

مثالي ديگر از دستور SELECT FROM s; S Table: City Status Sname S# London 20 Smith S1 Paris 10 Jones S2 30 Blake S3 Clark S4 Athens Adams S5 S Table: City Status Sname S# London 20 Smith S1 Paris 10 Jones S2 30 Blake S3 Clark S4 Athens Adams S5

Join Query يک (Query) SELECT از چند جدول را Jion Query مي گويند.

City Status Sname S# Qty P# S# S Table: City Status Sname S# London 20 Smith S1 Paris 10 Jones S2 30 Blake S3 Clark S4 Athens Adams S5 Table: sp Qty P# S# 300 P1 S1 200 P2 400 P3 P4 100 P5 P6 S2 S3 S4 P Table: City Weight Color Pname P# London 12 Red Nut P1 Paris 17 Green Bolt P2 Rome Blue Screw P3 14 P4 Com P5 19 Cog P6

Join Queries (تركيبي) SELECT s.* , p.* FROM s,p WHERE s.city = p.city; Weight Color Pname P# S.City Status Sname S# London 12 Red Nut P1 20 Smith S1 13 Screw P4 19 Cay P6 Paris 17 Green Bolt P2 10 Jones S2 Blue Cam P5 30 Blake S3 Clark S4 14 Coy تركيب اطلاعات فروشندگان و قطعات به صورتي كه فروشنده و قطعه در يك شهر باشد.

Join Query SELECT S.[S#],P.[P#] FROM S,P WHERE S.City = P.City; روش اول SELECT S.[S#],P.[P#] FROM S INNER JOIN P ON S.City = P.City; روش دوم

مثالي ديگر از Join SELECT s.s# , p.p# FROM s,p WHERE s.city > p.city P# S# P1 S2 P4 P6 S3 كد فروشنده و كد قطعه در صورتي كه شهر فروشنده از شهر قطعه بزرگتر باشد. ( از لحاظ مقايسه ي رشته ها )

توابع تجمعي (Aggregate) (تعداد) COUNT (مجموع) SUM (ميانگين) AVG (حداكثر) MAX (حداقل) MIN

مثالهايي از توابع AGGREGATE نمايش تعداد فروشندگان (تعداد رکوردهاي جدول S ) SELECT Count(*) FROM S; Count(*) 5

مثالهايي از توابع AGGREGATE تعداد فروشندگاني که قطعه P2 را فروخته اند: SELECT Count(*) FROM SP WHERE [P#]='P2'; Count(*) 4

مثالهايي از توابع AGGREGATE مجموع فروش قطعه P2: SELECT SUM(QTY) FROM SP WHERE [P#]='P2'; SUM(QTY) 1000

مثال از توابع تجمعي (Aggregate) SELECT COUNT(DISTINCT S#) FROM SP نمايش تعداد فروشندگاني قطعه اي را فروخته اند (4)

Queryهاي گروه بندي شده مجموع فروش هر قطعه : SELECT [P#],SUM(QTY) FROM SP GROUP BY [P#]; P# SUM(QTY) P1 600 P2 1000 P3 400 P4 500 P5 P6 100

City Status Sname S# Qty P# S# S Table: City Status Sname S# London 20 Smith S1 Paris 10 Jones S2 30 Blake S3 Clark S4 Athens Adams S5 Table: sp Qty P# S# 300 P1 S1 200 P2 400 P3 P4 100 P5 P6 S2 S3 S4 P Table: City Weight Color Pname P# London 12 Red Nut P1 Paris 17 Green Bolt P2 Rome Blue Screw P3 14 P4 Com P5 19 Cog P6

Queryهاي گروه بندي شده با Having مجموع فروش هر قطعه براي قطعاتي که مجموع فروششان بيشتر از 100 است : SELECT [P#],SUM(QTY) FROM SP GROUP BY [P#] HAVING SUM(QTY)>100; P# SUM(QTY) P1 600 P2 1000 P3 400 P4 500 P5 P6 100

توابع ديگرSQL اطلاعات فروش به صورتي که حرف اول نام فروشنده ‘S’ باشد: SELECT S.* FROM S WHERE S.Sname LIKE "S%"; S# SName Status City S1 Smith 20 London

توابع ديگرSQL فيلد Status مقدار دهي نشده باشد: SELECT S.* FROM S WHERE Status IS NULL يا IS NULL(Status); S# SName Status City Status = NULL

زير QUERY ( SUB QUERY ) خارجي محاسبه مي شودQuery داخلي و سپس SubQuery هاي تودر تو ، ابتدا Query - در IN - اپراتور چک کردن عضويت در يک مجموعه از مقادير است SELECT SName FROM S WHERE [S#] IN ( SELECT [S#] FROM SP WHERE P#="P2"); SName Smith Jones Blake Clark را فروخته اند P2 کد فروشندگاني که قطعه (‘s1’,’s2’,’s3’,’s4’) نام فروشندگاني که قطعه P2 را فروخته اند

زير QUERY ( SUB QUERY ) مثال قبل بدون استفاده از زير Query (با Join) SELECT SName FROM S,SP WHERE S.[S#]=SP.[S#] AND SP.[P#]="P2"; SName Smith Jones Blake Clark نکته: تمام Join Query ها را با Sub Query نيز مي توان نوشت ولي عکس آن هميشه صادق نيست

زير QUERY ( SUB QUERY ) نام فروشندگاني که قطعه اي با رنگ قرمز را فروخته اند SELECT SName FROM S WHERE [S#] IN (SELECT [S#] FROM SP WHERE [P#] IN ( SELECT [P#] FROM P WHERE COLOR="Red")); SName Smith Jones Clark

زير QUERY ( SUB QUERY ) مثال قبل بدون استفاده از زير Query SELECT DISTINCT SName FROM S,SP,P WHERE S.[S#]=SP.[S#] AND SP.[P#]=P.[P#] AND P.COLOR="Red"; SName Smith Jones Clark

زير QUERY ( SUB QUERY ) کد فروشندگاني که با S1 همشهري هستند SELECT [S#] FROM S WHERE City = (SELECT City FROM S WHERE [S#]="S1"); S# S1 S4

نکته: زير QUERY ( SUB QUERY ) وقتي که در Sub Query از ( < , > <> , <= , >=)استفاده مي کنيم Query داخلي بايد فقط يک مقدار را برگرداند.

زير QUERY ( SUB QUERY ) که فروشندگاني که اعتبارشان کمتر از بيشترين مقدار اعتبار فروشندگان است . Select s# From s Where status < ( select max ( status) From s); S# S1 S2 S4

زير QUERY ( SUB QUERY ) = نام فروشندگاني که قطعه P2 را فروخته اند : SELECT SName FROM S WHERE EXISTS (SELECT * FROM SP WHERE [s#]=S.[S#] AND [P#]="P2" ); SName Smith Jones Blake Clark

زير QUERY ( SUB QUERY ) نکاتي درمورد Exists: اگر دستور Select بعد از Exists بتواند Join شود ( رکوردي را برگرداند و شرط ذکر شده صادق باشد ) مقدار Exists درست (True ) خواهد شد. اگر دستور Select بعد از Exists هيچ رکوردي را برنگرداند مقدار Exists غلط ( False ) مي شود. وقتي Exists بکار مي بريم در Select بعدي به جاي نام فيلد ، * مي آيد و شرط JOIN هم استفاده مي شود .(وقتي از IN استفاده مي کنيم درSelect بعدي نام فيلد استفاده شده و نيازي هم به JOIN نيست) وقتي از Exists استفاده مي کنيم براي ترجمه فارسي از بالا به پايين حرکت مي کنيم

زير QUERY ( SUB QUERY ) نام فروشندگاني که قطعه P2 را فروخته اند ( به 3 شکل) SELECT SName FROM S,SP WHERE S.[S#]=SP.[S#] AND SP.[P#]="P2"; SELECT SName FROM S WHERE [S#] IN )SELECT [S#] FROM SP WHERE SP.[P#]="P2"); SELECT SName FROM S WHERE EXISTS (SELECT * FROM SP WHERE SP.[S#]=S.[S#] AND SP.[P#]="P2" );

زير QUERY ( SUB QUERY ) نام فروشندگاني که قطعه P2 را فروخته اند : SELECT SName FROM S WHERE [S#] IN (SELECT [S#] FROM SP WHERE [P#]="P2" ); نام فروشندگاني که قطعه P2 را نفروخته اند : SELECT SName FROM S WHERE [S#] NOT IN (SELECT [S#] FROM SP WHERE [P#]="P2" ); SName Adams

زير QUERY ( SUB QUERY ) نام فروشندگاني که قطعه P2 را فروخته اند : SELECT SName FROM S WHERE EXISTS (SELECT * FROM SP WHERE [S#]=S.[S#] AND [P#]="P2" ); نام فروشندگاني که قطعه P2 را نفروخته اند : SELECT SName FROM S WHERE NOT EXISTS (SELECT * FROM SP WHERE [S#]=S.[S#] AND [P#]="P2" ); SName Adams

زير QUERY ( SUB QUERY ) = نام فروشندگاني که تمام قطعات را فروخته اند نام فروشندگاني که وجود ندارد قطعه اي که وجود ندارد فروشي توسط آن فروشنده براي آن قطعه = نام فروشندگاني که وجود ندارد قطعه اي که آن را نفروخته اند = نام فروشندگاني که تمام قطعات را فروخته اند SELECT SNAME FROME S WHERE NOT EXISTS ) SELECT * FROM P WHERE NOT EXISTS ( SELECT * FROM SP WHERE SP.S# = S. S# AND SP.P# = P.P #)); SName Smith نکته: اين Query را با Not IN نمي توان نوشت

اجتماع دو SELECT کد قطعاتي که وزنشان بيشتر از 16 است يا توسط فروشنده S2 فروخته شده اند SELECT [P#] FROM P WHERE Weight >16 UNION SELECT [P#] FROM SP WHERE [S#]= "S2" ; P# P2 P3 P6 P# P1 P2 P3 P6 P# P1 P2

اجتماع دو SELECT نکته: زماني از اجتماع ( UNION ) استفاده مي کنيم که در صورت مسئله به کلمه ( يا ) برخورد کنيم اشتراک دو مجموعه از مقادير توسط JOIN صورت مي گيرد: کد قطعاتي که وزنشان بيشتر از 16 است و توسط فروشنده S2 فروخته شده اند: SELECT P# FROM P,SP WHERE P.P#=SP.P# AND P.Weight > 16 AND SP.S# = “S2”; P# P2

دستور UPDATE شکل کلي دستور Update : UPDATE table SET field=scalar_expression [WHERE condition]; Scalar_expression : عبارتي که از مقادير ثابت و يا فيلدها تشکيل شده است

دستور UPDATE به وزن قطعه P2 5 واحد اضافه کرده و رنگ آنرا به زرد تغيير مي دهد UPDATE P SET Color= "Yellow" , Weight=Weight+5 WHERE [P#]= "P2" ; P# PName Color Weight City P1 Nutt Red 12 London P2 Bolt Green 17 Paris P3 Screw Blue Rome P4 Crew 14 P5 Cam blue P6 cage P# PName Color Weight City P1 Nutt Red 12 London P2 Bolt Yellow 22 Paris P3 Screw Blue 17 Rome P4 Crew 14 P5 Cam blue P6 cage

دستور UPDATE اعتبار فروشندگان لندني را دو برابر مي کند UPDATE S SET Status=Status*2 WHERE City= "London" ; S# SName Status City S1 Smith 40 London S2 Jones 20 Paris S3 Black 30 S4 Clarck S5 Adams Athens S# SName Status City S1 Smith 20 London S2 Jones Paris S3 Black 30 S4 Clarck S5 Adams Athens

دستور Insert افزودن يک رکورد به جدول P INSERT INTO P ([P#],CITY,WEIGHT) VALUES ("P7 "," Athens ",24); P# PName Color Weight City P1 Nutt Red 12 London P2 Bolt Yellow 22 Paris P3 Screw Blue 17 Rome P4 Crew 14 P5 Cam blue P6 Cage P7 24 Athens P# PName Color Weight City P1 Nutt Red 12 London P2 Bolt Yellow 22 Paris P3 Screw Blue 17 Rome P4 Crew 14 P5 Cam blue P6 cage

دستور Insert افزودن يک رکورد به جدول P INSERT INTO P VALUES ("P8 ", "Sprocket", "Pink",14, "Nice"); P# PName Color Weight City P1 Nutt Red 12 London P2 Bolt Yellow 22 Paris P3 Screw Blue 17 Rome P4 Crew 14 P5 Cam blue P6 cage P7 24 Athens P8 Sprocket Pink Nice P# PName Color Weight City P1 Nutt Red 12 London P2 Bolt Yellow 22 Paris P3 Screw Blue 17 Rome P4 Crew 14 P5 Cam blue P6 Cage P7 24 Athens

دستور Insert افزودن يک رکورد به جدول P INSERT INTO SP ([S#],[P#],QTY) VALUES ("S20", "P20", 1000); خطا مي دهدزيرا به علت تعريف کليد خارجي ( (Referential Integrity فيلد S# با جدول S در ارتباط است و رکورد S20 در جدولS وجود ندارد.

دستور Insert افزودن يک رکورد به جدول با استفاده از Sub Query CREATE TABLE Temp ( P# Char(6) Not Null, TotQty Integer Not Null, Primary Key ( P# ) ); CREATE UNIQUE INDEX X ON Temp([P#]); Temp P# TotQty P1 400 P2 1000 P3 P4 500 P5 700 P6 100 INSERT INTO Temp ([S#],TotQTY) SELECT [P#],SUM(QTY) FROM SP GROUP BY [P#];

دستور Delete شکل کلي دستور Delete : DELETE FROM table [WHERE condition]; اين دستور يک يا چند سطر را حذف مي کند.

دستور Delete حذف تمام رکوردهاي جدول SP DELETE FROM SP;

دستور Delete حذف رکوردي با شماره S5 DELETE FROM S WHERE [S#]="S5"; S# SName Status City S1 Smith 40 London S2 Jones 20 Paris S3 Black 30 S4 Clarck S5 Adams Athens S# SName Status City S1 Smith 40 London S2 Jones 20 Paris S3 Black 30 S4 Clarck

دستور Delete حذف فروش فروشندگان لندني DELETE FROM SP WHERE "London" = ( SELECT City FROM S WHERE S.[S#]=SP.[S#] ); S# P# QTY S1 P1 P2 P3 P4 P5 P6 S# P# QTY S2 P1 300 P2 400 S3 200 S4 P4 P5 S# P# QTY S2 P1 300 P2 400 S3 200

تمرين خروجي دستور زير به همراه متن فارسي آن: خروجي دستور زير به همراه متن فارسي آن: SELECT P.[P#],"WEIGHT IN GRAMS",P.WEIGHT*454, P.COLOR,"MAX SHIPPED QUANTITY=",MAX(SP.QTY) FROM P,SP WHERE P.[P#]=SP.[P#] AND (P.COLOR="RED" OR P.COLOR="BLUE" ) AND SP.QTY>200 GROUP BY P.[P#] HAVING SUM(QTY)>350 ORDER BY 6,P.[P#] DESC

ارتباطات بين موجوديت ها درجه ارتباط: يک به يک يک به چند چند به چند A B A B A B قطعيت ارتباط: قطعي غير قطعي A B A B

به ازاي يک نمونه (رکورد ) از موجوديت A بايد يک نمونه از B باشد . ارتباط يک به يک A B به ازاي يک نمونه (رکورد ) از موجوديت A بايد يک نمونه از B باشد . به ازاي يک نمونه (رکورد ) از موجوديت B بايد يک نمونه از A باشد . ارتباط يک به چند A B به ازاي يک نمونه (رکورد ) از موجوديت A بايد يک يا چند نمونه از B باشد . به ازاي يک نمونه (رکورد ) از موجوديت B بايد يک نمونه از A باشد .

*دانشجو ممکن است چند درس ثبت نامي داشته باشد *يک ثبت نام درس بايد براي يک دانشجو باشد درس دانشجو کد دانشجو کد درس تاريخ ثبت نام 8310 100 1386/7/1 105 8320 101 1386/11/1 8340 کد دانشجو نام نام خانوادگي 8310 علي احمدي 8320 حسن رضايي 8330 رضا حسيني 8340 احمد محمدي

ارتباط ياي انحصاري (XOR) A XOR B A B 0 0 0 1 1 0 1 0 1 0 1 1 درخواست درخواست جديد درخواست انتقال درخواست بايد به عنوان يک درخواست انتقال و يا درخواست جديد در نظر گرفته شود

ارتباط يک موجوديت با خودش کد قطعه نام قطعه کد قطعه تشکيل دهنده تعداد 01 پيچ 02 چرخدنده 03 سوپاپ 10 موتور 25 4 قطعه يک قطعه مي تواند از چند قطعه ديگر تشکيل شده باشد و يک قطعه مي تواند در چند قطعه ديگر به کار رفته باشد سوال: با توجه به راه حل ارائه شده براي حل مشکل تکرار اطلاعات در ارتباط چند به چند ، جدول روبرو به چند جدول و با چه فيلدهايي بايد تبديل شود؟

چندين ارتباط بين دو موجوديت صاحب حساب حساب بانکي صاحب حساب بايد داراي يک يا چند حساب بانکي باشد يک حساب بانکي بايد متعلق به يک يا چند صاحب حساب باشد يک صاحب حساب ممکن است معرف چندين حساب بانکي باشد يک حساب بانکي ممکن است توسط يک نفر معرفي شده باشد.

نرمال سازي مثال : فرض کنيد براي يک سيستم ساده سفارش کالا موجوديت هاي زير تشخيص داده شده اند : الف) مشتري ( کد مشتري ، نام ، تلفن ، آدرس ، شماره حساب بانکي ) ب) سفارش ( کد سفارش ، کد مشتري ، نام مشتري ، تلفن ، تاريخ دريافت سفارش ، { کد کالا ، نام کالا ، واحد ، تعداد سفارش } ) ج) صورتحساب ( کد صورتحساب ، کد سفارش ، کد مشتري ، نام مشتري، آدرس ، تلفن ، تاريخ صورتحساب ، { کد کالا، نام کالا، واحد ، تعداد سفارش ، قيمت واحد ، قيمت کل } ، مبلغ کل صورتحساب ) د) کالا ( کد کالا ، نام کالا ، واحد ، نقطه سفارش ، مکان ) مشتري سفارش صورتحساب کالا

برگ سفارش کالا کد سفارش :. تاريخ سفارش :. کد مشتري :. نام مشتري: برگ سفارش کالا کد سفارش :................... تاريخ سفارش :........... کد مشتري :.................... نام مشتري:............... تلفن مشتري :................ آدرس مشتري:............. تعداد سفارش واحد نام کالا کد کالا