SQL 기본 사용 방법
SQL 언어를 이용해서 데이터베이스를 다루는 기본 방법에 대해 다룬다.
데이터베이스 서버 🔗
SQL에는 여러가지가 있는데 MySQL을 설치했다고 해보자.
이를 실행하면 데이터베이스 서버를 사용할 수 있다.
서버에 접근하는 방법은 다양하다.
터미널에서 cli로 접근할 수도 있고 MySQL Workbench와 같은 앱을 이용해서도 할 수 있다.
데이터베이스 서버 구조 🔗
데이터베이스 서버는 다음과 같은 구조를 갖는다.
데이터베이스 서버 > 데이터베이스 > 테이블
데이터베이스 서버에 여러 데이터베이스를 생성할 수 있고,
각 데이터베이스에서 여러 테이블을 생성할 수 있다.
데이터베이스 관련 명령어 🔗
- 어떤 데이터베이스가 있는지 확인
show databases;
- 데이터베이스 생성
create database <이름>;
- 데이터베이스 삭제
drop database <이름>;
- 사용하려는 데이터베이스를 선택
use database <이름>;
- 현재 선택된 데이터베이스가 무엇인지 알고 싶을 때
select database();
테이블 생성 🔗
데이터베이스를 선택했으면 값을 기록할 수 있는 테이블을 생성할 수 있다.
기본 생성 🔗
name, age라는 column이 있는 cats 테이블을 생성한다.name에는 문자 타입의 데이터를 넣을 수 있고 max length는 100이다.age에는 숫자 타입의 데이터를 넣을 수 있고 -2,147,483,648에서 2,147,483,647까지의 숫자를 넣을 수 있다.
다른 타입은 MySQL 공식 문서를 참고하자.
CREATE TABLE cats (
name VARCHAR(100),
age INT
);
값을 필수로 입력 🔗
NOT NULL을 넣어서 NULL을 넣을 수 없음을 명시한다.
빈값을 넣을 수 없다.
CREATE TABLE cats2 (
name VARCHAR(100) NOT NULL,
age INT NOT NULL
);
기본값 🔗
값이 제공되지 않은 경우 기본값을 넣도록 할 수 있다.
CREATE TABLE cats3 (
name VARCHAR(20) DEFAULT '무명',
age INT DEFAULT 5
);
그러나 명시적으로 NULL을 넣는 것은 가능하기 때문에 이를 원하지 않는다면 NOT NULL도 설정해야 한다.
CREATE TABLE cats4 (
name VARCHAR(20) NOT NULL DEFAULT '무명',
age INT NOT NULL DEFAULT 5
);
PRIMARY KEY 🔗
id와 같이 각 데이터(row)를 구분해야 할 때 사용한다.
이미 존재하는 id 값을 포함해서 insert하려고 하면 에러가 발생한다.NOT NULL 옵션을 명시적으로 넣지 않아도 자동으로 설정된다.
CREATE TABLE cats (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
age INT NOT NULL
);
아래와 같이 할 수도 있다.
CREATE TABLE cats2 (
id INT,
name VARCHAR(100) NOT NULL,
age INT NOT NULL,
PRIMARY KEY (id)
);
AUTO_INCREMENT를 이용해서 id를 명시적으로 넣지 않아도 자동으로 1씩 증가하게 할 수 있다.
CREATE TABLE cats3 (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
age INT NOT NULL,
);
테이블 생성 확인 🔗
DESC <이름>
테이블 제거 🔗
DROP TABLE <이름>
데이터 추가 🔗
테이블에 데이터를 추가한다.
INSERT INTO cats (name, age)
VALUES ('야옹1', 2);
여러 데이터를 추가할 수도 있다.
INSERT INTO cats (name, age)
VALUES ('야옹1', 5),
('야옹2', 4),
('야옹3', 12);
데이터 조회 🔗
- 테이블에 있는 모든 내용을 조회한다.
SELECT * FROM cats;
- 특정 column만 조회한다.
-- name과 age column만
SELECT name, age FROM cats;
- 조건을 추가할 경우
WHERE을 사용한다.
-- age가 4인 경우만
SELECT * FROM cats WHERE age=4;
- 출력되는 column의 이름을 바꾸고 싶다면
AS(alias)를 이용한다.
-- id가 cat_id로 표시된다.
SELECT id AS cat_id, name FROM cats;
데이터 업데이트 🔗
업데이트를 하거나 삭제할 때에는 의도치 않게 데이터를 망가뜨릴 수 있으므로 WHERE 구문이 제대로 쓰였는지를 확인하기 위해 동일한 조건의 SELECT를 먼저 실행해보는 게 좋다.
-- id가 1인 데이터의 age를 14로 업데이트
UPDATE cats SET age=14 WHERE id=1;
데이터 삭제 🔗
-- id가 1인 데이터를 삭제
DELETE FROM cats WHERE id=1;
-- cats 테이블의 모든 데이터를 삭제
DELETE FROM cats;