← Back to MySQL Course | Chapter 4: Constraints | Lesson 1 of 8

MySQL Constraints Overview

Constraints -- NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK, और DEFAULT -- table columns से attached rules हैं जो invalid data को कभी store होने से रोकते हैं।
Syntax
sql
CREATE TABLE table_name (
  column_name datatype constraint,
  column_name datatype constraint
);

Constraints क्या हैं?

Constraints किसी table के columns से attached rules हैं जो restrict करते हैं कि वहाँ कौन सा data कभी store हो सकता है, invalid data को उसके insert या update होने के moment पर पकड़ते हुए बजाय bad data को database में slip करने देने के।

उदाहरण: What are Constraints?

sql
CREATE TABLE users (
  id INT PRIMARY KEY,
  email VARCHAR(100) NOT NULL UNIQUE
);

NOT NULL और UNIQUE

NOT NULL माँग करता है कि हर row में उस column में एक value हो, किसी भी ऐसे insert या update को reject करते हुए जो इसे खाली छोड़ दे, जबकि UNIQUE ensure करता है कि table की कोई दो rows कभी उस column में same value share न करें।

उदाहरण: NOT NULL and UNIQUE

sql
CREATE TABLE users (
  username VARCHAR(50) NOT NULL,
  email VARCHAR(100) UNIQUE
);

PRIMARY KEY और FOREIGN KEY

PRIMARY KEY किसी column को हर row के unique identifier की तरह mark करता है, automatically NOT NULL और UNIQUE combine करते हुए, जबकि FOREIGN KEY किसी column को किसी दूसरी table की एक primary key से link करता है, यह ensure करते हुए कि referenced rows actually exist करती हैं।

उदाहरण: PRIMARY KEY and FOREIGN KEY

sql
CREATE TABLE authors (id INT PRIMARY KEY);
CREATE TABLE books (
  id INT PRIMARY KEY,
  author_id INT,
  FOREIGN KEY (author_id) REFERENCES authors(id)
);

CHECK और DEFAULT

CHECK एक custom condition enforce करता है जिसे किसी column की हर value satisfy करनी चाहिए, जैसे एक price जो कभी negative नहीं हो सकती, जबकि DEFAULT जब भी एक insert explicitly कुछ न दे तो एक automatic fallback value supply करता है।

उदाहरण: CHECK and DEFAULT

sql
CREATE TABLE products (
  price DECIMAL(10,2) CHECK (price >= 0),
  status VARCHAR(20) DEFAULT 'active'
);

एक मौजूदा Table में Constraints Add करना

Constraints सिर्फ किसी table के पहली बार बनते समय ही define नहीं करने पड़ते -- ALTER TABLE UNIQUE, CHECK, या FOREIGN KEY जैसा एक नया constraint एक ऐसी table में add कर सकता है जो पहले से exist करती है और पहले से data रखती है।

उदाहरण: Adding Constraints to an Existing Table

sql
ALTER TABLE products ADD CONSTRAINT chk_price CHECK (price >= 0);

⚠️ This is MySQL-specific syntax. It cannot run in the browser editor. Practice this on your local MySQL installation.

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. एक constraint add करना और उसके मौजूदा bad data check करने की उम्मीद करना, जबकि अगर current rows पहले से rule तोड़ती हैं तो ALTER TABLE fail हो सकता है।
  2. 8.0.16 से पहले पुराने MySQL versions पर CHECK पर भरोसा करना, जहाँ इसे parse किया जाता है लेकिन ignore कर दिया जाता है।
  3. PRIMARY KEY को UNIQUE से confuse करना, जबकि एक table में सिर्फ एक primary key होती है और यह NULL नहीं हो सकती।
🔒

Chapter Quiz — Complete all 8 topics to unlock

0/8 topics done

Complete these topics first:

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.