[SQL] 기초 쿼리문 예제

김방울·2023년 3월 5일
4

SQL

목록 보기
1/1
post-thumbnail

쿼리문을 사용하게 될 일이 생겨, 복습 차원에서 이전 블로그에 기록해뒀던 기초 쿼리문 내용을 옮겨 적어보았습니다.😃

SQL

구조적 쿼리 언어(SQL)는 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어입니다.

관계형 데이터베이스는 데이터를 열과 행의 관계로 저장합니다.
데이터베이스는 폴더, 테이블은 엑셀 파일으로 비유하여 생각하면 조금 더 이해하기 쉬울 것 같습니다.

DB 관련 기초 쿼리문

📂 데이터베이스

  • 생성 : CREATE DATABASE DB명
  • 삭제 : DROP DATABASE IF EXISTS DB명;
  • 조회 : SHOW DATABASES;
  • 선택 : USE DB명;

💾 테이블

  • 생성 : CREATE TABLE 테이블명 (id INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, regDate DATETIME NOTN ULL, title CHAR(200) NOT NULL, 'body' TEXT NOT NULL);
  • 삭제 : DROP TABLE 테이블명;
  • 조회 : SHOW TABLES;
  • 컬럼 추가 : ALTER TABLE 테이블명 ADD COLUMN id CHAR(20) FIRST;
  • 컬럼 삭제 : ALTER TABLE 테이블명 DROP COLUMN id;
  • 컬럼 수정 : ALTER TABLE 테이블명 MODIFY COLUMN id id CHAR(20) AFTER regDate;`

📊 데이터

  • 생성 : INSERT INTO 테이블명 SET regDate = NOW(), title = '제목 1', body = '내용 1';
  • 수정 : UPDATE 테이블명 SET title = '새 제목 1' WHERE id = 2;
  • 삭제 : DELETE FROM 테이블명 WHERE id = 1;
  • 조회 : SELECT * FROM article;

삭제 명령어에는 DELETE, TURNCATE, DROP 명령어가 있습니다.
DELETE 명령어는 테이블 용량이 줄어들지 않으며 원하는 데이터만 지울 수 있다. 삭제 후 잘못 삭제한 것을 되돌릴 수 있습니다.
TRUNCATE 명령어는 테이블 용량이 줄어 들고, 테이블은 남아 있으나 안의 데이터만 삭제해 줍니다. 삭제 후 복구가 불가하며 원하는 데이터를 골라 삭제하는 것은 불가능합니다.
DROP 명령어는 테이블 자체를 삭제하며, 복구가 불가능합니다.

쿼리 실행 예제

# 전체 데이터베이스 리스팅 (조회)
SHOW DATABASES;

# `mysql` 데이터 베이스 선택
USE mysql;

# 테이블 리스팅 (조회)
SHOW TABLES;

# 특정 테이블의 구조를 확인하기
DESC db;

# `test` 데이터 베이스 선택
USE test;
 
# 테이블 리스팅
SHOW TABLES;

# 기존에 a1 데이터베이스가 존재 한다면 삭제
DROP DATABASE IF EXISTS a1;

# 새 데이터베이스(`a1`) 생성
CREATE DATABASE a1;

# 데이터베이스(`a1`) 선택
USE a1;

# 데이터베이스가 추가 되었는지 확인 (데이터베이스 목록 조회)
SHOW DATABASES;

# 테이블 확인
SHOW TABLES;

# 게시물 테이블 article을 만듭니다. 
# article은 title과 body 컬럼을 포함하고 있습니다.
# VARCHAR(100) => 문자를 100자까지 저장 가능
# text => 긴 글, 문자를 더 많이 저장 가능
CREATE TABLE article(
    title CHAR(200),
    `body` TEXT
);

# 테이블이 잘 추가되었는지 확인, 리스팅과 구조까지 확인
USE a1;
SHOW DATABASES;
SHOW TABLES;
DESC article;

 
# article 테이블에 데이터를 추가합니다.(title = 제목, body = 내용)
INSERT INTO article
SET title = '제목',
`body` = '내용';


# article 테이블 안의 데이터 조회(title만)
SELECT title FROM article;

# article 테이블 안의 데이터 조회(title, body)
SELECT title, `body` FROM article;
 

# article 테이블 안의 데이터 조회(body, title)
SELECT `body`, title FROM article;

# article 테이블 안의 전체 데이터 조회
SELECT * FROM article;

# 같은 내용의 데이터를 또 한번 추가해 봅시다.(title = 제목, body = 내용)
INSERT INTO article SET title = '제목', `body` = '내용';

# 전체 데이터를 조회해 봅니다. 모든 데이터가 동일하므로, 
# 어떤 것이 후에 추가된 데이터인지 알 수 없습니다.
SELECT * FROM article;

# 구별을 위해 테이블에 id 컬럼을 추가합니다. 맨 처음에 추가해 보겠습니다.
# 테이블 구조 수정
ALTER TABLE article ADD COLUMN id INT(10) FIRST;

# 데이터 조회(*, id 칼럼의 값은 NULL으로 조회됩니다.)
DESC article;
SELECT * FROM article;


# 기존 데이터에 id값 추가(id가 NULL인 곳을 수정합니다.)
UPDATE article SET id = 1 WHERE id IS NULL;

# 데이터 조회
# 모두 id가 1이므로 여전히 데이터 구별이 힘듭니다.
SELECT * FROM article;

# 기존 데이터 중 1개만! id를 2로 변경해 줍니다. (LIMIT 1)
UPDATE article SET id = 2 WHERE id = 1 LIMIT 1;

# 데이터 1개를 또 추가해봅니다. (id = 3, title = 제목3, body = 내용3)

INSERT INTO article
SET id = 3,
title = '제목3',
`body` = '내용3';

# 2번 게시물의 데이터를 삭제합니다. => DELETE

SELECT * FROM article WHERE id = 2;
DELETE FROM article WHERE id = 2;

# 테이블에 날짜 컬럼을 추가합니다. 
# regDate라는 이름의 컬럼을 만들고, id 속성 뒤에 추가해 줍니다. 
ALTER TABLE article ADD COLUMN regDate DATETIME AFTER id;

# 테이블 구조 확인
DESC article;

# 데이터를 조회하면 날짜 정보가 비어있습니다.
SELECT * FROM article;

# 1번 게시물의 비어있는 날짜정보를 채워 봅시다.(regDate = 2018-08-10 15:00:00)
UPDATE article SET 
regDate = '2018-08-10 15:00:00' 
WHERE id = 1;

# NOW() 함수 실행해보기. NOW 함수는 현재 MySQL 서버의 시간 값을 가져오는 함수입니다.
SELECT NOW();

# 3번 게시물의 비어있는 날짜정보 채우기(NOW())
UPDATE article SET regDate = NOW() WHERE id = 3;

# 데이터 조회(*)
SELECT * FROM article;

게시물 테이블 만들기 예제

# 데이터베이스 목록 조회하기
SHOW DATABASES;

# blog라는 이름을 가진 데이터베이스 생성
CREATE DATABASE blog;

# blog 데이터베이스 선택
USE blog;

# 데이터베이스 안의 테이블들을 확인
SHOW TABLES;

# 테이블 생성
# int = 정수, datetime = 날짜, char = 문자, 100자까지 들어갈 수 있음, text = 긴 글
# primary key = 중복을 허용하지 않음!
# auto_increment = 자동으로 번호 삽입
CREATE TABLE article(
    id INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
    regDate DATETIME NOT NULL,
    title CHAR(100) NOT NULL,
    `body` TEXT NOT NULL
);

# 테이블 삭제 시 실행할 명령어
DROP TABLE IF EXISTS article;

검색 쿼리 실행 예제

# 조회수 가장 많은 게시물 3개 만 보여주세요.
# ASC = 오름차순 , 생략 가능, DESC = 내림차순
SELECT * FROM article ORDER BY hit DESC LIMIT 3;

# 작성자명이 '방울'로 끝나는 게시물만 보여주세요.
SELECT * FROM article WHERE nickname LIKE '%방울';

# 조회수가 10 이상 55 이하 인것만 보여주세요. 
# WHERE 조건1 AND 조건2
SELECT * FROM article WHERE hit >=10 AND hit<=55;

# 작성자가 '무명'이 아니고 조회수가 50 이하인 것만 보여주세요., 
SELECT * FROM article WHERE nickname != '무명' AND hit<=50;

# 작성자가 '무명' 이거나 조회수가 55 이상인 게시물을 보여주세요. 
SELECT * FROM article WHERE nickname = '무명' OR hit >= 55;
profile
코딩하는 고양이🐱 / UI Developer, Front-end Developer

0개의 댓글

관련 채용 정보