CREATE TABLE users (
user_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username CHAR(10) NOT NULL UNIQUE,
email VARCHAR(50) NOT NULL,
gender ENUM('Male', 'Female') NOT NULL,
interests SET('Technology', 'Sports', 'Music', 'Art', 'Travel', 'Food', 'Fashion', 'Science') NOT NULL,
bio TEXT NOT NULL,
profile_picture TINYBLOB,
age TINYINT UNSIGNED NOT NULL,
is_admin BOOLEAN DEFAULT FALSE NOT NULL,
balance DECIMAL(5, 2) NOT NULL,
-- DECIMAL(p,s) FLOAT 999.12
joined_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
-- DATETIME YYYY-MM-DD hh:mm:ss
/*
TIMESTAMP -> '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC
DATETIME -> '1000-01-01 00:00:00' to '9999-12-31 23:59:59'
*/
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL,
birth_date DATE NOT NULL,
bed_time TIME NOT NULL,
graduation_year YEAR NOT NULL,
-- 1901 to 2155
CONSTRAINT chk_age CHECK(age < 100),
CONSTRAINT uq_email UNIQUE (email)
)
-- drop column
ALTER TABLE users DROP COLUMN profile_picture;
-- rename column
ALTER TABLE users CHANGE COLUMN about_me about_me TEXT; -- ์ปฌ๋ผ์ด๋ฆ๊ณผ ํ์ ํจ๊ป ๋ฐ๊ฟ๋
-- change the column type
ALTER TABLE users MODIFY COLUMN about_me TINYTEXT;
-- rename database
ALTER TABLE users RENAME TO customers;
ALTER TABLE customers RENAME TO users;
-- drop constratints
ALTER TABLE users DROP CONSTRAINT uq_email;
ALTER TABLE users DROP CONSTRAINT username, DROP CONSTRAINT chk_age;
-- 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);
-- add or remove a NULL constraint
ALTER TABLE users MODIFY COLUMN bed_time TIME NULL;
ALTER TABLE users MODIFY COLUMN bed_time TIME NOT NULL;
SHOW CREATE TABLE users;
#7.8 ALTER TABLE Part Two
ALTER TABLE users MODIFY COLUMN graduation_year DATE; -- error ๊ธฐ์กด ๊ฐ
ALTER TABLE users ADD COLUMN graduation_date DATE NOT NULL DEFAULT MAKEDATE(grdutaion_year, 1);
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;