יצירת טבלה במסד נתונים מסוג MySQL

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

הטבלאות כשמן כן הן, טבלאות שיש להן כותרת (שם השדה) ונתונים. למשל:


<table border="1" bordercolor="#FFCC00" style="background-color:#FFFFFF" width="400" cellpadding="3" cellspacing="3">
	<tr>
		<td>name</td>
		<td>age</td>
	</tr>
	<tr>
		<td>Moshe</td>
		<td>20</td>
	</tr>
	<tr>
		<td>Haim</td>
		<td>30</td>
	</tr>
	<tr>
		<td>Rahamim</td>
		<td>24</td>
	</tr>
	<tr>
		<td>Noam</td>
		<td>12</td>
	</tr>
</table>

זו דוגמא לטבלה שיכולה בהחלט להתקיים במסד נתונים MySQL. יש לטבלה כותרות (שם וגיל) שהן למעשה השמות של השדות. טבלה יכולה להכיל אינספור נתונים שמכילים שמות וגילאים. אנו ראשית נטפל ביצירת הטבלה – כלומר יצירת הכותרות. אחרי שהגדרתי טבלה, כותרות ושמות כותרות – אני יכול להכניס אליה כמה נתונים שארצה.

ניכנס ל-MySQL Console ונשתמש ב-internet_database שאותו למדנו ליצור במאמר הקודם. אחרי שכתבנו use internet_database אנו יכולים לבצע פעולות על מסד הנתונים שלנו. בואו וניצור את הטבלה שלעיל (רק בלי הנתונים כמובן).

יצירת הטבלה היא פשוטה מאד:


CREATE TABLE internet_names (name VARCHAR(20), age TINYINT);

השורה הזו מתחלקת לשני חלקים. הראשון הוא CREATE TABLE ושם הטבלה (בדוגמא – internet_names). כך אנו יוצרים את הטבלה. בתוך הסוגריים אנו יוצרים את הכותרות (במקרה שלנו שם וגיל) ומגדירים את סוג הנתונים שיהיו בהן. במקרה שלנו מדובר ב-VARCHAR ו-TINYINT כאשר ב-VARCHARS העברנו גם את מספר האותיות שהשדה צריך להכיל כיוון שסוג VARCHAR מחייב את זה.

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

סוגי הנתונים

ערכים נומריים

ישנם מספר ערכים נומריים שאפשר להכניס שהשוני היחידי בינהם הוא גודלם. לכל סוג יש טווח מסוים ממספר שלילי עד מספר חיובי כאשר אפשר להגדיל את הטווח באמצעות ויתור על המספרים השליליים.

ניקח לדוגמא את TINYINT שבו השתמשנו בדוגמא. הטווח שלו הוא בין -128 ל-127. אם הייתי יוצר את TINYINT באופן הבא:


CREATE TABLE internet_names (name VARCHAR(20), age TINYINT(UNSIGNED));

הייתי יכול להכניס מספרים לשדה בגודל של מ-0 עד 255. וזה גם היה יותר נכון, כי אין גיל שלילי.

הנה הסוגים השונים של המספרים – עם unsigned ובלעדיו.

סוג ערך תחתון ערך עליון
(Signed/Unsigned) (Signed/Unsigned)
TINYINT -128 127
0 255
SMALLINT -32768 32767
0 65535
MEDIUMINT -8388608 8388607
0 16777215
INT -2147483648 2147483647
0 4294967295
BIGINT -9223372036854775808 9223372036854775807
0 18446744073709551615

אנו יכולים לאכוף הוספת אפסים לכל מספר על מנת שימלא את כל גודל התא. למשל הוספת אפסים ל-TINYINT תגרום ל-1 להפוך ל-001. הוספת אפסים ל-SMALLINT תגרום ל-1 להפוך ל-00005 וכך הלאה. את זה עושים באמצעות תגית ZEROFILL. הוספת תגית ZEROFILL גם מונעת מספרים שליליים בדיוק כמו UNSSIGNED.


CREATE TABLE internet_names (name VARCHAR(20), age TINYINT ZEROFILL);

כאשר בוחרים INT ניתן להכניס אליו מספר שהוא זה שקובע כמה ספרות יהיו בו, במקום להסתפק בטווחים של השאר.

כמו כן אפשר לקבוע טווח של כמה ספרות אחרי הנקודה. אם אני מכניס את DEC שהוא קיצור של DECIMAL. הוא דומה ל-INT כמעט בכל, למעט העובדה שאפשר להכניס לתוכו גם טווח וגם כמה ספרות אחרי הנקודה אנו מוכנים לקבל. הסינטקס פשוט למדי:


CREATE TABLE internet_names (name VARCHAR(20), age DEC(5,2);

כאשר הכוונה היא למספר עם טווח של 5 ועד 2 ספרות אחרי הנקודה – ממינוס 999.99 עד 999.99. הטווח כולל את הספרות שאחרי הנקודה.

ערכי טקסט

VARCHAR ו-CHAR

כאשר אנו רוצים לאכסן מחרוזות קטנות יחסית של טקסט, VARCHAR או CHAR יהיו הבחירה שלנו. מדובר בתוכן טקסטואלי מסוגים שונים כאשר אנו מעבירים לו פרמטר של בין 0 ל-255 ל-CHAR ופרמטר של בין 0 ל-65,535. הפרמטר הזה קובע את אורך השדה. CHAR יהיה תמיד בערך שקבענו לו. אם אנו מכניסים לתא ערך עם פחות תווים, אז CHAR יכניס רווחים כדי שכל התאים יהיו באורך שקבענו.

BLOB ן-TEXT

אם אנו צריכים לאכסן כמות גדולה יותר של טקסט, בשביל זה אנו משתמשים ב-TEXT או ב-BLOB. BLOB אמור לאכסן אובייקטים בינאריים ואילו TEXT, ובכן, מאכסן טקסט.

TINYTEXT בגודל של עד 255 תווים.

TEXT\BLOB – בגודל של עד 65535 תווים.

MEDIUMTEXT\MEDIUMBLOB – בגודל של עד 16777215 תווים.

LONGTEXT\LONGBLOB – בגודל של עד 4294967295 תווים.

במאמר הבא אנו נמשיך ללמוד על סוגי נתונים ב-MySQL.

כדאי תמיד להשאר מעודכנים! הרשמו לעדכונים של האתר במייל! - המייל יישלח כל יום ראשון בעשר בבוקר ויכיל אך ורק את המאמרים שהתפרסמו באינטרנט ישראל. ללא ספאם, ללא הצפות, ללא בלגנים. 🙂
למדריך ה-MySQL הקודם

אהבתם? לא אהבתם? דרגו!

לא אהבתי בכלללא אהבתיבסדראהבתיאהבתי מאוד (2 הצבעות, ממוצע: 5.00 מתוך 5)

תגיות: פורסם בקטגוריה: לימוד MySQL

אל תשארו מאחור! יש עוד מה ללמוד!

הצטרפו לעדכונים!

העדכונים נשלחים אך ורק כאשר האתר מתעדכן.

רן בר-זיק

רן בר-זיקכותב כל המאמרים באינטרנט ישראל, מפתח אינטרנט מנוסה במגוון שפות ופלטפורמות.
ניתן ליצור איתי קשר באמצעות:
כתובת המייל שלי: info@internet-israel.com.
פרופיל הלינקדאין שלי

הטוויטר שלי

פרופיל הפייסבוק שלי

אני תמיד שמח לייעץ ולעזור, אך בשל עומס הפניות הרב, אני לא תמיד מצליח לענות במהירות.