MySQL / Table үүсгэх

Table үүсгэх

Table бол MySQL дэх өгөгдлийн үндсэн хадгалах нэгж юм. Excel-ийн хүснэгттэй адилхан мөр (row) ба багана (column)-аас бүрдэнэ — гэхдээ хамаагүй хүчирхэг.

CREATE TABLE синтакс

sql
CREATE TABLE хүснэгтийн_нэр (
  багана_нэр өгөгдлийн_төрөл [сонголтууд],
  багана_нэр өгөгдлийн_төрөл [сонголтууд],
  ...
);

Жишээ — хэрэглэгчдийн хүснэгт:

sql
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 тодорхойлох

Баганыг тодорхойлохдоо дараах хэлбэрийг ашиглана:

sql
багана_нэр  өгөгдлийн_төрөл  [NOT NULL]  [DEFAULT утга]  [AUTO_INCREMENT]  [UNIQUE]

AUTO_INCREMENT

Мөр нэмэх бүрд дугаар автоматаар нэмэгдэнэ — гараар утга оруулах шаардлагагүй:

sql
id INT AUTO_INCREMENT PRIMARY KEY

NOT NULL

Багана заавал утгатай байх ёстой гэдгийг заана — хоосон (NULL) байж болохгүй:

sql
name VARCHAR(100) NOT NULL

DEFAULT

Утга оруулаагүй үед анхдагч утга хэрэглэнэ:

sql
status  VARCHAR(20) DEFAULT 'active',
score   INT         DEFAULT 0

UNIQUE

Хүснэгт дотор давтагдашгүй утгыг хангана:

sql
email VARCHAR(255) UNIQUE

PRIMARY KEY

Мөр бүрийг өвөрмөцөөр таньдаг үндсэн түлхүүр. Ихэвчлэн id баганыг PRIMARY KEY болгоно:

sql
id INT AUTO_INCREMENT PRIMARY KEY

SHOW TABLES

USE хийсэн database доторх бүх хүснэгтийг харах:

sql
USE myshop;
SHOW TABLES;
код
+------------------+
| Tables_in_myshop |
+------------------+
| users            |
+------------------+

DESCRIBE — хүснэгтийн бүтэц харах

sql
DESCRIBE users;

эсвэл товчлол:

sql
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 — хүснэгт өөрчлөх

Хүснэгт үүсгэсний дараа бүтцийг өөрчилж болно.

Багана нэмэх:

sql
ALTER TABLE users
  ADD COLUMN phone VARCHAR(20);

Тодорхой байрлалд нэмэх:

sql
ALTER TABLE users
  ADD COLUMN phone VARCHAR(20) AFTER email;

Баганыг өөрчлөх:

sql
ALTER TABLE users
  MODIFY COLUMN name VARCHAR(200) NOT NULL;

Баганыг нэрийг өөрчлөх ба төрлийг шинэчлэх:

sql
ALTER TABLE users
  CHANGE COLUMN phone phone_number VARCHAR(30);

Багана устгах:

sql
ALTER TABLE users
  DROP COLUMN phone;

Хүснэгтийн нэрийг өөрчлөх:

sql
ALTER TABLE users
  RENAME TO app_users;

DROP TABLE — хүснэгт устгах

sql
DROP TABLE users;

Анхааруулга: Хүснэгт дотор байгаа бүх өгөгдлийн хамт устгана. Буцаах боломжгүй.

Байхгүй хүснэгтийг устгахыг оролдвол алдаа гарахаас сэргийлэх:

sql
DROP TABLE IF EXISTS users;

CREATE TABLE IF NOT EXISTS

Давтан ажиллуулах скриптэд алдаагаас сэргийлэх:

sql
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-ийн хүснэгтүүд

sql
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
);

Хүснэгтүүдийг шалгах:

sql
SHOW TABLES;
код
+------------------+
| Tables_in_myshop |
+------------------+
| orders           |
| products         |
| users            |
+------------------+

Дараагийн хичээлд:

MySQL-ийн өгөгдлийн төрлүүдийг дэлгэрэнгүй үзнэ — INT, VARCHAR, DECIMAL, DATE, JSON болон ямар тохиолдолд аль төрлийг ашиглах.