← Back to PHP Course | Chapter 11: Database | Lesson 11 of 21

PHP MySQL Create Table

एक बार database exist कर ले, इसे actually structured data रखने के लिए tables चाहिए -- defined types वाली rows और columns, जैसे id, name, और email columns वाला एक "users" table। mysqli के through एक CREATE TABLE statement चलाना, बिल्कुल वैसे ही जैसे आप कोई भी दूसरी query चलाएँगे, PHP से यह structure बनाता है।
Syntax
php
CREATE TABLE table_name (
    id INT AUTO_INCREMENT PRIMARY KEY,
    column1 VARCHAR(100) NOT NULL,
    column2 VARCHAR(100) UNIQUE,
    column3 INT DEFAULT 0
);

एक Basic Table Structure Define करना

एक CREATE TABLE statement हर column का name और data type list करता है -- id INT, name VARCHAR(100), email VARCHAR(100) -- exactly describe करते हुए table किस shape का data रखेगा, कोई भी rows insert होने से पहले।

उदाहरण: Defining a Basic Table Structure

php
<?php
// Create a new `SQLite3` instance with ':memory:', stored in `$db`
$db = new SQLite3(':memory:');
$db->exec("CREATE TABLE users (id INTEGER, name TEXT, email TEXT)");
// Print "Table created with 3 columns" to the output
echo "Table created with 3 columns";
?>

एक Primary Key चुनना

एक primary key किसी table की हर row को uniquely identify करती है, और एक auto-incrementing integer id column (INT AUTO_INCREMENT PRIMARY KEY) सबसे common choice है -- MySQL हर नए row को automatically अगला available number assign करता है, बिना किसी extra काम के uniqueness guarantee करते हुए।

उदाहरण: Choosing a Primary Key

php
<?php
// Create a new `SQLite3` instance with ':memory:', stored in `$db`
$db = new SQLite3(':memory:');
$db->exec("CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)");
$db->exec("INSERT INTO users (name) VALUES ('Alice')");
// Print `"Auto-assigned id: " . $db->lastInsertRowID()` to the output
echo "Auto-assigned id: " . $db->lastInsertRowID();
?>

Column Constraints: NOT NULL, DEFAULT, UNIQUE

सिर्फ एक type से आगे, एक column constraints carry कर सकता है: NOT NULL माँग करता है कि हर row में वहाँ एक value हो, DEFAULT कोई value न दिए जाने पर एक automatic value set करता है, और UNIQUE ensure करता है कि कोई दो rows उस column में same value share न करें -- जैसे यह guarantee करना कि कोई दो users same email address share न करें।

उदाहरण: Column Constraints: NOT NULL, DEFAULT, UNIQUE

php
<?php
// Create a new `SQLite3` instance with ':memory:', stored in `$db`
$db = new SQLite3(':memory:');
$db->exec("CREATE TABLE users (
    id INTEGER PRIMARY KEY,
    email TEXT NOT NULL UNIQUE,
    role TEXT DEFAULT 'member'
)");
// Print "Constraints applied" to the output
echo "Constraints applied";
?>

Table Creation को Repeatable बनाना

CREATE TABLE IF NOT EXISTS exactly अपने database-level counterpart जैसा काम करता है -- MySQL सिर्फ तभी table बनाता है जब यह पहले से exist न करे, नहीं तो चुपचाप कुछ नहीं करता, जो एक setup script को बिना error के एक से ज़्यादा बार चलाने के लिए safe बनाता है।

उदाहरण: Making Table Creation Repeatable

php
<?php
$db = new SQLite3(':memory:');
$db->exec("CREATE TABLE IF NOT EXISTS users (id INTEGER)");
$db->exec("CREATE TABLE IF NOT EXISTS users (id INTEGER)"); // safe to run again
echo "No error on second run";
?>

एक Table का Structure Verify करना

एक table बनाने के बाद, DESCRIBE tableName (या equivalent SHOW COLUMNS query) हर column का name, type, और constraints return करता है -- PHP से यह confirm करने का एक तेज़ तरीका कि एक table exactly intended के हिसाब से बनी थी।

उदाहरण: Verifying a Table's Structure

php
<?php
$db = new SQLite3(':memory:');
$db->exec("CREATE TABLE users (id INTEGER, name TEXT)");
$result = $db->query("PRAGMA table_info(users)"); // DESCRIBE users; in MySQL
while ($col = $result->fetchArray()) {
    echo $col['name'] . "\n";
}
?>
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. एक नई table पर एक primary key define करना भूल जाना, बाद में specific rows को reliably update या delete करना कहीं ज़्यादा मुश्किल बनाते हुए।
  2. एक overly generic column type (जैसे हर चीज़ के लिए TEXT) चुनना बजाय एक उपयुक्त type (INT, VARCHAR, DATE) के जो actual data से match करे और proper validation तथा indexing enable करे।
  3. एक ऐसी script में IF NOT EXISTS के बिना CREATE TABLE चलाना जो एक से ज़्यादा बार चल सकती है, दूसरी बार run पर एक error का कारण बनते हुए।
चैप्टर सारांश
  • CREATE TABLE tableName (column definitions...) एक नई table का structure define करता है, mysqli_query() के through किसी भी दूसरे SQL statement की तरह चलाया जाता है।
  • एक primary key column (अक्सर एक auto-incrementing id) हर row को uniquely identify करता है और reliable updates और deletes के लिए ज़रूरी है।
  • IF NOT EXISTS table creation को अगर table पहले से exist करे तो error दिए बिना दोबारा चलाने के लिए safe बनाता है।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.