تعلم sql في ستة دقائق وبدون معلم

achraf.mouni

  • Hero Member
  • *****
    • مشاركة: 2439
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
في: كانون الثاني 16, 2009, 09:31:40 مسائاً
السلام عليكم
اليكم هذا الشرح عن SQL
تعريف sql
الكلمه SQL  هي اختصار  Structured Query Language  و معناها (لغة الاستعلام البنيويه) , تستخدم هذه اللغه  في التعامل مع قواعد البيانات و لاستخراج و تحديث و اضافة البيانات من قاعدة  البيانات و غالبا ما يتم استخدام هذا النوع من قواعد البيانات في المواقع التي  تستخدم التقنيات الشهيره مثل الـ PHP  , أو في تطبيقات الحاسوب التي تحتاج لقواعد  بيانات , و كما نرى ان اغلب برامج الويب تعتمد على الــ SQL  من خلال البرنامج  الشهير MySQL  , وماقد يخفي عليك أن تعلمك ل SQL يغنيك عن معرفة  و access و Mysql  و oracle و sql server ... كل شيء ستقوم به بواسطة SQL وتجدر الإشارة أن كل هذه  البرامج إضافة أنها تدعم SQL فلكل منها لغة خاصة فالأكسس له لغته والأوراكل له لغة  خاصة تدعى PLSQL ....
ما الذي  يمكنني فعله في الـ SQL ؟
بفضل SQL يمكنك عمل  الكثير
1\ إنشاء جدول بالمواصفات التي  تحتاجها
2\ اضافة حقول او حذف حقول بعد  انشاء الجدول
3\ تفريغ  الجدول
4\ حذف  الجدول
5\ ادخال  المعلومات
6\ تحرير  المعلومات
7\ حذف  المعلومات
8\ إنشاء قاعدة  بيانات
9\ حذف قاعدة بيانات  
10\ استخراج  المعلومات
11\ استخدام الشروط في استخراج  المعلومات (تصاعدي , تنازلي , 10 معلومات , معلومات عن مستخدم معين إلخ  ...)
أين يمكنني  كتابة أوامر?
سأعطي مثال بالأكسس  وبالصور
 
[/SIZE][/FONT]  
إنشاء قاعدة  بيانات جديده :
قاعدة البيانات هي عصب لغة الــ  SQL  و من خلالها يتم إنشاء الجداول و تعبئة المعلومات سوف نتعلم كيف نقوم بإنشاء  قاعدة بيانات جديده
طريقة كتابة الامر  :
CREATE DATEBASE mydbname;  
سوف نقرأ هذا الامر باللغه  العربيه , كأنك تقول (أنشئ قاعدة البيانات التي اسمها mydbname)  .  
طبعاً mydbname  يمكنك تغيره  إلى اسم قاعدة البيانات التي تريده مثلاً تود اسم القاعده brahim  او db  مثلاً ,  أي اي اسم تريده
لكن  لن يفيدنا هذا الامر في  الاكسس لأن في الأكسس سوف تنشيء أنت القاعدة بالمقابل في البرامج الأخرى سيكون هذا  الأمر ذا أهمية
لحذف قاعدة البيانات نستعمل  الكود الآتي :
DROP DATABASE mydbname;  
لإضافة جدول  للقاعدة
 
CREATE TABLE tablname  (
Falid1 type null or not null  ,
Falid2 type null or not null  ,
);  
حسناً , لنبدأ الشرح خطوه بخطوه  , في اول السطر نقول بإننا نود إنشاء الجدول tablname طبعاً يمكننا تغيير هذه  الكلمه إلى اسم الجدول الذي نود اضافته ,  
Falid1 , Falid2  : هذان  الاثنان يعنيان انهم اسماء للحقول و ها نحن نود اضافة حقلان الاول بمسمى Falid1  و  الثاني Falid2 بعدها نبدأ بوصف مميزات هذا الحقل و نوع البيانات و سيتم شرح نوع  البيانات في السطور القادمه .  
Type  : انواع البيانات او  الحقول و سيتم شرحها قريبا بإذن الله
Null or not null  : هذا يعني  انه هل تريد ان يكون الحقل خالي ؟ مثلا هل تريد ان اسم المستخدم هل يجب ان يكتبه  المستخدم ام اختياري .
حسناً , بعدما رأينا كيف نقوم  بإنشاء جدول و تعرفنا ان هنالك انواع للحقول او البيانات , حسناً تمعّن في الجدول  التالي الذي سوف يشرح انواع الحقول :
   
النوع
 
نوعية البيانات التي يمكن  تخزينها
 
TINYINT()
 
ارقام صحيحه صغيره  جداً
 
SMALLINT()  
 
ارقام صحيحه  صغيره
 
MEDIUMINT()
 
ارقام صحيحه متوسطة  الحجم
 
INT()  
 
ارقام صحيحه  اعتياديه
 
INTEGER()
 
مرادف لــ  INT
 
BIGINT()
 
ارقام صحيحه كبيره  جداً
جدول لانواع الارقام  الصحيحه
 
   
النوع
 
نوع البيانات التي يمكن  تخزينها
 
DATE
 
تاريخ ,, سيظهر كـ  YYYY-MM-DD
 
TIME
 
وقت ,, سيظهر  HH:MM:SS
 
DATETIME
 
تاريخ ووقت ,, سيظهر  كـ
YYY-MM-DDHH:MM:SS
 
TIMESTAMP()
 
ختم  زمني
 
YEAR()
 
سنه
جدول انواع بيانات التاريخ و  الوقت
   
النوع
 
الوصف
 
TINYBLOB  
 
حقل كائن BLOB  صغير جدا
 
TINYTEXT
 
حقل TEXT  صغير جدا
 
BLOB
 
حقل BLOB  حجمه عادي
 
TEXT
 
حقل TEXT  حجمه عادي
 
MEDIUMBLOB
 
حقل BLOB  متوسط الحجم
 
MEDIUMTEXT
 
حقل TEXT  متوسط الحجم
 
LONGBLOB
 
حقل BLOB  طويل
 
LONGTEXT
 
حقل TEXT  طويل
الانواع TEXT  و BLOB
   
النوع
 
الوصف
 
CHAR
 
حقل يقوم بتخزين 1 إلى 255  حرف
 
VARCHAR
 
نفس عمل  السابق
انواع السلاسل  الاعتياديه
 
حسنا لنفرض اننا بحاجه إلى 4  حقول , و سنعدد ماهي :  
الحقل الاول : وسوف يكون المعرف  الخاص لكل زبون , حيث يكون رقم خاص للزبون يميزه عن غيره من الزبائن (ضروري)  .
الحقل الثاني : اسم  الزبون
الحقل الثالث : رقم هاتف  الزبون
الحقل الرابع : عنوان موقع  الزبون
حسناً الآن و بعد تحديد الحقول  ووظائفها  يجب علينا ان نحدد نوعها .

الحقل الاول : بما انه حقل  يحمل رقم خاص لكل زبون اذاً سوف نرجع إلى جدول انواع الارقام , سوف نختار النوع  INT() بحيث يكون رقم اعتيادي صحيح  
حسناً , الآن لدينا مشكله ؟!..  نفرض اردنا اضافة زبون طبعا الزبون الاول سوف يكون رقمه 1   حسناً , نريد اضافة  زبون ثاني و سوف نكتب في الحقل الاول رقم 2 , لكن ماذا لو وصلوا عدد زبنائنا مليون  زبون !! هل سوف نكتب في الحقل الاولى مليون مليون وواحد مليون و اثنين !! طبعاً لا  يمكننا ذلك بل سوف نهرب من هذه اللغه و من قواعد البيانات  .  
قد تتسائل ماهو حل هذه المشكله  الكبيره التي قد تعرقلنا , قد يقول البعض لا نحتاج الحقول الاولى ولا نريد ترقيم  هذا الزبون .  
ولكنني ارد عليهم و اقول بل  يمكننا ترقيمه و بسهوله بالغه و من دون اي تعب او شقاء   الحمدلله هناك خاصيه بإسم  auto_increment وهي اوتوماتيكيه حيث كلما قمت بإضافة زبون يكتب رقم آخر زبون + 1 ,  يعني لا تشقى ولا تتعب اجعل عملية اعطاء الزبون رقم خاص للغة الـSQL  .
لنفرض ان الحقل الاول إسمه id  اي identify و المقصود رقم المعرف كما ذكرنا مسبقاً سوف يكون نوعه INT  اي عدد صحيح  و سوف نشغل فيه الخاصيه : auto_increment لكي يكون اوتوماتيكياً  .  
لنفرض ان الحقل الثاني الذي هو  إسم الزبون ويكون اسمه name طبعاً يكون نوعه من varchar اي سلسله  .  
لنفرض ان الحقل الثالث وهو رقم  الهاتف إسمه phone طبعاً يكون نوعه INT اي رقم صحيح  
لنفرض ان الحقل الرابع و الاخير  و هو عنوان موقعه يكون ال varchar لانه تعتبر سلسله واسمه domin  .

نسيت ان اذكر شئ مهم و ان  السلسله varchar تخزن ارقام و حروف  .  
, لنفرض ان اسم الجدول  client
سيكون الأمر كالتالي  :
CREATE TABLE client  (
id INT(9) NOT NULL  auto_increment ,
name varchar(200) NOT NULL  ,
phone INT(9) NOT NULL  ,
domin varchar(150) NOT NULL  ,
primary key  (id)
);
 
نفترض اننا قمنا بإضافة  المعلومات !! , و نريد حذفها جميعها
سوف نستعمل الأمر التالي  :
DELETE FROM tablename;  
قد تتسائل هل يمكنني حذف معلومه  واحد فقط !  
الجواب طبعاً نعم و بإستخدام  نفس الامر لكن بإضافة الجمله الشرطيه WHERE
لنفرض أننا نود حذف الزبون الذي  يحمل رقم تلفون 00123456
سوف نستعمل الأمر التالي  :
DELETE FROM tablename where  phone = 00123456;
 
أوامر  أخرى
 
لحذف جدول المعلومات نهائياً  من قاعدة البيانات
DROP TABLE tablename;  
 
  لدينا زبون جديد و نريد  تسجيل معلوماته في الجدول
INSERT INTO tablename VALUES  ('info1','info2');
 
مثال
INSERT INTO client VALUES  ('NULL','brahim','1234567','yahoo.com');
 
لإضافة حقول معينة  فقط
INSERT INTO  client(id,name,domin) VALUES ('NULL','brahim','yahoo.com');
 
حذف المعلومات  :
DELETE FROM client WHERE  domin='yahoo.com';
 
تحديث المعلومات  :
UPDATE client SET  name='ahmed';
 
نفترض أن الزبون الذي يملك  yahoo.com غير تلفونه سنعدله هكذا
UPDATE client SET  phone='87654321' WHERE domin='yahoo.com';
 
إستخراج المعلومات  :
SELECT * FROM  tablename;
 
لاستخراج حقل التلفون  فقط
SELECT phone FROM  client;
 
استخراج معلومات كل العملاء  الذين يحملون الاسم brahim .
SELECT * FROM client WHERE  name='brahim';
 
حسناً , هناك عدة عمليات تتم من  خلال جملة WHERE بمعنى انها ليست فقط للقيم المتساويه , بل لعدّة قيّم مثلا غير  متساويه او اكبر من او يساوي او غيره و هذا الجدول يوضح كل العمليات التي يمكننا  استخدامها في جملة WHERE .
 
   
العمليه
 
وصفها
 
=
 
يساوي
 
<> او  !=
 
لا  يساوي
 
<
 
اكبر  من
 
>
 
اصغر  من
 
=<
 
اكبر من او  يساوي
 
=>
 
اصغر من او  يساوي
 
LIKE
 
خاصه لعمليات  البحث
--اللهم انصر  إخواننا في غزة--
الموضوووووع منقول للامانة.............ارجو لكم الفائدة


مامي

  • Hero Member
  • *****
    • مشاركة: 1140
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #1 في: كانون الثاني 17, 2009, 12:16:11 مسائاً
مشكوووووووووووووووووور


achraf.mouni

  • Hero Member
  • *****
    • مشاركة: 2439
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #2 في: كانون الثاني 21, 2009, 02:10:01 مسائاً
لا شكرا على واجب.................شكرا لمرورك


kharroubi00

  • Full Member
  • ***
    • مشاركة: 193
    • مشاهدة الملف الشخصي
    • http://www.kharroubi14.piczo.com
    • البريد الالكتروني
رد #3 في: آب 15, 2009, 02:12:57 مسائاً
مشكووووووووووووووووووووووووووووووووووووووووووووووووور


mrkarimos08

  • Hero Member
  • *****
    • مشاركة: 1826
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #4 في: آب 23, 2009, 04:49:03 مسائاً
بارك الله فيك على المجهود


3n!Gma

  • Newbie
  • *
    • مشاركة: 8
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #5 في: آب 30, 2009, 09:45:32 مسائاً
مثال حي عما طرحته كأوامر :essen:

افتراض اسم الجدول: list

انشاء قاعدة بيانات mysql

شفرة: [اختيار]
<?php 
$result 
mysql_create_db(&quot;mydb&quot;); 
if (
$result == false
   echo (&
quot;failure to create database&quot;); 
?>


شفرة: [اختيار]
$con = mysql_connect("localhost","ingdz","me");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

if (mysql_query("CREATE DATABASE my_db",$con))
  {
  echo "Database created";
  }
else
  {
  echo "Error creating database: " . mysql_error();
  }

mysql_close($con);
?>


شفرة: [اختيار]
// الاتصال بالقاعدة اولا
mysql_connect("localhost", "admin", "1admin") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());

// اضافة table
mysql_query("CREATE TABLE list(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
 name VARCHAR(30),
 age INT)")
 or die(mysql_error());  

echo "Table Created!";

?>

شفرة: [اختيار]
// الاتصال بالقاعدة
mysql_connect("localhost", "admin", "1admin") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());

// انشاء صف معلومات داخل list table

mysql_query("INSERT INTO list
(name, age) VALUES('3n!Gma', '19' ) ")
or die(mysql_error());    

echo "Data Inserted!";

?>

شفرة: [اختيار]
// انشاء اتصال بقاعدة البيانات
// استعراض البيانات المتواجدة في list

$result = mysql_query("SELECT * FROM list")
or die(mysql_error());  

echo "";
echo "";
while($row = mysql_fetch_array( $result )) {
// استعراض كل المعلومات المتواجدة في كل سطر
echo "";
}

echo "
Name Age
";
echo $row['name'];
echo "
";
echo $row['age'];
echo "
";
?>

شفرة: [اختيار]
// الاتصال بالقاعدة كما سبق

// استعراض معلومات محددة متواجدة في list

$result = mysql_query("SELECT * FROM list
 WHERE name='3n!Gma'") or die(mysql_error());  

$row = mysql_fetch_array( $result );
// استعراض محتويات الصف المحدد
 
echo $row['name']." - ".$row['age'];
?>

او يمكننا استعمال الرمز %

شفرة: [اختيار]
// الاتصال بالقاعدة

$result = mysql_query("SELECT * FROM list WHERE age LIKE '1%' ")
or die(mysql_error());  

while($row = mysql_fetch_array( $result )) {
// امر استعراض محتويات كل صف تكون فيه الاعمار تبدا بالرقم 1
echo $row['name']." - ".$row['age']. "
";
}
?>

شفرة: [اختيار]
// الاتصال بالقاعدة كما سبق

// حدف table
mysql_query("DELETE FROM list WHERE member='girl'")
or die(mysql_error());  
?>


و للمزيد من المعلومات عن اوامر السكويل تفضل هـــــنا
و للمزيد من المعلومات حول ما طرحته من اكواد تفضل هــــنا
مشكور جدا على الطرح المفيد و لي عتاب بسيط،
كان من الافضل طرح امثله عما سردته من معلومات فكتاباتك متداخلة لن يفهمها المبتدئ ابدا
بارك الله فيكم و السلام عليكم :bye1:


demni

  • Newbie
  • *
    • مشاركة: 8
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #6 في: أيلول 08, 2009, 03:16:57 مسائاً
شكرا لك أخي


مامي

  • Hero Member
  • *****
    • مشاركة: 1140
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #7 في: كانون الأول 01, 2009, 10:39:29 صباحاً
كل مرة تتألق أكثر

بارك الله فيك على الإضافة الرائعة


الطريق الى الله

  • Newbie
  • *
    • مشاركة: 16
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #8 في: كانون الأول 27, 2009, 09:04:22 صباحاً
السلام عليكم
 ما فهمت والووووووووو
هههههههههههههههههههههههههههههههههههههه


mimik

  • Hero Member
  • *****
    • مشاركة: 1607
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #9 في: آذار 08, 2010, 10:17:46 مسائاً
شكرا لك مني اجمل تحية


عقرب11

  • Newbie
  • *
    • مشاركة: 1
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #10 في: آذار 09, 2010, 09:04:21 صباحاً
شكـــــــــــــــــــــــــــــــــــــــرا


ناس ملاح

  • Newbie
  • *
    • مشاركة: 17
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #11 في: آذار 09, 2010, 04:31:46 مسائاً
بارك الله فيك  و جزاك الف خير و  نطمح في  ا لمزيد


منة الرحمن

  • Full Member
  • ***
    • مشاركة: 186
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #12 في: آذار 13, 2010, 09:46:05 مسائاً
السلام عليكم ورحمة الله تعالى  وبركاته
 
 
بارك الله فيكي على الفائدة
 
موضوع قيم


tarzan23

  • Full Member
  • ***
    • مشاركة: 183
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #13 في: آذار 13, 2010, 09:52:00 مسائاً
شكرا على المجهود


عبدالحليم

  • Hero Member
  • *****
    • مشاركة: 3717
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #14 في: آذار 13, 2010, 10:38:57 مسائاً
بارك الله فيك على المجهود