SQL - MySQL, ๋ฌธ๋ฒ•

2026. 3. 24. 14:54ยท๐Ÿงฉ SQL

MySQL

 

 

โœ… ALTER


ALTER TABLE ๋ช…๋ น์–ด๋Š” ๊ฝค ๋น„์šฉ์ด ํด ์ˆ˜ ์žˆ๋‹ค.(row์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ๋‹ค๋ฉด ์ƒˆ๋กœ ์ƒ์„ฑ๋œ column์˜ ๋ชจ๋“  row์— ๊ธฐ๋ณธ๊ฐ’์„ ์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ)

SQLite์—์„œ๋„ ALTER๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ Table ์ด๋ฆ„ ๋ณ€๊ฒฝ, Column ์ด๋ฆ„ ๋ณ€๊ฒฝ, Column ์ถ”๊ฐ€๋งŒ ๊ฐ€๋Šฅํ•จ

(์ด๋ฏธ ์„ค์ •๋œ column์„ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜, ์ œ์•ฝ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ ํ˜น์€ ์‚ญ์ œํ•˜๋Š” ๊ฑด ๋ถˆ๊ฐ€๋Šฅ)

 

ALTER TABLE users DROP COLUMN profile_picture;

profile_picture column ์‚ญ์ œ

 

ALTER TABLE users
CHANGE COLUMN bio about_me TINYTEXT;

bio -> about_me ์ด๋ฆ„ ๋ณ€๊ฒฝ, data type๋ณ€๊ฒฝ

 

CHANGE

ALTER TABLE users
CHANGE COLUMN about_me about_me TEXT;

data type๋งŒ ๋ณ€๊ฒฝ

 

MODIFY

ALTER TABLE users
MODIFY COLUMN about_me TEXT;

MODIFY๋ฅผ ์‚ฌ์šฉํ•ด ์ด๋ฆ„ 2๋ฒˆ ์ ์„ ํ•„์š”์—†์ด ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฐ์ดํ„ฐํƒ€์ž…๋งŒ ๋ณ€๊ฒฝ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

 

ALTER TABLE users
MODIFY COLUMN bed_time TIME NULL;

ALTER TABLE users
MODIFY COLUMN bed_time TIME NOT NULL;

nullable๋„ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

 

RENAME TO

ALTER TABLE users
RENAME TO customers;

 

DROP CONSTRAINT

ALTER TABLE users DROP CONSTRAINT uq_email;
ALTER TABLE users
DROP CONSTRAINT users_chk_1,
DROP CONSTRAINT username,
DROP CONSTRAINT email;

 

ADD CONSTRAINT

-- adding constraints
ALTER TABLE users
ADD CONSTRAINT uq_email UNIQUE (email),
ADD CONSTRAINT uq_username UNIQUE (username);

ALTER TABLE users
ADD CONSTRAINT chk_age CHECK (age < 100);

 

SHOW

SHOW CREATE TABLE users;

์ž‘์„ฑํ•œ query๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€์ ์—์„œ ์–ด๋–ป๊ฒŒ ๋ณด๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

โœ… ๊ธฐ์กด column์˜ ๊ฐ’์„ ์ƒˆ column์— ์˜ฎ๊ธฐ๋Š” ๋ฐฉ๋ฒ•


1.

ALTER TABLE users
ADD COLUMN graduation_date DATE;

UPDATE users SET graduation_date = MAKEDATE(graduation_year, 1);

ALTER TABLE users
DROP COLUMN graduation_year;

ALTER TABLE users
MODIFY COLUMN graduation_date DATE NOT NULL;

 

2.

ALTER TABLE users
ADD COLUMN graduation_date DATE NOT NULL DEFAULT MAKEDATE(graduation_year, 1);

ALTER TABLE users
DROP COLUMN graduation_year;

ALTER TABLE users
MODIFY COLUMN graduation_date DATE NOT NULL;

 

MAKEDATE

https://dev.mysql.com/doc/refman/8.4/en/date-and-time-functions.html#function_makedate

 

MySQL :: MySQL 8.4 Reference Manual :: 14.7 Date and Time Functions

14.7 Date and Time Functions This section describes the functions that can be used to manipulate temporal values. See Section 13.2, “Date and Time Data Types”, for a description of the range of values each date and time type has and the valid formats

dev.mysql.com

 

 

โœ… Generated Column (Computed Column)


๋‹ค๋ฅธ column์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ๋„์ถœํ•˜๋Š” column

SQLite์—์„œ๋„ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘

CREATE TABLE users_v2 (
	user_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
	first_name VARCHAR(50),
	last_name VARCHAR(50),
	email VARCHAR(100),
	full_name VARCHAR(101) GENERATED ALWAYS AS (CONCAT(first_name, ' ', last_name)) STORED
);

INSERT INTO users_v2(first_name, last_name, email) VALUES ('nico', 'nomad', 'nico@nomad.com');

full_name์€ Generated Column์ด๋ผ ์ง์ ‘ ๊ฐ’์„ ์ง€์ •ํ•ด์„œ ๋„ฃ์„ ์ˆ˜ ์—†๋‹ค.

 

SUBSTRING_INDEX

ALTER TABLE users_v2
ADD COLUMN email_domain VARCHAR(50) GENERATED ALWAYS AS (SUBSTRING_INDEX(email, '@', -1)) VIRTUAL;

args๋กœ ๋ถ„๋ฆฌ ๋Œ€์ƒ, ๋ถ„๋ฆฌ ๊ธฐ์ค€, 1(์•ž๋ถ€๋ถ„ ์„ ํƒ) or -1(๋’ท๋ถ€๋ถ„ ์„ ํƒ)๋ฅผ ๋ฐ›๋Š”๋‹ค.

 

STORED vs VIRTUAL

VIRTUAL Generated Column์€ ๋””์Šคํฌ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค.

๋Œ€์‹  email_domain column์„ ์กฐํšŒํ•  ๋•Œ๋งˆ๋‹ค 

SUBSTRING_INDEX(email, '@', -1)

 

๋งค๋ฒˆ ์ด ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

STORED๋Š” ์‹ค์ œ๋กœ DB์— ์ €์žฅ๋œ๋‹ค.

 

STORED: ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ๋ถˆ๋ฆฌ

VIRTUAL: ์ฝ์–ด์˜ฌ ๋•Œ ๋ถˆ๋ฆฌ

 

'๐Ÿงฉ SQL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

SQL - MySQL, UNION  (0) 2026.03.27
SQL - MySQL, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •๊ทœํ™”, Foreign Key, JOIN  (0) 2026.03.25
SQL - MySQL Data Types  (0) 2026.03.23
SQL - MySQL Setup  (0) 2026.03.23
SQL - SQLite Index  (0) 2026.03.23
'๐Ÿงฉ SQL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • SQL - MySQL, UNION
  • SQL - MySQL, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •๊ทœํ™”, Foreign Key, JOIN
  • SQL - MySQL Data Types
  • SQL - MySQL Setup
j2yonghwa
j2yonghwa
Trying to be a fullstack developer ๐Ÿš€
  • j2yonghwa
    j2yonghwa
    j2yonghwa
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (156)
      • โฐ Daily WakaTime (1)
      • ๐Ÿ–๏ธ ๋…ธ๋งˆ๋“œ์ฝ”๋” (2)
      • ๐Ÿบ Dev Setup (3)
      • ๐Ÿ”ญ Tech Info (1)
      • ๐Ÿšซ Error (1)
      • ๐Ÿ“‚ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (23)
      • ♣๏ธ Next.js 14 (10)
      • ♠๏ธ Next.js 12 (20)
      • ๐Ÿ›ธ React Native (12)
      • ๐Ÿฆ‹ TypeScript (1)
      • ๐Ÿ Python (2)
      • ๐ŸŒŠ TailwindCSS (4)
      • ๐Ÿงฉ SQL (25)
      • ๐Ÿ’Ž Prisma (5)
      • ๐ŸŒฑ MongoDB (4)
      • ๐ŸŽฏ Redis (1)
      • ๐Ÿงฌ GraphQL (2)
      • ๐Ÿ”ฅ Firebase (7)
      • ๐Ÿ’ธ Third-Party Services (2)
      • ๐Ÿ•ธ๏ธ Web (1)
      • ๐Ÿ† ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (23)
      • ๐Ÿ“™ ๋ชจ๋”ฅ๋‹ค (5)
      • ๐Ÿ“— ์ฝ”ํ…Œ ํ•ฉ๊ฒฉ์ž ๋˜๊ธฐ -JS- (0)
      • ๐Ÿ“˜ ํด๋ฆฐ์ฝ”๋“œ (0)
      • ๐Ÿฏ ๊ฟ€ํŒ ๐Ÿ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • ๊นƒํ—™
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    dev setup
    Firebase
    Python
    next.js 12
    Next.js
    PostgreSQL
    API
    ๋ชจ๋”ฅ๋‹ค
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
    tailwindcss
    SQL
    0๋ ˆ๋ฒจ
    next.js 14
    react router
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ž…๋ฌธ
    Prisma
    React Native
    ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    mongoDB
    MySQL
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
j2yonghwa
SQL - MySQL, ๋ฌธ๋ฒ•
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”