데이터베이스(Database)는 체계화된 데이터의 모임이며, 이러한 데이터베이스를 관리하기 위해 사용되는 SQL(Structured Query Language)에는 DDL(Data Definition Language)과 DML(Data Manipulation Language) 두 가지 종류의 명령어가 있습니다.
DDL(Data Definition Language)
데이터베이스의 구조를 정의하기 위한 명령어
예를 들어 테이블을 생성 or 삭제, 컬럼을 추가 or 삭제 즉 데이터 정의 작업을 수행합니다. 대표적으로는 다음과 같은 명령어가 있습니다.
- CREATE: 테이블, 뷰(View), 인덱스(Index) 등을 생성합니다.
- DROP: 테이블, 뷰(View), 인덱스(Index) 등을 삭제합니다.
- ALTER: 테이블의 구조를 변경합니다.
- TRUNCATE: 테이블의 모든 데이터를 삭제합니다.
DML(Data Manipulation Language)
데이터베이스에 저장된 데이터를 조회, 삽입, 수정, 삭제하는 등의 데이터 조작 작업을 수행하는 명령어입니다. 대표적으로는 다음과 같은 명령어가 있습니다.
- SELECT: 데이터를 조회합니다.
- INSERT: 데이터를 삽입합니다.
- UPDATE: 데이터를 수정합니다.
- DELETE: 데이터를 삭제합니다.
따라서 DDL은 데이터의 구조를 정의하는 명령어이고, DML은 데이터를 조작하는 명령어입니다. 이 두 가지 명령어를 사용하여 데이터베이스를 구축하고, 유지보수하는 작업을 수행합니다.
ex) 1번 상황
전체 테이블을 리스팅 해보고 a1 데이터가 있는 걸 확인한 멜로는 a1 데이터 베이스를 지웠다가 다시 생성하고 싶다. 그리고 a1 데이터베이스의 테이블을 보고 싶어 한다. 이때 사용할 sql 문은?show databases; # 전체 데이터베이스 리스팅 drop database if exists a1; # 기존에 a1 데이터베이스가 존재 한다면 삭제 create database a1; #a1 데이터 베이스 생성 use a1; # `a1` 데이터 베이스 선택 show tables; # use된 데이터 베이스의 테이블 리스팅
ex) 2번상황
a1 데이터 베이스가 있을 때 멜로는 member라는 테이블에 이름(varchar(50)), 나이(int), 성별 VARCHAR(10) 컬럼을 만들고 싶다. 그리고 member 테이블에 잘 컬럼들이 잘 들어가 있는지 확인하고 싶어 한다 이때 사용할 sql 문은?use a1; # `a1` 데이터 베이스 선택 CREATE TABLE member ( id INT PRIMARY KEY, name VARCHAR(50), age INT, gender VARCHAR(10) ); desc member; # 잘들어가있는지 확인
ex) 3번상황
위에 멤버 테이블에서 이제 값을 넣으려고 한다 id는 1번, name에는 멜로, age는 4, gender는 남으로 넣으려고 한다. 그리고 넣고 보니 id 값이 자동으로 증가했으면 좋겠다고 생각한 멜로는 새로운 newMember 테이블을 다시 짜기로 한다! id가 자동 증가되는 이때 사용할 sql 문은?insert into member set id=1,name='멜로',age=10,gender='남'; select * from member; #member 테이블에 전부다 들어갔는지 확인하기 CREATE TABLE newMember ( id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, #null이 되지않으면서 자동으로 증가시켜주는 구문이다. 그리고 이왕이면 뒤에 notnull을 붙여주는게 좋다. name VARCHAR(50), age INT, gender VARCHAR(10) );
ex) 4번상황
멤버 테이블에 특정 데이터만 조회하고싶다. name과 age만 보고싶다가 전부다 보고싶다
그리고 member에 id가 2인 멤버를 삭제하고 싶다.이때 사용할 sql 문은?select title,body from article;# 데이터 조회2개 이상은 , 로 적으면된다(title, body) select * from article;# 전체 데이터 조회(*) delete from article where id=2;# 2번 게시물, 데이터 삭제 => DELETE
그외 명령어들 모음
# 기존 데이터 중 1개만 id를 2로 변경(LIMIT 1) update (테이블이름) set id=2 LIMIT 1; # 날짜 칼럼을 id컬럼 다음에 추가 => (날짜 컬럼 = regDate DATETIME)다음에 추가하는 의미 =>after alter table (데이터베이스이름) add column regDate datetime after id; #member 테이블에서 id 10번부터 55번까지 특정테이터를 보고싶을때(2가지 방법) #1번방법 SELECT * FROM member WHERE id >= 10 AND id <= 55; #2번방법 SELECT * FROM article WHERE hit BETWEEN 10 AND 55;