본문으로 건너뛰기

TABLE

TABLE

목차


기본 형식

사용 예

📦데이터베이스 사용

USE MSP05;

use_msp05

📦테이블 생성Duplicate

CREATE TABLE IF NOT EXISTS TMEMBER (
FID VARCHAR(20) NOT NULL COMMENT '회원ID',
FNAME VARCHAR(30) NOT NULL COMMENT '회원명',
FBRITH YEAR NOT NULL COMMENT '생년',
FSEX CHAR(1) NOT NULL COMMENT '성별',
FADDR VARCHAR(100) NOT NULL COMMENT '주소',
PRIMARY KEY (FID)
) COMMENT='회원 테이블';
CREATE TABLE 📦member (
FID VARCHAR(20) NULL COMMENT '회원ID',
FNAME VARCHAR(30) NOT NULL COMMENT '회원명',
) COMMENT='회원 테이블';

create_table_member

⛔테이블 생성 오류 : 데이터베이스 사용 안함

no-database-selected

✅데이터베이스 사용

USE MSP05;

생성된 테이블 확인 (중요)

SHOW TABLES;
DESC TMEMBER;

📦TMEMBER 테이블

show_tables_desc_tmember

📦members 테이블

show_databases_desc_members

📦members 열 삽입

insert_into_members_(fid)_value_('yong');

📦members 테이블 조회

select * from members;

select_from_members

⛔ 잘못된 NOT NULL 열 삽입

insert into members (fname) value ('PISTA');

insert_into_not_null

FID는 NULL 되면 안됨, 또한 기본값을 가지고 있지않아 에러 발생

✅ NOT NULL 포함한 열 삽입

insert into members_(COL1,COL2) value(VAL1,VAL2)
insert into_members_(fid,fname) value('pista','yonghyeon');

select * from members;

insert_into_members_(fid,fname)_value('pista','yonghyeon')

📦pista 테이블 열 삭제

DELETE FROM members where fid='pista';

select * from memebers;

delete

char 범위 오류 with Mysql Wrokbench

  • char또는 varchar의 범위를넘어가서는 안된다.
--- 데이터베이스 사용
use MSP05;

--- TEST 테이블 추가
CREATE TABLE TEST (
fnum tinyint default 0,
fjumin1 char(6) not null,
fname varchar(4)
);

create_table_1

⛔ CHAR 범위를 넘은 값을 사용한 에러발생

insert into TEST (fjumin1, fname) value ('123', 'Hello, MySQL');
-- Error Code: 1406. Data too long for column 'fname' at row 1

insert-err

✅ CHAR 범위내에 값음 사용

insert into TEST (fjumin1, fname) value ('123', 'Hell');
-- 1 row(s) affected

select * from TEST;

select_from_1

날짜 추가 with Mysql Wrokbench


2025-11-04

테이블 생성

use MSP05;

CREATE TABLE IF NOT EXISTS test1 (
fidx int not null,
femail varchar(50) not null,
fbirth date not null,
fname varchar(20) not null,
fphone varchar(13) ,
faddr1 varchar(40) not null,
faddr2 varchar(40),
fregdate datetime not null
);
-- 결과 확인
describe MSP05.test1;

alt text

테이블

테이블 이름 변경 RENAME

`RENAME TABLE` <table_name> TO <new_table_name>;
RENAME TABLE test1 to test;
describe MSP05;

alt text

테이블 옮기기 RENAME

테이블을 다른 데이터베이스로 이동 및 테이블 가져오기

RENAME TABLE <table_name> TO <new_table_name>
-- 테이블 생성
CREATE DATABASE testdb;
-- 테이블 옮김
RENAME TABLE test TO testdb.test;
RENAME TABLE testdb.test TO test;

컬럼

추가

테이블의 컬럼을 새로 추가

ALTER TABLE <table_name> ADD <new_column> <data_type> ... ;
ALTER TABLE test
ADD faddr3 varchar(20);

컬럼 삭제 DROP

테이블의 컬럼을 삭제

ALTER TABLE <table_name> DROP <column_name>;
ALTER TABLE test DROP fadder3;
-- 확인
describe MSP05.test;

행 추가 (컬럼제외)

insert시 컬럼을 제외하고 행을 추가 가능하다.

이전

INSERT into test

values( 1,'pyh5523@gmail.com','1999-05-21','박용현','010-2686-5523','경기도 광명시',now());

이후

INSERT into test
values( 1,'pyh5523@gmail.com','1999-05-21','박용현','010-2686-5523','경기도 광명시',now());

컬럼 변경

컬럼 수정

📦행 삭제 DELETE FROM

테이블 안의 모든 행 삭제

  • DELETE FROM 이 안될경우 :
  1. EDIT > Preferences > SQL Editor > Safe Updated (uncheck)
  2. MySQL Workbench 실행
DELETE FROM <table_name> [where 조건];
DELETE FROM test;

📦행 삭제 (TRUNCATE)

TRUNCATE <table_name>;
TRUNCATE test;
select * from test;

기본키

고유키

참조키

  • 선행 : FOREIGN KEY대상 열에 PRIMARY KEY키 발급 할것

추가

ALTER TALBE <table_name> ADD CONSTRAINT <foreign_key_name>
FOREIGN KEY(<column_name>) REFERENCES <target_table_name> (<cloumn_name>);

테이블 생성

CREATE TABLE IF NOT EXISTS test2 (
fidx int,
ftestidx int not null,
fmemo varchar(100) not null,
fdate datetime not null
);
describe test2;

FOREIGN KEY 발급에 대상 지정 (중요)

ALTER TABlE test2
ADD constraint fk_ftestidx_test2
FOREIGN KEY (ftestidx)
REFERENCES test (fidx);

SHELL에서 확인

mysql> show create table test2

📦삭제

  • foreign_key_checks참조키 제약 무결성 설정 및 해제
SET foreign_key_checks=0;
ALTER TABLE <table_name> DROP FOREIGN KEY <foreign_key_name
SET foreign_key_checks=1;

ALTER TABLE test2 DROP FOREIGN KEY fk_ftestidx_test2;

[결과] MySQL Workbench에서 확인

11:58:45 ALTER TABLE test2 DROP FOREIGN KEY fk_ftestidx_test2 0 row(s) affected Records: 0 Duplicates: 0 Warnings: 0 0.000 sec

[check] fk_testidx_test2에 없는지

| test2 | CREATE TABLE `test2` (
`fidx` int DEFAULT NULL,
`ftestidx` int NOT NULL,
`fmemo` varchar(100) NOT NULL,
`fdate` datetime NOT NULL,
KEY `fk_ftestidx_test2` (`ftestidx`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |

📦수정

선행

ALTER TABLE <table_name> DROP FOREIGN KEY <foreign_key_name>;
ALTER TABLE test2 DROP FOREIGN KEY fk_ftestidx_test2;

인덱스

📦조회

SHOW INDEX FORM <table_name>;
SHOW INDEX FROM test;

결과

image

생성 (중복 허용)

CREATE INDEX <index_name> ON <table_name> (<column_name>);
CREATE INDEX idx_test ON test ( femail );
SHOW INDEX FROM test;

결과

alt text

check

INSERT INTO test values
('1','pistachio@gmail.com','1111-11-11','YonghyeonPark','010-1111-1111','경기도:광명시','sysdate()'),
('2','pistachio@gmail.com','2222-22-22','pistachio','010-2222-2222','서울시:강남구','sysdate()');

생성 (중복 불허)

CREATE UNIQUE INDEX <index_name> ON <table_name> (<column_name>);
CREATE UNIQUE INDEX idex_test ON test (femail);
SHOW INDEX FROM test;

check

INSERT INTO test values
('1','pistachio@gmail.com','1111-11-11','YonghyeonPark','010-1111-1111','경기도:광명시','sysdate()'),
('2','pistachio@gmail.com','2222-22-22','pistachio','010-2222-2222','서울시:강남구','sysdate()');

결과

Error Code: 1292. Incorrect datetime value: 'sysdate()' for column 'fregdate' at row 1

생성 ALTER

ALTER문을 활용한 INDEX 생성

ALTER TABLE <table_name> ADD INDEX <index_name> (<column_name>);

ALTER TABLE <table_name> ADD UNIQUE INDEX <index_name> (<column_name>);

ALTER TABLE <table_name> ADD FULLTEXT INDEX <index_name> (<column_name>);

ALTER TABLE <table_name> ADD PRIMARY KEY INDEX <index_name> (<column_name>);
ALTER TABLE test ADD INDEX idx_test (femail);
SHOW INDEX FROM test;

📦삭제

형식

DROP INDEX <index_name> ON <talbe_name>;
DROP INDEX idx_test ON test;
SHOW INDEX FROM test;

사용자

사용자 추가

CREATE USER `<user_name>'@'<host_info>' IDENTIFIED [WITH 암호화방식]BY '<password>';
FLUSH PRIVILEGES; -- 사용자 즉시 적용

사용자 삭제

DROP USER '<user_name>'@'<host_info>';

사용자 권한

권한 확인

SHOW GRANTS FOR '<user_name>'@'<localhost>';
SHOW GRANTS FOR 'pista1'@'localhost';

권한 부여

GRANT ALL PRIVILEGES ON [database_name].* TO '<user_name>'@'<localhost>';
GRANT ALL PRIVILEGES ON PISTA1.* TO 'pista1'@'localhost';
SHOW GRANTS FOR 'pista1'@'localhost';

alt text

GRANT ALL privileges ON PISTA2.t2kor TO 'pista2'@'localhost';
SHOW GRANTS FOR 'pista2'@'localhost';

결과 alt text alt text

GRANT SELECT,UPDATE,INSERT,DELETE ON PISTA2.* TO 'pista3'@'localhost';
FLUSH privileges;
SHOW GRANTS FOR 'pista2'@'localhost';

관련 문서

그래프 뷰

그래프 데이터 로딩 중…
현재: TABLE
노드 클릭 → 이동 · 드래그 → 위치 조정