CREATE DATABASE और CREATE TABLE
कुछ भी बनाने से पहले
Database design command से नहीं, requirements से शुरू होना चाहिए। तय करें कि एक row किस वस्तु को दर्शाती है, कौन-सी values अनिवार्य हैं, row को unique पहचान क्या देगी और table का दूसरी tables से क्या संबंध होगा। इस lesson में एक row एक student को दर्शाती है।
coding_school database और students table का उपयोग करते हैं। Same schema रखने से INSERT, SELECT, WHERE, UPDATE और DELETE के results दोहराए जा सकते हैं।MySQL account के पास आवश्यक CREATE privilege होना चाहिए। Managed hosting में control panel database और user बना सकता है; ऐसी स्थिति में host द्वारा दिया database name उपयोग करें।
CREATE DATABASE Step by Step
CREATE DATABASE IF NOT EXISTS coding_school
CHARACTER SET utf8mb4
COLLATE utf8mb4_0900_ai_ci;
USE coding_school;
IF NOT EXISTS समान नाम पहले से होने पर error रोकता है, पर schema compare नहीं करता। utf8mb4 पूरा Unicode support करता है। Collation comparison और sorting rules तय करती है; utf8mb4_0900_ai_ci MySQL 8.x में उपलब्ध case-insensitive और accent-insensitive collation है।
Active database और उसकी definition जाँचें:
SELECT DATABASE() AS current_database;
SHOW CREATE DATABASE coding_school;
SHOW COLLATION LIKE 'utf8mb4%'; से supported collation चुनें। Unsupported collation को copy न करें।Students Table बनाएँ
CREATE TABLE IF NOT EXISTS students (
student_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
full_name VARCHAR(80) NOT NULL,
class_name VARCHAR(10) NOT NULL,
marks DECIMAL(5,2) DEFAULT NULL,
status VARCHAR(10) NOT NULL DEFAULT 'Active',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (student_id),
CONSTRAINT chk_students_marks
CHECK (marks IS NULL OR marks BETWEEN 0 AND 100),
CONSTRAINT chk_students_status
CHECK (status IN ('Active', 'Inactive'))
) ENGINE = InnoDB;
Statement storage के साथ data-quality rules भी तय करता है। AUTO_INCREMENT अगली numeric ID बनाता है। DECIMAL(5,2) 88.50 जैसे marks exact रखता है। NULL mark का अर्थ “अभी record नहीं हुआ” है; वह zero नहीं है। Current MySQL versions CHECK constraints के बाहर की value reject करते हैं।
हर Column और Constraint समझें
| Definition | कारण |
|---|---|
student_id INT UNSIGNED | Non-negative numeric ID; primary key इसे unique और non-NULL बनाती है। |
AUTO_INCREMENT | INSERT में column छोड़ने पर MySQL key generate करता है। |
full_name VARCHAR(80) | सही maximum वाला variable-length name; NOT NULL इसे required बनाता है। |
class_name VARCHAR(10) | X-A जैसे label को number मानने की गलती के बिना store करता है। |
marks DECIMAL(5,2) | CHECK rule के अंतर्गत 0.00 से 100.00 exact fixed-point value। |
status ... DEFAULT 'Active' | Column omit करने पर valid default देता है। |
created_at TIMESTAMP | Insert का समय automatically record करता है। |
ENGINE = InnoDB | Transactions, row-level locking और foreign keys वाला default MySQL engine। |
Invalid data किसी भी application से स्वीकार नहीं होना चाहिए तो constraint database में रखें। Application validation user experience सुधारती है; database constraint stored truth बचाता है।
Structure की जाँच
SHOW TABLES;
DESCRIBE students;
SHOW CREATE TABLE students;
SHOW TABLES object का अस्तित्व confirm करता है। DESCRIBE columns, types, nullability, keys और defaults की compact list देता है। SHOW CREATE TABLE MySQL में सुरक्षित complete reconstruction statement लौटाता है।
Exact display MySQL release के अनुसार थोड़ा बदल सकता है। मुख्य जाँच यह है कि type, NULL rule, default और key design से match करें।
सामान्य Design गलतियाँ
- Primary key न रखना: दिखने में duplicate rows को safely update करना और relationships बनाना कठिन होता है।
- हर column के लिए VARCHAR: dates और numbers उचित validation, sorting और arithmetic behavior खो देते हैं।
- Exact marks या money के लिए FLOAT: binary floating-point representation surprises दे सकता है; fixed-point के लिए DECIMAL लें।
- NULL को zero या empty string मानना: NULL missing या unknown value है, numeric zero नहीं।
- IF NOT EXISTS का अधिक उपयोग: गलत structure वाली पुरानी table छिप सकती है। Creation के बाद inspect करें।
orderयाgroupजैसे names: reserved words quoting माँगते हैं। Clear names चुनें।- Backup बिना live schema बदलना: Migration पहले rehearse करें, data protect करें और scripts version control में रखें।
अभ्यास कार्य
utf8mb4वाला अलगlibrary_labdatabase बनाएँ।- Auto-increment key, required title, optional price, status default और created timestamp वाली
bookstable बनाएँ। - Price negative न हो, इसके लिए CHECK rule जोड़ें।
DESCRIBEऔरSHOW CREATE TABLEसे हर decision verify करें।- समझाएँ कि ISBN arithmetic number के स्थान पर text क्यों होना चाहिए।
students table में consistent sample rows जोड़ने के लिए अगला lesson INSERT INTO पढ़ें।
त्वरित सारांश
CREATE DATABASEdatabase namespace बनाता औरUSEsession के लिए उसे चुनता है।CREATE TABLEcolumns, types, defaults, keys और constraints define करता है।- नए design में
utf8mb4, primary key और meaningful data types लें। DESCRIBEऔरSHOW CREATE TABLEसे verify करें।- Real project में privileges, hosting version और migration safety महत्त्वपूर्ण हैं।
Official संदर्भ
- CREATE DATABASE Statement — MySQL 8.4
- CREATE TABLE Statement — MySQL 8.4
- SHOW CREATE TABLE Statement
- utf8mb4 Character Set
- Introduction to InnoDB
References 14 August 2026 को review किए गए। Destructive schema changes केवल backup या practice database पर चलाएँ।