
โ 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 |