DML / DDL / 제약조건

김지원·2023년 6월 30일
0

duel

from DUAL;
'DUAL' 테이블은 실제로 존재하지 않지만, 단일 행의 결과를 생성하기 위해 사용됩니다. 주로 SELECT 문에서 테스트, 계산 또는 리터럴 값을 반환하는 데 사용됩니다.

DML

  1. 데이터 삽입(Insert): 데이터베이스 테이블에 새로운 데이터를 추가합니다.
  2. 데이터 갱신(Update): 데이터베이스 테이블에서 기존 데이터를 수정 또는 갱신합니다.
  3. 데이터 삭제(Delete): 데이터베이스 테이블에서 특정 데이터를 삭제합니다.
  4. 데이터 조회(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

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는 자주 사용할 일이 없으니 참고만

ALTER TABLE ADD COLUMN : 테이블에 새로운 컬럼을 추가합니다.
ALTER TABLE DROP COLUMN : 테이블에서 기존 컬럼을 삭제합니다.
ALTER TABLE CHANGE COLUMN : 테이블의 기존 컬럼의 이름, 데이터 유형, 크기를 변경합니다.
ALTER TABLE RENAME TO : 테이블의 이름을 변경합니다.
ALTER TABLE ADD CONSTRAINT : 테이블에 새로운 제약 조건을 추가합니다.
ALTER TABLE DROP CONSTRAINT : 테이블에서 기존 제약 조건을 제거합니다.

profile
https://github.com/k7850

0개의 댓글