المرجع السريع للغة SQL فى قاعدة بيانات MySQL


الأربعاء, 17 فبراير 2021

الطريقة الأولى: بدون برامج مساعدة.

وفى هذه الحالة يمكن فتح الـ Command Prompt فى الـ(Windows) ثم تحديد المسار الذى تم تحميل MySQL بداخله كما يلي:

path=D:\PHP_Work\XAMPP\mysql\bin

وبعد ذلك يمكننا عمل فتح MySQL وعمل Connect عليها كما يلي:

mysql -u root -p

وبعدها يطلب الـ password أدخله ثم Enter ليظهر لك فى الـ Command Prompt المؤشر

mysql>

جاهز للأوامر.



الطريقة الثانية: فى حالة تجهيز MySQL منفردة على الجهاز. بدون برامج مساعدة مثل XAMPP أو WAMP أو AppServe الخ

نفتح من Start>All Programs>MySQL>MySQL

====================================================

جميع حقوق نقل المعلومات مسموح بها لوجه الله. ولكن يرجى الإشارة لأسم الموقع فقط.



الأربعاء, 17 فبراير 2021

CREATE DATABASE databasename;

وللتعامل مع قاعدة بيانات محددة وتنفيذ الأوامر عليها نكتب الأمر التالى

USE databasename

ولعرض قواعد البيانات الموجودة نكتب الأمر

mysql> show databases;

+------------------------+

| Database               |

+------------------------+

| information_schema     |

| adeltube_db            |

| tests                  |

+------------------------+

3 rows in set (0.11 sec)

مثال:

mysql> CREATE DATABASE 7istDB;

Query OK, 1 row affected (0.00 sec)

 

 

 

mysql> use 7istDB;

Database changed

ولحذف قاعدة بيانات نكتب الأمر

DROP DATABASE DBName;

======================

جميع حقوق نقل المعلومات مسموح بها لوجه الله. ولكن يرجى الإشارة لأسم الموقع فقط.


الأربعاء, 17 فبراير 2021

Creating Table


CREATE  TABLEtablename

(

fieldname1type [(size)] [NOT NULL] [AUTO_INCREMENT]

[ConstraintType [Expr] ]

[,fieldname2type [(size)] [NOT NULL]

[ConstraintType [Expr] ]]

[ ,ConstraintType [Expr]]

 );



 
لاحظ أستخدام الأقواس [ … ] للتعبير عما هو أختيارى فى الجملة – ومن المهم أيضا ملاحظة كيفية تعريف القيود فإنها قد توضع بعد الحقل وقد توضع أسفل الجدول ثم توصيف القيد - ويطلق علي الحالة الأولي علي قيد مستوي الحقل Column Level والحالة الثانية قيد علي مستوي الجدول Table Level   - وفيما يلى شرح لأجزاء جملة Create Table:

 

الوصف

الجزء

كلمة أساسية بمعني إنشاء جدول.

CREATE TABLE

يكتب بدلا عنها اسم الجدول المراد إنشائه.

table

يكتب بدلا عنها أسم الحقل الأول والثاني وهكذا حتى نهاية حقول الجدول المنشئ ويفصل بين كل حقل والأخر بفصله

(, ) .

Field1 – Field 2

يكتب بدلا عنها  نوع بيانات الحقل.

Type

يكتب بدلا عنها حجم عدد الخانات بالحقل ويوجد أنواع بيانات لها حجم وأنواع لا يحدد لها حجم حقل .

size

تكتب إذا كنت تريد عدم ترك بيان فارغ في هذا الحقل نهائيا .

Not Null

عبارة عن تعبير يحدد علي حسب القيد المذكور فبعض القيود يحدد لها تعبيرا مثل حقل المفتاح الخارجي فلابد من ذكر أسم الجدول والحقل الذي يعمل كمفتاح رئيسي الذي يمثله الحقل الحالي كمفتاح خارجي .

Expr

لجعل الحقل يضاف به بيانات رقمية مسلسلة تلقائية.

AUTO_INCREMENT

 -----------------------

جميع حقوق نقل المعلومات مسموح بها لوجه الله. ولكن يرجى الإشارة لأسم الموقع فقط.



الأربعاء, 17 فبراير 2021

أولا: الأرقام الصحيحة Integer

 


ثانيا: الأرقام العشرية أو الكسرية Decimal Numbers


As the FLOAT declaration DOUBLE.

 

ثالثا: أنواع البيانات النصية Strings & Text

VARCHAR(variable length ofstring up to 255characters)

CHAR(string offixed length,which can be between 0and 253.)


رابعا:أنواع بيانات التاريخ والوقت Date & Time Data Types

DATETIME( “YYYYMM-DD HH:MM:SS” )

TIMESTAMP( Formats )


خامسا: أنواع بيانات أخرى

BOOL(True/False 0/1)

BLOB: Binary Large Object. TINYBLOB,BLOB,MEDIUMBLOB and LONGBLOB.

الأربعاء, 17 فبراير 2021

1-      علي مستوي الحقل Column Level

يتم تعريف أي قيد به ماعدا:

§         المفتاح الأساسي المركبComposite Primary Key

§         المفتاح الخارجي المركب                  Composite Foreign Key

 

وهذا طبيعي جدا لأن القيد في هذا المستوي يفرض علي الحقل الذي يكتب أمامه القيد أما في تلك الحالات يحتوي القيد علي أكثر من حقل فلا يمكن إتباع هذه الطريقة في عمل هذه القيود.

 

2-      علي مستوي الجدول Table Level    

يتم تعريف أي قيد به ماعدا قيد NOT NULL   

 

قيد المفتاح الأساسى Primary Key Constraint

Column Level

DeptNo INT(4)   Primary Key,

Table Level


Primary Key (DeptNo),

لاحظ أن الفرق هنا لأننا نكتب الأوامر أخر الجدول فلابد أن نحدد من هو الحقل الذي سوف يتم تنفيذ القيد عليه أما في الطريقة الأولي لم نكتب ذلك وهذا لأن القيد سوف ينفذ علي الحقل المكتوب أمامه مباشرة.

 

قيد المفتاح الخارجي Foreign Key Constraint    

Column Level


Column Type REFERENCES parenttable (primarycolumn)

مثال:


DeptWorkINT(4) References Dept (DeptNo),

ولاحظ أن هذا القيد دائما يمثل علاقة مفتاح خارجى FK لمفتاح أساسى PK – وفى المثال السابق  - الحقل DeptWork عبارة عن مفتاح خارجى FK يشير إلى (References) حقل المفتاح الأساسى DeptNo لجدول Dept.

 

ولاحظ ان حقل المفتاح الخارجي يجب أن يشير لحقل مفتاح أساسى ولابد أن يكون من نفس نوع بيانات الحقل الأساسى ومن نفس الحجم Size إن وجد.

Table Level


FOREIGN KEY (column) REFERENCES parenttable (primarycolumn)

مثال آخر


Foreign Key (DeptWork)      References Dept ( DeptNo ),


في هذا الشكل يتضح لنا أهمية كتابة كلمة Foreign Key وذلك لتحديد المفتاح الخارجي في هذا الجدول الذي سوف يكون مرتبط بحقل مفتاح أساس في جدول أخر وبعد كلمة References نكتب أسم الجدول الآخر ثم أسم الحقل المفتاح الأساسى ويمكن إضافة Cascade Delete Related Fields بمعني عند حذف قيمة من المفتاح الأساسى يحذف تلقائيا كل البيانات المرتبطة به في الجدول المحتوي علي المفتاح الخارجي وهذا قد يمثل خسارة كبيرة وفقد بيانات هامة - يمكننا كتابة On Delete Cascade  لتمثيلها في أي المستويين علي سبيل المثال:


DeptWorkINT(4) References Dept (DeptNo) On Delete Cascade,

وللتحقق من الـ Referential Integrity أى أن البيانات فى Foreign Keyلابد أن يكون موجود مثيل لها فى الـ Primary Key لابد من كتابة TYPE = InnoDB بعد الإنتهاء من جملة Create Table وقبل الـ ; وبعد إغلاق القوس ) وفى نهاية الجملة.

قيد  NOT NULLNOTNULL Constraint

Column Level


Salary FLOAT(6,2) Not Null,

ولاحظ أنه لايمكن تعريف هذا القيد على مستوي الجدول.

 

قيد عدم التكرار UNIQUE Constraint

Column Level


DName  Varchar(25) UNIQUE,

  Table Level

UNIQUE ( DName ),


قيد التحقق من القيمةCHECK Constraint

Column Level


Gender Char(1) CHECK ( Gender IN ('M', 'm', 'F', 'f')  ),

لاحظ أهمية كتابة  الشرط كاملا بعد كلمة CHECK وبين أقواسها.

 

Table Level


            CHECK   ( Gender IN ('M', 'm', 'F', 'f')  ),

أمثلة لإنشاء الجداول بالطرق المختلفة.


CREATE TABLE EMPLOYEE

(

SSN          Char(4)        Primary Key  ,

Name        VARCHAR(60)      NOT NULL   ,

BirthDate   Date  ,

Salary        FLOAT(6,2)       ,

Street        VARCHAR(100)    ,

City            VARCHAR(25) Default 'Cairo'

) ;

 

CREATE TABLE FLIGHT

(

Flight_Number INT(2)          ,

Flight_Date      Date         ,

Passengers     INT(3)         ,

         Primary Key (Flight_Number ,Flight_Date )

) ;

 =======================

جميع حقوق نقل المعلومات مسموح بها لوجه الله. ولكن يرجى الإشارة لأسم الموقع فقط.



الأحد, 21 فبراير 2021

إنشاء جداول وإنشاء علاقة من النوع واحد لكثير



CREATE TABLE IF NOT EXISTS EMPLOYEE

(

SSN         INT(5)  Primary Key ,

Name       VARCHAR(60) NOT NULL ,

BirthDate Date,

Salary      FLOAT(6,2)

) ;

 

CREATE TABLE EMPLOYEE_PHONE

(

SSN         INT(5)   REFERENCES EMPLOYEE(SSN) ,

Phone      Char(12) ,

                          Primary Key(SSN,Phone)

) ;


 =======================


جميع حقوق نقل المعلومات مسموح بها لوجه الله. ولكن يرجى الإشارة لأسم الموقع فقط.

الأحد, 21 فبراير 2021

إنشاء جداول وبينهم علاقة واحد لواحد One to One Relationship

Entity Relationship Model (ERD)

Relational Model (Mapping)

SQL (Create Tables)

CREATE TABLE IF NOT EXISTS EMPLOYEE

  (

  SSN          CHAR(4)        PRIMARY KEY       ,

  Name        VARCHAR(60)  NOT NULL       ,

  BirthDate   Date            ,

  Salary        FLOAT(6,2)

  );

 

CREATE TABLE  DEPARTMENT

  (

   Dept_No        CHAR(2)     ,

   Dept_Name   VARCHAR(50)   NOT NULL     ,

   Manager         CHAR(4)     UNIQUE                 ,

   Primary Key(Dept_No)                   ,

   Foreign Key (Manager)   REFERENCES   EMPLOYEE(SSN)  );



 =======================


جميع حقوق نقل المعلومات مسموح بها لوجه الله. ولكن يرجى الإشارة لأسم الموقع فقط.


الأحد, 21 فبراير 2021

إنشاء جدول بعلاقة مرجعة -نفس الجدول به المفتاح الرئيسي PK وفى نفس الوقت نفس الجدول به المفتاح الخارجى FK- تسمى Recursion أو Recuirsive Relationship

نموذج Relational/Mapping


DROP TABLE IF EXISTS EMPLOYEE;

CREATE TABLEEMPLOYEE

  (

   SSN   CHAR(4) Primary Key ,

   Name VARCHAR(60) NOT NULL ,

   BirthDate Date             ,

   Salary      FLOAT(6,2)                 ,

   Super_SSN      CHAR(4)  REFERENCES EMPLOYEE(SSN)

  ) ;


 =======================

جميع حقوق نقل المعلومات مسموح بها لوجه الله.

ولكن يرجى الإشارة لأسم الموقع فقط.


الأحد, 21 فبراير 2021

لعرض الجداول التى تم إنشاءها

mysql> Show Tables;

+------------------------+

| Tables_in_testexamples |

+------------------------+

| employee               |

| flight                 |

+------------------------+

2 rows in set (0.01 sec)

 

 

 

 

 

لعرض مواصفات جدول تم إنشاءه نستخدم Describe وبعدها أسم الجدول:

mysql> Describe Employee;

+-----------+--------------+------+-----+---------+-------+

| Field     | Type         | Null | Key | Default | Extra |

+-----------+--------------+------+-----+---------+-------+

| SSN       | char(4)      | NO   | PRI | NULL    |       |

| Name      | varchar(60)  | NO   |     | NULL    |       |

| BirthDate | date         | YES  |     | NULL    |       |

| Salary    | float(6,2)   | YES  |     | NULL    |       |

| Street    | varchar(100) | YES  |     | NULL    |       |

| City      | varchar(25)  | YES  |     | Cairo   |       |

+-----------+--------------+------+-----+---------+-------+

6 rows in set (0.00 sec)


§         عرض أسماء الجداول

SHOW Tables;

§         عرض بناء الجدول

DESCRIBE EMPLOYEE;

§         عرض معلومات عن قيد

SELECT COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_COLUMN_NAME,

                              REFERENCED_TABLE_NAME

FROM                          INFORMATION_SCHEMA.KEY_COLUMN_USAGE

WHERE                         TABLE_NAME = 'Table2';

 =======================

جميع حقوق نقل المعلومات مسموح بها لوجه الله.

ولكن يرجى الإشارة لأسم الموقع فقط.

الأحد, 21 فبراير 2021

التعديلات على جداول منشئة فعلا Alter Tables)

-          إنشئ الجدول التالى:

CREATE TABLE Table1 (col1 INTEGER,col2 CHAR(10));

-          لتعديل وتغير أسم الجدول

ALTER TABLE Table1 RENAME Table2;

-          لتغير نوع البياناتMODIFY  وتعديل الأسم وإضافة قيود CHANGE

ALTER TABLE Table2

MODIFY col1 TINYINT NOT NULL,

CHANGE col2 col3 CHAR(20);

-          لإضافة حقل جديد لجدول موجود

ALTER TABLE Table2 ADD col4 TIMESTAMP;

-          أى حقل جديد معدل يضاف فى آخر الجدول ولتحديد وضعه فى ترتيب الحقول يمكن إستخدام كلمة AFTER | BEFORE كما يلي:

ALTER TABLE Table2 ADD col4 TIMESTAMPAFTER col3;

 

-          لإضافة قيود جديدة على حقول موجودة

ALTER TABLE Table2

ADD INDEX (col4),

ADD UNIQUE (col1);

-          حذف حقل موجود بالجدول

ALTER TABLE Table2 DROP COLUMN col3;

-          إضافة حقل بقيود جديدة و إضافة قيود على حقول موجودة

ALTER TABLE Table2

ADD col3 INT UNSIGNED NOT NULL AUTO_INCREMENT,

ADD PRIMARY KEY (col3);

-          لعرض جملة الإنشاء الخاصة بالجدول نكتب الأمر التالى

mysql> show create table table2\G;

*************************** 1. row ***************************

       Table: table2

Create Table: CREATE TABLE `table2` (

  `col1` tinyint(4) NOT NULL,

  `col4` timestamp NOT NULL

DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

  `col3` int(10) unsigned NOT NULL AUTO_INCREMENT,

  PRIMARY KEY (`col3`),

  UNIQUE KEY `col1` (`col1`),

  KEY `col4` (`col4`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.01 sec)

 

-          لإنشاء جدول جديد Table3 بنفس مواصفات جدول Tabl2 نكتب

Create Table Table3 LIKE Table2;

-          ولإنشاء جدول جديد Table4 بنفس شكل جدول Table2 وبنفس البيانات نكتب

Create Table Table4 AS SELECT * FROM Table2;

كما يمكن تحديد حقول معينة فقط بدلا من * وبيانات محددة بكلمة Where كما سنرى فيما بعد فى جملة SELECT.

-          لحذف جدول

DROP TABLE Table4;

 =======================

جميع حقوق نقل المعلومات مسموح بها لوجه الله.

ولكن يرجى الإشارة لأسم الموقع فقط.

الأحد, 21 فبراير 2021

النسخ الاحتياطي Backup لقاعدة البيانات هو عملية اخذ نسخة من الإنشاء ومن البيانات المخزنة لبرامج قاعدة البيانات. وذلك بغرض إسترجاعها Restore فى وقت آخر

لعمل نسخ إحتياطى  Backupمن قاعدة البيانات يكتب الأمر كما يلى فى Command Line

mysqldump -u root -p DatabaseName > db_backup.sql

ولعمل إسترجاع Restore النسخ الإحتياطى فى قاعدة بيانات نكتب الأمر كما يلى فى الـ Command Line

mysql -u root -p DatabaseName < db_backup.sql

 =======================

جميع حقوق نقل المعلومات مسموح بها لوجه الله.

ولكن يرجى الإشارة لأسم الموقع فقط.

الأحد, 21 فبراير 2021

سنتعرض فى الشرح القادم إلى مثال/مشروع متكامل نتعلم عليه ونطبق عليه كل الجمل الخاصة بـ MySQL.

 

1-    الاحتياجات المعلوماتية :-

المطلوب تصميم قاعدة بيانات تحتوي علي معلومات تخص مدرسة وهذا طبقا للبيانات التالية:

§     لكل طالب بالمدرسة رقم وهو رقم فريد لا يتكرر وأسم متفرع لأسم الطالب و باقي الاسم وتاريخ ميلاد وعنوان ونوع ورقم تليفون ان وجد وعمر الطالب الحالي .

§     وبالطبع قد يدرس الطالب أكثر من مادة وهذا علي أساس أن المادة توصف برقم فريد لا يتكرر داخل القسم الواحد وعنوان المادة ولكل طلب في كل مادة درجة .

§     أما القسم فله رقم فريد لا يتكرر وأسم مميز لا يتكرر والمادة هنا تتبع قسم واحد ( علي سبيل المثال مادة إعداد التقارير تدرس بقسم الحاسب فقط وغير مختصة بأي مادة أخري في قسم آخر حتى ولو تشابهت في الاسم).

§      وللمادة مدرس واحد يدرسها علي أساس إن المدرس الواحد قد يدرس أكثر من مادة.

§     ويسجل عن المدرس رقم مميز للمدرس وأسم ونوع ومرتب ورتبه جامعية وشهاداته التي حصل عليها تاريخ تعينه ومدينته والقسم الذي يعمل به والقسم الذي يديره أن وجد 


 =======================

جميع حقوق نقل المعلومات مسموح بها لوجه الله.

ولكن يرجى الإشارة لأسم الموقع فقط.

الأحد, 21 فبراير 2021

تصميم البيانات بنموذج (ER - Entity Relational Schema )

الخاص بمشروع المدرسة

 =======================

جميع حقوق نقل المعلومات مسموح بها لوجه الله.

ولكن يرجى الإشارة لأسم الموقع فقط.

الأحد, 21 فبراير 2021

تصميم البيانات فى نموذج ( Relational Schema )

لمشروع المدرسة

 =======================

جميع حقوق نقل المعلومات مسموح بها لوجه الله.

ولكن يرجى الإشارة لأسم الموقع فقط.

الأحد, 21 فبراير 2021

تصميم الجداول Tables Design لمشروع المدرسة

========================

جدول القسم Department

أسم الحقل

وصف

نوع البيانات

طول الحقل

القيمة الفارغة

القيود

DeptNo

رقم القسم

char

4

X

Primary Key

DName

أسم القسم

Varchar

25

X

Unique

Manager

مدير القسم

char

4

ü       

Foreign Key / Unique

 

جدول المدرس Teacher

أسم الحقل

وصف

نوع البيانات

طول الحقل

القيمة الفارغة

القيود

TeacherId

رقم المدرس

char

4

X

Primary Key

Name

أسم المدرس

Varchar

50

X

Unique

Gender

النوع

Char

1

X

Check m or f

Salary

المرتب

Float

6.2

ü       

 

Rank

الرتبة الجامعية

Varchar

30

ü       

 

HireDate

تاريخ التعيين

Date

8

ü       

 

City

البلد

varchar

30

ü       

 

DeptWork

قسم العمل

char

4

ü       

Foreign Key

 

جدول الشهادات الجامعية CollegeDegree

أسم الحقل

وصف

نوع البيانات

طول الحقل

القيمة الفارغة

القيود

TeacherId

رقم المدرس

char

4

X

Foreign    Key 

Primary Key

CollegeDegree

الشهادة

Varchar

50

X

 

 

جدول الطالب Student

أسم الحقل

وصف

نوع البيانات

طول الحقل

القيمة الفارغة

القيود

StudNo

رقم الطالب

char

10

X

Primary Key

FName

أسم الطالب

varchar

25

X

 

LName

باقي الأسم

varchar

25

X

 

BDate

تاريخ الميلاد

Date

8

ü       

 

Address

العنوان

Varchar

100

ü       

 

Gender

النوع

Char

1

X

Check m or f

Phone

التليفون

Char

12

ü       

 

 

 جدول المادة Subject

أسم الحقل

وصف

نوع البيانات

طول الحقل

القيمة الفارغة

القيود

SubCode

رقم المادة

char

10

X

 

Primary

   Key

DeptBelong

القسم التابعة له

char

4

X

Foreign

   Key   

TeacherTaught

المدرس الملقن

char

4

ü       

Foreign Key

Title

عنوان المادة

varchar

20

X

 








جدول الدراسة Study

أسم الحقل

وصف

نوع البيانات

طول الحقل

القيمة الفارغة

القيود

StudNo

رقم الطالب

char

10

X

Foreign key   

Primary

  Key

SubCode

رقم المادة

char

4

X

ForeignKey

DeptNo

رقم القسم

char

4

X

Score

الدرجة

Float

5.2

ü       

 

  =======================

جميع حقوق نقل المعلومات مسموح بها لوجه الله.

ولكن يرجى الإشارة لأسم الموقع فقط.

الأحد, 21 فبراير 2021

تصميم الجداول Tables Design لمشروع المدرسة

========================

جدول القسم Department

أسم الحقل

وصف

نوع البيانات

طول الحقل

القيمة الفارغة

القيود

DeptNo

رقم القسم

char

4

X

Primary Key

DName

أسم القسم

Varchar

25

X

Unique

Manager

مدير القسم

char

4

ü       

Foreign Key / Unique

 

جدول المدرس Teacher

أسم الحقل

وصف

نوع البيانات

طول الحقل

القيمة الفارغة

القيود

TeacherId

رقم المدرس

char

4

X

Primary Key

Name

أسم المدرس

Varchar

50

X

Unique

Gender

النوع

Char

1

X

Check m or f

Salary

المرتب

Float

6.2

ü       

 

Rank

الرتبة الجامعية

Varchar

30

ü       

 

HireDate

تاريخ التعيين

Date

8

ü       

 

City

البلد

varchar

30

ü       

 

DeptWork

قسم العمل

char

4

ü       

Foreign Key

 

جدول الشهادات الجامعية CollegeDegree

أسم الحقل

وصف

نوع البيانات

طول الحقل

القيمة الفارغة

القيود

TeacherId

رقم المدرس

char

4

X

Foreign    Key 

Primary Key

CollegeDegree

الشهادة

Varchar

50

X

 

 

جدول الطالب Student

أسم الحقل

وصف

نوع البيانات

طول الحقل

القيمة الفارغة

القيود

StudNo

رقم الطالب

char

10

X

Primary Key

FName

أسم الطالب

varchar

25

X

 

LName

باقي الأسم

varchar

25

X

 

BDate

تاريخ الميلاد

Date

8

ü       

 

Address

العنوان

Varchar

100

ü       

 

Gender

النوع

Char

1

X

Check m or f

Phone

التليفون

Char

12

ü       

 

 

 جدول المادة Subject

أسم الحقل

وصف

نوع البيانات

طول الحقل

القيمة الفارغة

القيود

SubCode

رقم المادة

char

10

X

 

Primary

   Key

DeptBelong

القسم التابعة له

char

4

X

Foreign

   Key   

TeacherTaught

المدرس الملقن

char

4

ü       

Foreign Key

Title

عنوان المادة

varchar

20

X

 








جدول الدراسة Study

أسم الحقل

وصف

نوع البيانات

طول الحقل

القيمة الفارغة

القيود

StudNo

رقم الطالب

char

10

X

Foreign key   

Primary

  Key

SubCode

رقم المادة

char

4

X

ForeignKey

DeptNo

رقم القسم

char

4

X

Score

الدرجة

Float

5.2

ü       

 

  =======================

جميع حقوق نقل المعلومات مسموح بها لوجه الله.

ولكن يرجى الإشارة لأسم الموقع فقط.

الأحد, 21 فبراير 2021

1-     إنشاء قاعدة البيانات المدرسة بأوامر الـ SQL على قاعدة بيانات MySQL.

والآن يمكننا عمل الجداول بالقاعدة من خلال تلك الأوامر واليك الأوامر

- Create School Database

Create Database School;

-Department Table:

use School;

Create Table Department

(

DeptNo    char(4)    Primary Key          ,

DName    varchar(25) Unique  ,

Manager char(4)

);

 

- Teacher Table:

Create Table Teacher

(

TeacherId   char(4)           Not Null,

Namevarchar(50)               Not Null,

Gender     Char(1)   Not Null Check ( Gender In('M','m','F','f') ) ,

Salary      FLOAT(7,2),

Rank        varchar(30),

HireDate Date,

City        varchar(30),

DeptWork char(4)   References Department(DeptNo)  ,

Primary Key (TeacherId),

Unique (Name)                            

);

 

 لاحظ أننا قد وضعنا علي حقل Genderأكثر من قيد تم الفصل ما بينهم بمسافة أو أكثر.

ALTER Table Department

Add Foreign Key(Manager) References Teacher (TeacherID)

 

ولإضافة العلاقة Manager بعد إضافة الجدولين نكتب ما يلي:

 -CollegeDegree Table:

Create Table CollegeDegree

(

TeacherId       char(4)       Not Null ,

CollegeDegree  varchar(30)  Not Null ,

Foreign Key (TeacherId)References Teacher(TeacherId) ,

Primary Key(TeacherId , CollegeDegree)

);


لاحظ هنا أن حقل المفتاح الرئيسي محتوي علي جدولين لذلك يوضع القيد إجبارا علي مستوي الجدول
 


- Student Table:



Create Table Student

(

StudNo char(10)       Not Null Primary Key,

FName  varchar(25)   Not Null,

LName  varchar(25)   Not Null,

BDate  Date,

Address   varchar(100),

Gender    Char(1) Not NullDefault 'M' ,

Phone     Char(12)                   ,

Check ( Gender In('M','m','F','f') )

);



- Subject Table:


Create Table Subject

(

SubCodechar(10) Not Null,

DeptBelong  char(4)Not Null   References Department(DeptNo) ,

TeacherTaught  char(4)References Teacher(TeacherId) ,

Title varchar(20)     Not Null,

Primary Key(SubCode , DeptBelong)

);

 

- Study Table:

Create Table Study

(

StudNo     char(10) Not Null                                                                              ,

SubCode  char(10) Not Null                                            ,

DeptNo     char(4) Not Null                                           ,

Score      FLOAT(5,2)                                                 ,

Foreign Key (StudNo)  References Student(StudNo)                      ,

Foreign Key (SubCode , DeptNo) References  Subject ( SubCode ,DeptBelong)   ,

Primary Key (StudNo , SubCode , DeptNo )

);

 

لاحظ أيضا المفتاح الرئيسي لهذا الجدول فهو مفتاح يضم ثلاث حقول كمفتاح رئيسي, يمكن كحل آخر ينشئ PK عبارة عن ترقيم تلقائى AUTO_INCREMENT ومعه لابد من جعل الثلاثة حقول عليها قيد Unique.

 =======================

جميع حقوق نقل المعلومات مسموح بها لوجه الله.

ولكن يرجى الإشارة لأسم الموقع فقط.