from DUAL;
'DUAL' 테이블은 실제로 존재하지 않지만, 단일 행의 결과를 생성하기 위해 사용됩니다. 주로 SELECT 문에서 테스트, 계산 또는 리터럴 값을 반환하는 데 사용됩니다.
CREATE DATABASE 이름;
데이터베이스 만들기(TABLE말고)
USE BASEBALL;
그 데이터베이스 사용하기
-- 데이터 읽기 (SELECT)
select * from bonus;
-- 모든 열 가져오기 / SELECT * FROM 테이블명
select ename, job from bonus;
-- 선택한 열 가져오기 / SELECT 열1, 열2, 열3 FROM 테이블명
select * from bonus where ename = '임꺽정';
-- 조건에 맞는 행의 모든 열 가져오기 / SELECT * FROM 테이블명 WHERE 조건
select ename, job from bonus where ename = '임꺽정';
-- 조건에 맞는 행의 선택한 열 가져오기 / SELECT 열1, 열2, 열3 FROM 테이블명 WHERE 조건
-- 데이터 쓰기 (INSERT)
insert into bonus values('임꺽정', '변호사', 1000, 200);
-- 데이터 삽입 (열의 개수와 값의 개수가 같아야함) / INSERT INTO 테이블명 VALUES(값1, 값2 ...)
insert into bonus(ename, job, sal, comm) values('홍길동', '프로그래머', 600, 100);
-- 열 지정하여 데이터 삽입 / INSERT INTO 테이블명(열1, 열2 ...) VALUES(값1, 값2 ...)
desc 테이블명; 으로 보고나서 insert하기
-- 데이터 수정 (UPDATE)
update bonus set sal = 2000 where job = '프로그래머';
-- UPDATE 테이블명 SET 열1=값1, 열2=값2, ... WHERE 조건식
-- WHERE 조건이 없으면 전부
-- 데이터 삭제 (DELETE)
delete from bonus where ename='홍길동';
-- DELETE FROM 테이블명 WHERE 조건식
delete 실행시에 한번에 여러행이 의도치 않게 삭제되는 것을 방지하고자 기본적인 safe update 설정
이 되어 있다. 여러행을 동시에 삭제하려면 safe update 모드 해제 후 툴 재시작해야한다.
DDL은 데이터베이스 스키마(schema)를 생성, 수정 또는 삭제하며,
테이블, 인덱스, 제약 조건 등과 같은 데이터베이스 개체를 정의하는 데 사용됩니다.
CREATE: 데이터베이스, 테이블, 뷰, 인덱스 등을 생성합니다.
CREATE TABLE 테이블명(
속성이름 데이터타입 제약조건
);
ALTER: 데이터베이스 개체의 구조를 수정합니다. 테이블에 열 추가, 삭제 또는 수정 등
DROP: 데이터베이스 개체를 삭제합니다. 테이블, 뷰, 인덱스 등을 제거할 수 있습니다.
(DROP문은 테이블을 삭제 / DLETE문은 테이블의 내용을 삭제)
DROP TABLE 테이블명;
TRUNCATE TABLE 테이블이름;
테이블의 모든 데이터를 삭제합니다.
PRIMARY KEY
FOREIGN KEY
UNIQUE
NOT NULL
DEFAULT
AUTO_INCREMENT
CREATE TABLE team_tb (
tno int primary key auto_increment,
-- PRIMARY KEY: 테이블의 주요 식별자(primary key)를 정의, 고유하고 NULL이 아닌 값이어야 함
-- AUTO_INCREMENT: 자동으로 일련번호가 생성되며, 이 번호는 자동으로 1씩 증가합니다.
tname varchar(10) not null unique,
-- NOT NULL: 특정 열이 NULL 값을 허용하지 않도록 지정하는 제약 조건
-- UNIQUE: 특정 열 또는 열 집합에 고유한 값만 허용하는 제약 조건
tyear int not null,
tloc varchar(10) not null
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE player_tb (
pno varchar(20),
pname varchar(20),
pnumber int CHECK (pnumber BETWEEN 1 AND 100),
prole varchar(20) default '타자',
-- DEFAULT: 열에 기본값을 지정하는 제약 조건. 해당 열이 명시적으로 값을 가지지 않으면 기본값
tno int,
FOREIGN KEY (tno) REFERENCES team_tb(tno)
-- FOREIGN KEY: 다른 테이블의 주요 식별자를 참조하는 외래 키를 정의하는 제약 조건.
-- FOREIGN KEY(자식 테이블 컬럼명) REFERENCES 참조테이블(부모 테이블 컬럼명)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- auto_increment 테스트
insert into team_tb(tname, tyear, tloc)
values('롯데', 2000, '부산');
insert into team_tb(tname, tyear, tloc)
values('삼성', 2005, '대구');
insert into team_tb(tname, tyear, tloc)
values('롯데', 2010, '제주'); -- 오류
insert into player_tb(pname, pnumber, tno)
values('이대호', 101, 1); -- 오류
insert into player_tb(pname, pnumber, tno)
values('이대호', 100, 3); -- 오류
insert into player_tb(pname, pnumber, tno)
values('이대호', 8, 1);
select * from team_tb;
select * from player_tb;
DROP TABLE team_tb;
DROP TABLE player_tb;
alter는 자주 사용할 일이 없으니 참고만
ALTER TABLE ADD COLUMN : 테이블에 새로운 컬럼을 추가합니다.
ALTER TABLE DROP COLUMN : 테이블에서 기존 컬럼을 삭제합니다.
ALTER TABLE CHANGE COLUMN : 테이블의 기존 컬럼의 이름, 데이터 유형, 크기를 변경합니다.
ALTER TABLE RENAME TO : 테이블의 이름을 변경합니다.
ALTER TABLE ADD CONSTRAINT : 테이블에 새로운 제약 조건을 추가합니다.
ALTER TABLE DROP CONSTRAINT : 테이블에서 기존 제약 조건을 제거합니다.