Table үүсгэх
Table бол MySQL дэх өгөгдлийн үндсэн хадгалах нэгж юм. Excel-ийн хүснэгттэй адилхан мөр (row) ба багана (column)-аас бүрдэнэ — гэхдээ хамаагүй хүчирхэг.
CREATE TABLE синтакс
CREATE TABLE хүснэгтийн_нэр (
багана_нэр өгөгдлийн_төрөл [сонголтууд],
багана_нэр өгөгдлийн_төрөл [сонголтууд],
...
);
Жишээ — хэрэглэгчдийн хүснэгт:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
Энд:
id— тоон дугаар, автоматаар нэмэгддэг, үндсэн түлхүүрname— хамгийн ихдээ 100 тэмдэгт, хоосон байж болохгүйemail— давтагдашгүй и-мэйл хаягcreated_at— үүсгэсэн огноо цаг, анхдагчаар одоогийн цаг
Column тодорхойлох
Баганыг тодорхойлохдоо дараах хэлбэрийг ашиглана:
багана_нэр өгөгдлийн_төрөл [NOT NULL] [DEFAULT утга] [AUTO_INCREMENT] [UNIQUE]
AUTO_INCREMENT
Мөр нэмэх бүрд дугаар автоматаар нэмэгдэнэ — гараар утга оруулах шаардлагагүй:
id INT AUTO_INCREMENT PRIMARY KEY
NOT NULL
Багана заавал утгатай байх ёстой гэдгийг заана — хоосон (NULL) байж болохгүй:
name VARCHAR(100) NOT NULL
DEFAULT
Утга оруулаагүй үед анхдагч утга хэрэглэнэ:
status VARCHAR(20) DEFAULT 'active',
score INT DEFAULT 0
UNIQUE
Хүснэгт дотор давтагдашгүй утгыг хангана:
email VARCHAR(255) UNIQUE
PRIMARY KEY
Мөр бүрийг өвөрмөцөөр таньдаг үндсэн түлхүүр. Ихэвчлэн id баганыг PRIMARY KEY болгоно:
id INT AUTO_INCREMENT PRIMARY KEY
SHOW TABLES
USE хийсэн database доторх бүх хүснэгтийг харах:
USE myshop;
SHOW TABLES;
+------------------+
| Tables_in_myshop |
+------------------+
| users |
+------------------+
DESCRIBE — хүснэгтийн бүтэц харах
DESCRIBE users;
эсвэл товчлол:
DESC users;
+------------+--------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+-------------------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(100) | NO | | NULL | |
| email | varchar(255) | NO | UNI | NULL | |
| created_at | datetime | YES | | CURRENT_TIMESTAMP | |
+------------+--------------+------+-----+-------------------+----------------+
ALTER TABLE — хүснэгт өөрчлөх
Хүснэгт үүсгэсний дараа бүтцийг өөрчилж болно.
Багана нэмэх:
ALTER TABLE users
ADD COLUMN phone VARCHAR(20);
Тодорхой байрлалд нэмэх:
ALTER TABLE users
ADD COLUMN phone VARCHAR(20) AFTER email;
Баганыг өөрчлөх:
ALTER TABLE users
MODIFY COLUMN name VARCHAR(200) NOT NULL;
Баганыг нэрийг өөрчлөх ба төрлийг шинэчлэх:
ALTER TABLE users
CHANGE COLUMN phone phone_number VARCHAR(30);
Багана устгах:
ALTER TABLE users
DROP COLUMN phone;
Хүснэгтийн нэрийг өөрчлөх:
ALTER TABLE users
RENAME TO app_users;
DROP TABLE — хүснэгт устгах
DROP TABLE users;
Анхааруулга: Хүснэгт дотор байгаа бүх өгөгдлийн хамт устгана. Буцаах боломжгүй.
Байхгүй хүснэгтийг устгахыг оролдвол алдаа гарахаас сэргийлэх:
DROP TABLE IF EXISTS users;
CREATE TABLE IF NOT EXISTS
Давтан ажиллуулах скриптэд алдаагаас сэргийлэх:
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE
);
Жишээ: myshop database-ийн хүснэгтүүд
USE myshop;
-- Хэрэглэгчид
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- Бараа
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(200) NOT NULL,
price DECIMAL(10, 2) NOT NULL,
stock INT DEFAULT 0,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- Захиалга
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
product_id INT NOT NULL,
quantity INT DEFAULT 1,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
Хүснэгтүүдийг шалгах:
SHOW TABLES;
+------------------+
| Tables_in_myshop |
+------------------+
| orders |
| products |
| users |
+------------------+
Дараагийн хичээлд:
MySQL-ийн өгөгдлийн төрлүүдийг дэлгэрэнгүй үзнэ — INT, VARCHAR, DECIMAL, DATE, JSON болон ямар тохиолдолд аль төрлийг ашиглах.