הרשם שאלות ותשובות רשימת חברים לוח שנה חיפוש הודעות מהיום סמן פורומים כנקראו

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 08-10-05, 01:40   # 1
somebody
A Al Alm Almo Almog!
תודה על תרומתך!
 
somebody's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: hadera CiTy
גיל: 28
הודעות: 4,005
שלח הודעה באמצעות MSN אל somebody

somebody לא מחובר  

[מדריך] SQL - מדריך למתחילים (*מומלץ!)

השאילתה שולפת לנו נתונים מטבלה מסוימת (tablename) שאת שם הטבלה אתם מגדירים לפי מה שאתם רוצים.
וcolumnume אפשר הוא שם העמודה ממנה אתם רוצים לשלוף.
במיקרה ורוצים לשלוף ממספר עמודות כותבתים ככה:
PHP קוד:
SELECT columnume,columnume2,columnume3 FROM tablename 
כאשר כל columnume אחד מציין עמודה אחרת.
ניתן לכתוב גם:
PHP קוד:
SELECT FROM tablename 
אשר שולף את כל העמודות מהטבלה, אבל פעולה זאת איננה יעילה ויותר איטית במיקרה ולא משתמשים בכל העמודות בטבלה הרצויה.
לכן לא רצוי לעשות זאת.

דבר נוסף שרצוי לכתוב זה ככה:
HTML קוד:
SELECT tablename.columnume  FROM tablename
מה שעשינו פה זה פשוט לומר שאנו רוצים לשלוף מטבלה מסוימת את העמוה המסוימת, שזה הרבה יותר יעיל ונירא לי גםם יותר מהיר.

שלב שני, WHERE.
עד עכשיו כתבנו שאילתה בסיסית ביותר אשר רק שולפת נתונים ולא צינו לה איזה נתונים, אלה היא שולפת את כל הנתונים.
כדאי להגדיר איזה נתונים לשלוף אנו משתמשים ב WHERE, WHERE מאפשר לנו לומר לשאילתה לשלוף נתונים איפה ש... משהו או שווה למשו(a=b), או גדול ממשו(a>b), או קטן ממשהו(a<b), או שווה וקטן ממשהו(a<=b), או גדול ושווה למשהו(a>=b), או שונה מ..(a<>b)ישלוף לנו את כל העמודות בהן a שונה מ b.
.

כיצד כותבים זאת?
PHP קוד:
SELECT tablename.columname FROM tablename WHERE columename=something 
כמו שראיתם המבנה הוא אותו מבנה רק שהוספנו WHERE ואחריו את פרמט ההשווה. כמובן שניתן להחליף את השווה לכל סימן אחר.
לא לשכוח כאשר משווים לכל דבר שהוא לא מספרים יש להוסיף גרש(') לפני המשתנה או פרמט ההשווה וגרש בסוף הפרמט/משתנה ההשווה. עוד לזכור שגם כאשר משווים בתאריך יש לכתוב גרש כמו בטקסט, ועוד שבמסד נתונים מסוג ACCESS יש לכתוב # במקום גרש במקרה של השוואת תאריכים!. בMYSQL(מסד מסוג) יש לכתוב גרש.

דבר נוסף הוא שאם עמודה מסוימת שאנו משווים לה איננה מוגדרת כ(int ב mysql או כ מספר/number ב אקסס) אז יש לתחוב את הביטוי המושווה בתוך גרש(') משני צדדיו.
זאת אומרת:
PHP קוד:
WHERE columename='sometext' 
ואם השדה מוגדר כמספר אז ככה:
PHP קוד:
WHERE columename=number 
עכשיו תאריכים.
כאשר העמודה המושוות מוגדרת כ תאריך כל שהוא לדוגמא TIME או DATE יש לתחוב(עדיין כשור לWHERE עניין תחיוות הביוטי) בתין גרש(') במסד מסוג MYSQL ובמסד מסוג אקסס יש לתחוב את התאריך בסולמיט(#).
זאת אומרת:
באקסס ככה:
PHP קוד:
WHERE columename<>%19/09/1786
ובMYSQL ככה:
PHP קוד:
WHERE columename<>'1786-09-19' 
כמובן שלא חייב שונה אפשר כל סימן אחר. אפילו LIKE שעליו תוכלו ליקרוא בסוף המדריך.

דבר נוסף שיחלתם ליראות הוא שבMYSQL התאריך כתוב בצורה שונה.
מה שאומר שצרכים פונקציה מסויימת אשר תסדר את התאריך כי MYSQL לא מקבל תאריכים השונים מסדר זה.
(עכשיו אני מדבר רק לאלו אשר מתכנתים בASP עם VBS).
מתכנתי PHP אנא אם יש לכם כוח תרגמו את הפונקציה לPHP וכיתבו אותה ואני כבר אכתוב אותה במדריך. ואכתוב כמובן שאתם כתבתם.
זאת הפונקציה:
PHP קוד:
aday=day(date())
amonth=month(date())
ayear=year(date())
if 
len(aday)<2 then aday=0&aday
if len(amonth)<2 then amonth=0&amonth
adate
=ayear&"-"&amonth&"-"&qyear 
ואז להכניס להשוות את התאריך למשתנה ADATE או אך שלא תיקראו לו.

זהו חלק ראשון בהודעה מתחת יש המשך, אין לי מושג למה הפורום הגביל אותי
__________________
דוא"ל: almog.zimel ב ג'מייל נקודה קום
מסנג'ר: almog שטרודל freetopsite נקודה co נקודה il


Last edited by somebody; 08-10-05 at 12:09..
  Reply With Quote
ישן 08-10-05, 01:44   # 2
somebody
A Al Alm Almo Almog!
תודה על תרומתך!
 
somebody's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: hadera CiTy
גיל: 28
הודעות: 4,005
שלח הודעה באמצעות MSN אל somebody

somebody לא מחובר  

אחרי שעברנו על אילתת ה WHERE נעבור על אפשרות נוספת בניקראת ORDER BY.
מה בעצם הוא ORDER BY?
ORDER BY מאפשר לנו שלוף את הנתונים בסד מסויים שבסדר הזה הוא יודפס כאשר נדפיס את הנתונים בעמוד ע"י שפת צ"ש כל שהיא.
ORDER BY בא בסוף השאילתה(עד לאיפה שלמדנו, כאשר נתקדם נירא שיש עוד תוספת שבאה אחריו.) אחרי WHERE.
ORDER BY מוגדר ע"י שני אפשרויות, ASC (ברירת מחדל לא חובה להגדירו, מלמעלה למטה, זאת אומרת שולף מהשורה הראשונה עד לאחרונה.). ו DESC אשר שולף מלמטה למעלה(הפוך מ ASC) כאשר השורה האחרונה בטבלה תשלף ראשונה ועוד הראשונה בטבלה תשלף אחרונה, כאשר רוצים להשתמש בפעולה זאת יש להגדירה בשאילתה.
לפני הגדרת ASC או DESC (כאשר רוצים ASC לא חייבים להגדיר כמו שאמרתי ואפשר ישר לדלג לכתיבה זאת(מה שעכשיו אני אכתוב.)), כותבים את שם העמודה שרוצים לסדר ע"י . במיקרה והעמודה היא עמודת טקסט אז השורות יסודרו מ א-ת או מ ת-א תלוי אך הגדרנו לפני זה, ובמקרה ומספר ישלף המספר הגדול ביותר או הקטן ביותר שוב תלוי אך הגדרנו לפני.

קוד לדוגמא:
PHP קוד:
SELECT tbalename.columname FROM tablename WHERE 
tablename
.columname=something ORDER BY tablename.columname DESC 
או ע"י ASC ככה:

PHP קוד:
SELECT tbalename.columname FROM tablename WHERE 
tablename
.columname=something ORDER BY tablename.columname 
ואפשר כמובן גם ךהוסיף בסוף ASC אבל זה לא משנה.

הערה!
אני אציין שוב, לא חובה לכתוב את כל "התוספות" בשאילתה אחת! ניתן להשתמש לדוגמא רק ב WHERE בלי ORDER BY ואפשר רק ב ORDER BY בלי WHERE.
רק חשוב לזכור שהמבנה הבסיסי של השאילתה תמיד נישאר ולא ניתן להשמיתו!.


LIMIT . ביטוי אינו פועל במסד נתונים מסוג ACCESS אני יודע שהוא מתקבל בMYSQL אין לי מושג אם גם ב MSSQL, אם משהו יודע בבקשה תכתבו בהמשך האשכול.

משהו LINIT?
LIMIT מאפשר לנו שלוף מספר נתונים ולא את כל הנתונים.
מה זאת אומרת?.
אני אסביר את זה בתור דוגמא.
למשל יש לנו 4 עמודים ובכל עמוד אנו רוצים להציג 10 רשומות(=שורות).
אז כדאי להציג את זה ביתר קלות נשתמש בLIMIT כדאי לשלוף אותם.(אינני אפשרת כיצד לבצע חלוקה לעמודים אלה רק אך להשתמש בביטוי זה. אולי אני או משהו אחר יכתוב מדריך לחלוקה לעמודים ב MYSQL ע"י LIMIT).

LIMIT נכתב בסוף השאילתה, וכותבים אותו בצורה כזאת (בהמשך אני אכתוב את השאילה בשלמותה עכשיו אני אכתוב רק על מבנה ה LIMIT כחלק משאילתה שלמה.).

LIMIT number,number2
ה number מציין מאיזו שורה להתחיל לשלוף. זאת אומרת אם נכתוב 10 אז השאילתה תשלוף לנו נתונים החל משורה 10 ולא החל משורה 1 בטבלה.
number2 מציין את מספר השורות שישלפו.
זאת אומרת שאם נכתוב בnumber2
5 ובnumber
10 אז ישלפו לנו נתונים מהטבלה מ שורה 10- שורה 15.
ואם נכתוב נגיד ב number
39 ובnumber2
נכתוב 9 אז ישלפו לנו נתונים משורה 39- שורה 48.
מקווה שעד לפה הבנתם.

כיצד כותבים זאת בקוד?

PHP קוד:
SELECT tablename.columename FROM tablename WHERE tablename.columname=something ORDER BY tablename.columname DESC LIMIT number,number2 
זה הקוד. ושוב אציין כי לא חובה לכתוב את כל הביטויים בשאילתה אחת! אלה אפשר לכתוב רק אחת מהביוטיים חוץ משאילתת הבסיס שכמו שכתבתי בהתחלה היא:
SELECT tablename.columename FROM tablename
שהיא חייבת להיות בגלל שהיא הבסיס כל שאל הביטויים לא חובה לכתוב אם לא צרכים אותם באותה שאילתה.

ישנה אפשרות נוספת שעכשיו נזכרתי בה והיא LIKE, LIKE מאפשר לנו לשלוף נתונים אשר יש בהם...
LIKE היא תוספת ל שאילתת ה WHERE מה שאומר שאין רק (=,>,<,<>,=>,=<) אלה גם LIKE אשר מאפשר לנו לשלוףמעמודה מסויימת את השורות בהם יש בתוך קטע מסויים את הביטוי שהזנו שLIKE הוא.
כיצד כותבים את LIKE?
PHP קוד:
WHERE tablename.ciolumname LIKE '%string%' 
עכשיו נכתוב זאת בשאילתה מלאה:
PHP קוד:
SELECT tablename.columname FROM tablename WHERE columname LIKE '%g%' 
מה שעשינו כאן זה לשלוף את כל הנתונים אשר בעמודה מסויימת איפה שבתוך המחרוזת יש את האות g.
כמובן שניתו לשרות את g בכל סימן אחר, לדוגמא תאריך.

ישנם מספר צורות בהם ניתן להשתמש ב LIKE .
כמו שכתבתי בתחלה (פסקה מעל) זה שולף מהשורה בעמודה מסויימת לא משנה איפה נימצאת האות g.

ניתן גם לשלןף ע"י LIKE איפה נגיד ש g נמצאת בתחילת המחרוזת, בסוף המחרוזת .
כיצד שולפים את השורות בהם תו מסויים נמצא בסוף המחרוזת?
באותה דרך רק שסימן האחוז (%) נימצא רק לפני התו הרצוי ולא בשני צדדיו.
דוגמא:

PHP קוד:
SELECT tablename.columname FROM tablename WHERE columname LIKE %
'
מה שעשינו כאן זה לשלוף את כל השורות בהם האות g בסוף המחרוזת.

כיצד שולפים את הנתונים בהם בתו בתחילת המחרוזת?.
שמים את סימן האחוז(%) אחרי התו הרצוי(חשוב לזכור! לא חובה רק תו אחת ניתו לחפש מחרוזת מתוך מחרוזת, זאת אומרת לשלוף את הנתונים נגיד איפה ש המשפט "השעה לא חשובה" נימצא בהם. וניתן גם לשלוף נתונים איפה שנימצאים סתם לדוגמא טקסט שלם כל שהוא שצויין.)
כיצד כותבים זאת?(שהתו נימצא בתחילת המחרוזת לסנילים שבינינו).


PHP קוד:
SELECT tablename.columname FROM tablename WHERE columname LIKE 'g%' 
מה שעשינו כאן זה לשלוף את כל השורות בהם האות g נמאת בתחילת המחרוזת.

כמו שטח שמתם לב הסימן אחוז(%) מציין את המחרוזת, זאת אומרת שאם תזכרו שה% מציין מחרוזת אז תזכרו ביתר קלות את האפשרויות של ה LIKE(נירא לי זה מה שרציתי לכתוב, מה לעשות אני לא רגיל לכתוב כל כך הרבה בכאלו שעות. ).
__________________
דוא"ל: almog.zimel ב ג'מייל נקודה קום
מסנג'ר: almog שטרודל freetopsite נקודה co נקודה il

  Reply With Quote
ישן 08-10-05, 01:45   # 3
somebody
A Al Alm Almo Almog!
תודה על תרומתך!
 
somebody's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: hadera CiTy
גיל: 28
הודעות: 4,005
שלח הודעה באמצעות MSN אל somebody

somebody לא מחובר  

המשךך

והינה שאילה אחרונה של כל מה שלמדנו ביחד:
PHP קוד:
SELECT tbalename.columename,tabltname.columename2,tablename.columname3 FROM tablename WHERE tablename.columename3 LIKE '%string' ORDER BY tablename.columename2 DESC LIMIT number,nember2 

עוד דבר שחשוב מאוד לזכור הוא שMYSQL בגירסאות השונות שלו (חוץ מהחדשה נידמה לי) מחייב התאמה בן אותיות קטנות וגדולות!
מה שאומר שאם קראתם לטבלה מסויימת ABC
לא תוכלו לציין בשאילתה:

FROM AbC
כי לאחר מיכן תקבלו שגיאה.
(זה מתייחס לטבלאות ולא לעמודות! מעמודות הוא מתעלם!.)
זהו!

סימנו את המדריך הראשון, הבסיס של SQL .
בהמשך יכתבו גם מדריכים להכנסת, עידכון, מחיקת וכו... נתונים/טבלאות ע"י SQL.
תיהיה בטוחים שלא היום!(רק אם מישהו נחמד ישב ויכתוב ).

בהצלחה ללומדים מקווה שתבינו משהו מהסבטוח(אין לי מושג אך כותבים) הזאת

אין להעתיק את המדריך לשום פורום אחר ללא רשומת ממני! מדרך זה נכתב לפורום הוסטס ע"י ואני לא מסכים שהוא יופץ ללא רשומת ממני בשום פורום אחר!
__________________
דוא"ל: almog.zimel ב ג'מייל נקודה קום
מסנג'ר: almog שטרודל freetopsite נקודה co נקודה il

  Reply With Quote
ישן 08-10-05, 01:51   # 4
somebody
A Al Alm Almo Almog!
תודה על תרומתך!
 
somebody's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: hadera CiTy
גיל: 28
הודעות: 4,005
שלח הודעה באמצעות MSN אל somebody

somebody לא מחובר  

שחכתי להזכיר.

עוד דבר ששחכתי להזכיר זה שניתן לבצע פעולות מתמטיות במשפט SQL.
ואין לי כוח לכתוב על זה עכשיו.

ושחכתי לכתוב שיש מספר פונקציות שאפשר לבצע ש4 השחיכות ביותר הן max- שולף את השורה המקסימלית איפה ש..
min- שולף את השורה המינימליט איפה ש..

count- מחשב את מספר השורות איפה ש...

ו SUM- מחזיר את סכום השורות איפה ש...

מבנה שאילתה:
PHP קוד:
SELECT MAX(columename) AS newname FROM tablename WHERE columename=something 
שוב להזכיר לא חובה WHERE ואל מה שכתבתי למעלה.
AS מציב את התוצאה בתוך משתנה שאתם רוצים ואתה יכולים ליקרוא לו כרצונכם.
ואז כדאי לשלוף את הנתון אל הדף אתם כותבים את השם של הנתון החדש.
ניתן להחליף את ה MAX בכל אחד מ ה4 האחרים(3 אחרים 4 כולל זה). ישנם עוד כל מיני פונקציות אפשריות.
מי שמשתמש ב MYSQL יוכל לחפש פה:
www.mysql.com

קריאה מהנה, לא לשכוח זכויות!
__________________
דוא"ל: almog.zimel ב ג'מייל נקודה קום
מסנג'ר: almog שטרודל freetopsite נקודה co נקודה il


Last edited by somebody; 08-10-05 at 12:11..
  Reply With Quote
ישן 08-10-05, 01:52   # 5
somebody
A Al Alm Almo Almog!
תודה על תרומתך!
 
somebody's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: hadera CiTy
גיל: 28
הודעות: 4,005
שלח הודעה באמצעות MSN אל somebody

somebody לא מחובר  

וואי אתם לא יודעים אך כואבת לי היד והתחלתי להיות אילג משורה לשורה יותר.. חחחח..
לקח לי כמעת שעה וחצי ברצף כתיבה אם לא יותר..

תהנו
__________________
דוא"ל: almog.zimel ב ג'מייל נקודה קום
מסנג'ר: almog שטרודל freetopsite נקודה co נקודה il

  Reply With Quote
ישן 08-10-05, 02:04   # 6
בן.נ.
מתאורר / יצא בחוץ
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: Raanana
גיל: 30
הודעות: 1,859
שלח הודעה באמצעות ICO אל בן.נ. שלח הודעה באמצעות MSN אל בן.נ.

בן.נ. לא מחובר  

מדהיםםםםםםםםם!
כל הכבוד אלמוג ! תודה רבה !
  Reply With Quote
ישן 08-10-05, 08:14   # 7
WebProject
מ.תיכנות
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: אשדוד
הודעות: 3,070
Send a message via Skype™ to WebProject

WebProject לא מחובר  

כל הכבוד
__________________
כושר קרבי \ טיפים לגיבושים



פורטל רעל - צבא וכושר קרבי
  Reply With Quote
ישן 08-10-05, 08:30   # 8
satan
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 28
הודעות: 1,582

satan לא מחובר  

יפה מאוד!
  Reply With Quote
ישן 08-10-05, 10:05   # 9
ColorSense
חבר על
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: תל אביב
גיל: 28
הודעות: 861

ColorSense לא מחובר  

תודה רבה
  Reply With Quote
ישן 08-10-05, 12:08   # 10
somebody
A Al Alm Almo Almog!
תודה על תרומתך!
 
somebody's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: hadera CiTy
גיל: 28
הודעות: 4,005
שלח הודעה באמצעות MSN אל somebody

somebody לא מחובר  

בקשה
עוד משהו זה נכתב על 3 הודעות כי הפורום הגביל אותי כל שניה..
__________________
דוא"ל: almog.zimel ב ג'מייל נקודה קום
מסנג'ר: almog שטרודל freetopsite נקודה co נקודה il

  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 

Tags
מדריך למתחילים, מדריך מומלץ, מדריך sql

כלים לאשכול
תצורת הצגה

חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 07:04.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ