MySQL Database Full Course – Somo la 5: MySQL Data Types – INT, VARCHAR, TEXT, DATE, DECIMAL na Nyingine
Karibu kwenye Somo la 5 la MySQL Database Full Course kwa Kiswahili.
Katika somo lililopita tulitengeneza database yetu ya kwanza:
school_managementSasa kabla hatujaanza kutengeneza tables, lazima tujue kitu muhimu sana:
Data Types
Kila column tunayoweka kwenye table lazima tujue itahifadhi aina gani ya data.
Kwa mfano:
Jina la mwanafunzi
Umri
Tarehe ya kuzaliwa
Namba ya simu
Ada
JinsiaHizi zote si data za aina moja.
Jina ni text.
Umri ni number.
Tarehe ya kuzaliwa ni date.
Ada inaweza kuwa decimal.
Kwa hiyo tunahitaji kuchagua Data Type sahihi kwa kila column.
Malengo ya Somo
Baada ya kumaliza somo hili utaweza kuelewa:
- Data Type ni nini
INTBIGINTSMALLINTTINYINTVARCHARCHARTEXTDATEDATETIMETIMESTAMPTIMEYEARDECIMALFLOATDOUBLEBOOLEANENUM- Jinsi ya kuchagua Data Type sahihi
- Kwa nini phone number si vizuri kuhifadhiwa kama integer
- Kwa nini fedha zinahitaji
DECIMAL - Makosa ya kawaida ya Data Types
1. Data Type ni Nini?
Data Type ni aina ya data ambayo column inaruhusiwa kuhifadhi.
Kwa mfano:
student_nameinahifadhi majina.
Kwa hiyo inaweza kutumia:
VARCHARLakini:
ageinahifadhi number.
Inaweza kutumia:
INTKwa hiyo database inahitaji kujua mapema:
Column hii itahifadhi aina gani ya data?
2. Mfano Rahisi
Fikiria table ya students yenye columns:
id
student_name
age
gender
date_of_birth
phone_numberTunaweza kufikiria Data Types kama:
id → INT
student_name → VARCHAR
age → INT
gender → VARCHAR
date_of_birth → DATE
phone_number → VARCHARHii ndiyo kazi ya Data Types.
3. Kwa Nini Data Types ni Muhimu?
Data Types zinasaidia:
- Kuhifadhi data kwa mpangilio sahihi
- Kupunguza matumizi ya storage
- Kuzuia data zisizofaa
- Kuboresha performance
- Kurahisisha calculations
- Kurahisisha sorting
- Kurahisisha validation
- Kuboresha database design
Kwa hiyo kuchagua Data Type sahihi ni sehemu muhimu sana ya database design.
4. Makundi Makuu ya MySQL Data Types
Kwa urahisi tunaweza kugawa Data Types katika makundi:
Numeric Types
String Types
Date and Time Types
Boolean Types
Special TypesTutazichambua moja baada ya nyingine.
5. INT
INT hutumika kuhifadhi integer numbers.
Integer ni number isiyo na decimal.
Mfano:
1
2
10
100
5000Mfano wa column:
age INTAu:
id INT6. INT Inafaa Kutumika Wapi?
INT inaweza kutumika kwa:
student_id
teacher_id
class_id
age
quantity
number_of_studentsMfano:
student_id INTBaadaye tutajifunza kutumia:
AUTO_INCREMENTpamoja na INT.
7. BIGINT
BIGINT hutumika kuhifadhi integer kubwa zaidi kuliko INT.
Mfano:
transaction_id BIGINTInaweza kuwa useful kwenye systems zenye records nyingi sana.
Kwa mifumo mingi ya kawaida, INT inatosha.
8. SMALLINT
SMALLINT hutumika kwa integer ndogo kuliko INT.
Mfano unaweza kutumia kwa:
year_level
small countersMfano:
number_of_subjects SMALLINTLakini beginner unaweza kutumia INT katika situations nyingi hadi uelewe optimization zaidi.
9. TINYINT
TINYINT hutumika kuhifadhi integer ndogo.
Inaweza kutumika kwenye values kama:
0
1Mfano:
is_active TINYINTAmbapo:
1 = Active
0 = Inactive10. BOOLEAN
MySQL inaweza kutumia:
BOOLEANMfano:
is_active BOOLEANKwa matumizi mengi ya MySQL, BOOLEAN hutazamwa kama aina inayohusiana na TINYINT.
Mfano:
TRUE = 1
FALSE = 011. VARCHAR
VARCHAR ni moja ya Data Types muhimu sana.
Inatumika kuhifadhi text yenye urefu unaoweza kubadilika.
Mfano:
student_name VARCHAR(100)100 inaonyesha maximum length ya characters.
Mfano wa data:
Asha Mohamed
John Peter
Neema Joseph12. VARCHAR Inatumika Wapi?
Unaweza kutumia VARCHAR kwa:
student_name
email
phone_number
address_short
username
school_name
subject_nameMfano:
student_name VARCHAR(100)13. Maana ya VARCHAR(100)
Mfano:
student_name VARCHAR(100)Hii ina maana column inaweza kuhifadhi text hadi urefu uliowekwa.
Haijalazimiki kutumia characters zote 100.
Mfano:
Ashani sawa.
Pia:
Asha Mohamed Allyinaweza kuwa sawa ikiwa haizidi limit.
14. VARCHAR(50) vs VARCHAR(255)
Usichague length bila sababu.
Mfano:
gender VARCHAR(255)inaweza kuwa kubwa kuliko inavyohitajika.
Unaweza kutumia:
gender VARCHAR(20)Kwa email unaweza kutumia:
email VARCHAR(255)Kwa jina:
student_name VARCHAR(150)Chagua size kulingana na data inayotarajiwa.
15. CHAR
CHAR hutumika kuhifadhi text yenye length fixed.
Mfano:
gender_code CHAR(1)Data inaweza kuwa:
M
FAu:
country_code CHAR(2)Mfano:
TZ
KE
UG16. CHAR vs VARCHAR
Tofauti rahisi:
CHAR
↓
Fixed length
VARCHAR
↓
Variable lengthMfano:
country_code CHAR(2)ni nzuri kwa sababu country code ina length inayojulikana.
Lakini:
student_name VARCHAR(100)ni bora kwa sababu majina yana length tofauti.
17. TEXT
TEXT hutumika kuhifadhi text ndefu.
Mfano:
description TEXTInaweza kutumika kwa:
blog_content
student_notes
teacher_comments
description
remarks18. VARCHAR vs TEXT
Mfano:
student_name VARCHAR(100)ni nzuri kwa jina.
Lakini:
biography TEXTinafaa zaidi kwa maelezo marefu.
Kwa lugha rahisi:
Short / medium text
↓
VARCHAR
Long text
↓
TEXT19. DATE
DATE hutumika kuhifadhi tarehe.
Format ya kawaida ni:
YYYY-MM-DDMfano:
2026-09-01Column:
date_of_birth DATEMfano:
2005-06-1520. DATE Inatumika Wapi?
Mfano:
date_of_birth
registration_date
exam_date
payment_date
admission_dateColumn:
registration_date DATE21. DATETIME
DATETIME hutumika kuhifadhi:
Date + TimeMfano:
2026-09-01 14:30:00Column:
created_at DATETIMEInaweza kutumika kujua record iliundwa lini.
22. TIMESTAMP
TIMESTAMP pia hutumika kuhifadhi date na time.
Mfano:
created_at TIMESTAMPMara nyingi hutumika pamoja na:
CURRENT_TIMESTAMPMfano:
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMPHii inaweza kuweka muda wa record kuundwa automatically.
23. DATETIME vs TIMESTAMP
Kwa beginner unaweza kukumbuka:
DATETIME
↓
Date na time
TIMESTAMP
↓
Date na time, mara nyingi hutumika kwa automatic timestampsMfano wa kawaida sana:
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMPTutautumia sana baadaye.
24. TIME
TIME hutumika kuhifadhi muda.
Mfano:
08:30:00
14:45:00Column:
start_time TIMEInaweza kutumika kwa:
class_start_time
meeting_time
opening_time25. YEAR
YEAR inaweza kutumika kuhifadhi mwaka.
Mfano:
academic_year YEARLakini mara nyingi academic year inaweza kuwa complex zaidi, mfano:
2025/2026Hapo unaweza kutumia VARCHAR.
Kwa hiyo Data Type inategemea structure ya data yako.
26. DECIMAL
DECIMAL hutumika kuhifadhi numbers zenye decimal kwa usahihi mkubwa.
Mfano:
1000.50
25000.00
750.75Mfano wa column:
amount DECIMAL(10,2)27. Maana ya DECIMAL(10,2)
Mfano:
amount DECIMAL(10,2)Kwa lugha rahisi:
10
↓
Jumla ya digits
2
↓
Digits baada ya decimal pointMfano:
1500.5028. DECIMAL Inafaa kwa Fedha
Kwa data kama:
fees
salary
price
payment
contribution
balanceni vizuri kutumia:
DECIMALMfano:
school_fee DECIMAL(12,2)29. Kwa Nini Money Isitumie FLOAT?
FLOAT inaweza kuwa na approximation katika baadhi ya calculations.
Kwa financial data tunahitaji precision.
Kwa hiyo:
Money
↓
DECIMALni uchaguzi mzuri zaidi katika cases nyingi.
30. FLOAT
FLOAT hutumika kwa numbers zenye decimal ambapo approximation inaweza kukubalika.
Mfano:
temperature FLOATInaweza kutumika kwenye:
scientific measurements
sensor data
approximate values31. DOUBLE
DOUBLE pia hutumika kwa floating-point values lakini ina precision kubwa kuliko FLOAT.
Kwa financial values bado mara nyingi:
DECIMALndiyo option bora.
32. ENUM
ENUM inaweza kutumika wakati column ina list ndogo ya values zinazokubalika.
Mfano:
gender ENUM('Male', 'Female')Inaweza kuhifadhi moja tu kati ya options hizo.
33. ENUM Mfano Mwingine
status ENUM('Active', 'Inactive', 'Suspended')Hii inazuia values zisizo kwenye list hiyo katika mazingira yanayofaa.
34. ENUM Ina Faida na Hasara
Faida:
- Inazuia values zisizotarajiwa
- Ni rahisi kwa options chache
Lakini ikiwa values zinabadilika mara nyingi, inaweza kuwa bora kutumia table nyingine.
Mfano badala ya:
class_name ENUM('Form One', 'Form Two')ni bora kuwa na table:
classeskwa sababu classes zinaweza kubadilika au kuongezeka.
35. Phone Number Itumie Data Type Gani?
Hili ni kosa linalofanywa sana.
Watu wanaweza kuandika:
phone_number INTLakini mara nyingi hii si nzuri.
Kwa nini?
Phone number si number ya kufanya calculations.
Hatusemi:
0712345678 + 0623456789Phone number ni identifier.
Kwa hiyo ni bora kutumia:
phone_number VARCHAR(20)36. Kwa Nini Phone Number Itumie VARCHAR?
Phone numbers zinaweza kuwa na:
+
leading zero
spaces
country codeMfano:
0712345678
+255712345678Integer inaweza kupoteza leading zero.
Kwa hiyo:
phone_number VARCHAR(20)ni bora.
37. ID Card Number Je?
Hata kama ID ina digits pekee, kama hutatumia kufanya calculations, inaweza kuwa VARCHAR.
Mfano:
national_id VARCHAR(50)Kwa sababu identifier inaweza kuwa na:
leading zeros
letters
special formats38. Registration Number
Mfano:
STU-2026-001Hii lazima iwe text.
Kwa hiyo:
registration_number VARCHAR(50)39. Email
Email ni text.
Kwa hiyo:
email VARCHAR(255)Mfano:
student@example.com40. Password
Password haipaswi kuhifadhiwa kama plain text.
Baadaye tutajifunza password hashing.
Database column inaweza kuwa:
password VARCHAR(255)kwa password hash.
Tutajifunza hii kwa undani kwenye security section.
41. Gender
Una options kadhaa.
Mfano:
gender VARCHAR(20)Au:
gender ENUM('Male', 'Female')Design sahihi inategemea requirements za mfumo.
42. Marks
Marks zinaweza kuwa integer kama mfumo unaruhusu marks kama:
50
75
90Mfano:
marks INTLakini kama marks zinaweza kuwa:
75.5
88.25unaweza kutumia:
marks DECIMAL(5,2)43. Average
Average mara nyingi inaweza kuwa decimal.
Mfano:
average DECIMAL(5,2)Data:
75.50
68.25
91.0044. Age vs Date of Birth
Unaweza kuhifadhi:
age INTLakini age hubadilika kila mwaka.
Mara nyingi ni bora kuhifadhi:
date_of_birth DATEkisha age ikahesabiwa inapohitajika.
Hii ni database design nzuri zaidi katika systems nyingi.
45. Mfano wa Student Data Types
Tunaweza kufikiria table:
studentsyenye:
id
student_name
gender
date_of_birth
phone_number
email
address
created_atData Types:
id INT
student_name VARCHAR(150)
gender VARCHAR(20)
date_of_birth DATE
phone_number VARCHAR(20)
email VARCHAR(255)
address TEXT
created_at TIMESTAMP46. Mfano wa Contributions Table
Kwa accounting system:
id
student_id
amount
paid_date
remarksData Types:
id INT
student_id INT
amount DECIMAL(12,2)
paid_date DATE
remarks TEXT47. Data Type Isichaguliwe kwa Kuangalia Data Pekee
Mfano:
0712345678inaonekana kama number.
Lakini maana yake ni phone number.
Hatutafanya mathematical calculations nayo.
Kwa hiyo:
VARCHARni bora.
Hii inatuonyesha kwamba Data Type huchaguliwa kwa kuangalia:
Data ni nini?
Itatumika kufanya nini?
Ina format gani?
Inaweza kubadilika vipi?48. Numeric Data vs Numeric-Looking Data
Kuna tofauti kati ya:
Numeric data
na
data inayoonekana kama number
Mfano:
age = 25ni numeric data.
Lakini:
phone = 0712345678inaonekana kama number lakini ni identifier.
Kwa hiyo:
age
↓
INT
phone
↓
VARCHAR49. NULL
NULL si Data Type, lakini ni concept muhimu.
NULL ina maana:
Hakuna valueMfano mwanafunzi hana email:
email = NULLTutajifunza NULL kwa undani kwenye somo lake.
50. NOT NULL
Mfano:
student_name VARCHAR(150) NOT NULLHii ina maana lazima student_name iwepo.
Haiwezi kukosekana.
Tutajifunza constraints kwa undani baadaye.
51. DEFAULT
Unaweza kuweka default value.
Mfano:
status VARCHAR(20) DEFAULT 'Active'Ikiwa user hajaweka status, database inaweza kuweka:
ActiveTutajifunza zaidi kwenye constraints.
52. UNSIGNED
Kwa integer values ambazo hazitakiwi kuwa negative unaweza kutumia concept ya UNSIGNED.
Mfano:
age INT UNSIGNEDKwa sababu age haiwezi kuwa:
-25Lakini hatuhitaji kuitumia kila mahali bila sababu.
53. Data Type ya ID
Kwa records nyingi, ID inaweza kuwa:
id INTBaadaye tutajenga:
id INT AUTO_INCREMENT PRIMARY KEYHii itakuwa structure muhimu sana.
54. Data Type ya Class ID
Foreign Key mara nyingi inapaswa kuwa compatible na Primary Key inayorejea.
Mfano:
classes.id
↓
INTbasi:
students.class_id
↓
INTHii inafanya relationship kuwa sahihi.
55. Mfano wa Database Design
Fikiria:
classesina:
id INT
class_name VARCHAR(100)students inaweza kuwa:
id INT
student_name VARCHAR(150)
class_id INTclass_id inalingana na type ya classes.id.
56. Makosa ya Kawaida: Kila Kitu VARCHAR
Beginner anaweza kuandika:
id VARCHAR
age VARCHAR
marks VARCHAR
amount VARCHAR
date VARCHARHii si database design nzuri.
Kwa nini?
Kwa sababu baadhi ya data zinahitaji calculations, sorting na date operations.
Tumia Data Type kulingana na maana ya data.
57. Makosa ya Kawaida: Kila Kitu INT
Pia usiweke kila kitu kama:
INTMfano:
phone_number
registration_number
postal_codezinaweza kuonekana numeric lakini si lazima ziwe numbers za calculations.
58. Makosa ya Kawaida: Money FLOAT
Kwa financial system:
amount FLOATsi choice nzuri katika situations nyingi.
Tumia:
amount DECIMAL(12,2)kwa precision bora.
59. Makosa ya Kawaida: Date kama VARCHAR
Unaweza kuandika:
date_of_birth VARCHAR(50)lakini hii inaweza kufanya date calculations kuwa ngumu.
Bora:
date_of_birth DATE60. Faida ya DATE
Kwa kutumia:
DATEbaadaye unaweza kufanya operations kama:
- Kutafuta records kwa tarehe
- Kupanga kwa tarehe
- Kuhesabu tofauti ya tarehe
- Kuchuja kwa mwaka
- Kuchuja kwa mwezi
Hii ni bora kuliko kuhifadhi date kama text bila sababu.
61. Mfano Mbaya
id VARCHAR
student_name TEXT
age VARCHAR
phone_number INT
date_of_birth VARCHAR
fees FLOATHapa kuna choices nyingi zisizo nzuri.
62. Mfano Bora
id INT
student_name VARCHAR(150)
age INT
phone_number VARCHAR(20)
date_of_birth DATE
fees DECIMAL(12,2)Hii inaeleweka zaidi.
63. Data Types za Course Yetu
Tutatumia sana:
INT
VARCHAR
TEXT
DATE
DATETIME
TIMESTAMP
DECIMAL
BOOLEANHizi zitaonekana mara nyingi katika projects zetu.
64. Cheat Sheet Rahisi
Kumbuka:
ID
↓
INT
Name
↓
VARCHAR
Phone
↓
VARCHAR
Email
↓
VARCHAR
Long Description
↓
TEXT
Date of Birth
↓
DATE
Created Time
↓
TIMESTAMP
Money
↓
DECIMAL
True / False
↓
BOOLEAN65. Mfano wa Table Tunayotarajia Kujenga
Baada ya kuelewa Data Types, tutakuwa tayari kutengeneza table kama:
CREATE TABLE students (
id INT,
student_name VARCHAR(150),
gender VARCHAR(20),
date_of_birth DATE,
phone_number VARCHAR(20),
email VARCHAR(255),
address TEXT
);Usiwe na wasiwasi kuhusu CREATE TABLE bado.
Tutajifunza rasmi kwenye somo linalofuata.
66. Je VARCHAR(255) Itumike Kila Mahali?
Hapana.
Ingawa VARCHAR(255) ni common, si lazima iwe choice ya kila column.
Mfano:
student_nameunaweza kuweka:
VARCHAR(150)Kwa:
statusunaweza kuweka:
VARCHAR(20)Chagua length inayoendana na requirements.
67. Je Tunahitaji Optimization Tangu Mwanzo?
Ni vizuri kufikiria Data Types, lakini beginner asikwame sana kwenye optimization ndogo.
Kwanza elewa:
Meaning of data
↓
Correct Data Type
↓
Correct structureOptimization ya juu tutajifunza baadaye.
68. Data Type ya School Name
Mfano:
school_name VARCHAR(200)Hii ni reasonable kwa school name.
69. Data Type ya Remarks
Remarks zinaweza kuwa fupi au ndefu.
Unaweza kutumia:
remarks TEXThasa kama length haijulikani.
70. Data Type ya Grade
Grade inaweza kuwa:
A
B
C
D
FUnaweza kutumia:
grade VARCHAR(5)Au kulingana na mfumo:
grade CHAR(1)Kama grades zote ni character moja.
71. Data Type ya Position
Position inaweza kuwa:
1
2
3
4Kwa hiyo:
position INTinafaa.
72. Data Type ya Percentage
Percentage inaweza kuwa:
75.25Kwa hiyo:
percentage DECIMAL(5,2)inaweza kutumika.
73. Data Type ya Created At
Mfano:
created_at TIMESTAMPNa baadaye tunaweza kutumia:
DEFAULT CURRENT_TIMESTAMPHii itasaidia database kuweka muda automatically.
74. Data Type ya Updated At
Unaweza pia kuwa na:
updated_at TIMESTAMPBaadaye tutajifunza namna ya kusasisha timestamp wakati record inabadilishwa.
75. Naming na Data Types
Column names pia ziwe descriptive.
Badala ya:
namekwenye table yenye context ngumu, unaweza kutumia:
student_nameLakini table yenyewe tayari ikiwa students, wakati mwingine:
nameinaweza kutosha.
Katika course hii tutatumia majina yaliyo wazi ili beginner aelewe.
76. Exercise: Chagua Data Types
Chagua Data Type sahihi kwa:
student_id
student_name
gender
phone_number
date_of_birth
email
school_fee
average_marks
remarks
created_atMajibu yanayoweza kutumika:
student_id
→ INT
student_name
→ VARCHAR
gender
→ VARCHAR / ENUM
phone_number
→ VARCHAR
date_of_birth
→ DATE
email
→ VARCHAR
school_fee
→ DECIMAL
average_marks
→ DECIMAL
remarks
→ TEXT
created_at
→ TIMESTAMP77. Exercise ya Hospital System
Chagua Data Types kwa:
patient_id
patient_name
phone_number
date_of_birth
weight
registration_date
medical_notes
is_activeFikiria kwa nini umechagua kila type.
78. Exercise ya Online Shop
Chagua Data Types kwa:
product_id
product_name
price
description
stock_quantity
created_at
is_availableMfano:
product_id
→ INT
product_name
→ VARCHAR
price
→ DECIMAL
description
→ TEXT
stock_quantity
→ INT
created_at
→ TIMESTAMP
is_available
→ BOOLEAN79. Maswali ya Kujipima
Swali la 1
Data Type ni nini?
Swali la 2
INT hutumika kuhifadhi data gani?
Swali la 3
VARCHAR hutumika kufanya nini?
Swali la 4
Kuna tofauti gani kati ya CHAR na VARCHAR?
Swali la 5
TEXT inafaa kwa data gani?
Swali la 6
Kwa nini phone_number iwe VARCHAR badala ya INT?
Swali la 7
Data Type gani ni nzuri kwa tarehe ya kuzaliwa?
Swali la 8
Data Type gani ni nzuri kwa fedha?
Swali la 9
TIMESTAMP inaweza kutumika kufanya nini?
Swali la 10
Kwa nini FLOAT si chaguo bora kwa fedha katika situations nyingi?
80. Checklist ya Somo
Hakikisha unaelewa:
[ ] INT
[ ] VARCHAR
[ ] CHAR
[ ] TEXT
[ ] DATE
[ ] DATETIME
[ ] TIMESTAMP
[ ] DECIMAL
[ ] FLOAT
[ ] BOOLEAN
[ ] ENUM
[ ] Phone number → VARCHAR
[ ] Money → DECIMAL
[ ] Date → DATEHitimisho
Katika Somo la 5 tumejifunza kwamba kila column kwenye database inahitaji Data Type sahihi.
Tumekutana na types muhimu kama:
INT
VARCHAR
CHAR
TEXT
DATE
DATETIME
TIMESTAMP
DECIMAL
FLOAT
BOOLEAN
ENUMKumbuka mifano hii:
student_id
↓
INT
student_name
↓
VARCHAR
phone_number
↓
VARCHAR
date_of_birth
↓
DATE
school_fee
↓
DECIMAL
remarks
↓
TEXT
created_at
↓
TIMESTAMPKuchagua Data Type sahihi ni msingi wa database nzuri.
Somo Linalofuata
Somo la 6: Jinsi ya Kutengeneza Table ya Kwanza kwa CREATE TABLE
Katika Somo la 6 tutajifunza:
- Table ni nini kwa vitendo
CREATE TABLE- Jinsi ya kutengeneza columns
- Jinsi ya kutumia Data Types tulizojifunza
- Jinsi ya kuona tables kwa
SHOW TABLES - Jinsi ya kuona structure kwa
DESCRIBE - Jinsi ya kuunda table ya
students - Jinsi ya kuunda table kupitia phpMyAdmin
- Makosa ya kawaida ya
CREATE TABLE
Tutaanza na table:
studentsna kuitengeneza ndani ya:
school_managementHapo ndipo database yetu itaanza kuwa na structure halisi.
🚀 Unahitaji mfumo au website ya biashara?
Chagua huduma hapa chini kisha mteja bofya moja kwa moja kwenda kwenye ukurasa wa huduma au kuwasiliana nasi kwa WhatsApp.