반응형
🚀
테이블(Table) : 서로 연관된 레코드의 집합을 의미
레코드(Record) : 하나의 단위로 취급되는 자료의 집합. DB에서는 행(Row)에 해당
필드(Field) : 가장 작은 단위의 데이터를 의미. DB에서는 열(Column)에 해당
⭐️ 데이터베이스
데이터베이스 조회
SHOW DATABASES;
데이터베이스 사용
USE 데이터베이스명;
데이터베이스 생성
CREATE 데이터베이스명;
데이터베이스 삭제
DROP DATABASES 데이터베이스명;
⭐️ 테이블
테이블 생성
CREATE TABLE 테이블명(
필드명 데이터타입(보이는 자리수) 조건;
필드명 데이터타입 조건;
필드명 데이터타입 조건;
PRIMARY KEY(primary key로 정한 필드명)
);
CREATE TABLE topic(
id INT(11) NOT NULL AUTO_INCREMENT;
title VARCHAR(100) NOT NULL;
description TEXT NULL;
created DATETIME NOT NULL;
author VARCHAR(15) NULL;
profile VARCHAR(200) NULL;
PRIMARY KEY(id)
);
테이블 정보 조회
DESCRIBE 테이블명; // or "DESC 테이블명;"
테이블 삭제
DROP TABLE 테이블명;
⭐️ 레코드
레코드 조회
SELECT * FROM 테이블명; // 와일드카드 * 를 사용해서 테이블의 모든 데이터 조회
SELECT 필드명1, 필드명2 FROM 테이블이름; // 필드명1,2만 조회
SELECT * FROM 테이블이름 WHERE 필드명 = '내용'; // 해당 필드에서 값이 '내용'인 레코드 조회
SELECT * FROM 테이블이름 WHERE 필드명 BETWEEN 00:00:00 AND 12:00:00 // 00시~12시 사이
SELECT * FROM 테이블이름 WHERE 필드명 IN (A, B); // 괄호 내의 일치하는 값이 있다면 조회
SELECT * FROM 테이블이름 WHERE 필드명 LIKE '%문자열%'; // 문자열 포함된 레코드 조회
SELECT * FROM 테이블이름 WHERE 필드명 IS NULL; // 또는 "NOT IS NULL"
SELECT COUNT(*) FROM 테이블명 WHERE 필드명='내용'; // 해당 필드에서 값이 '내용'인 레코드 개수
SELECT * FROM Customers WHERE country='KR';
SELECT * FROM Customers WHERE id='asd111';
SELECT * FROM Costomers ORDER BY age; // 오름차순 정렬
SELECT * FROM Costomers ORDER BY age DESC; // 내림차순 정렬
SELECT DISTINCT 필드명 FROM 테이블이름; // 해당 필드 기준으로 중복된 레코드제거
// Info 데이터베이스의 Users 테이블에서 userName이 'A'로 시작하는 레코드들의 userId, userName 필드 조회
SELECT userId, userName FROM Info.Users WHERE userName LIKE 'A%'
SELECT COUNT(*) FROM Customers WHERE age='25';
레코드 추가
INSERT INTO 테이블명 (필드명1, 필드명2) VALUES (필드값1, 필드값2); // 테이블에 새 레코드 추가
INSERT INTO 목적지테이블명 SELECT * FROM 출발지테이블명; // 모든 필드 복사
INSERT INTO 목적지테이블명 (필드1,필드2,필드3) SELECT 필드1,필드2,필드3 FROM 출발지테이블명; // 지정 필드 복사
INSERT INTO Customers (userName, age) VALUES ('John', '25'), ('coco', '27');
레코드 수정
UPDATE 테이블명 SET 필드명1=필드값1, 필드명2=필드값2 WHERE 조건;
레코드 삭제
DELETE FROM 테이블명 WHERE 조건;
⭐️ 조인
- 왼쪽 외부 조인 (left outer join)
SELECT * FROM A
LEFT JOIN B ON A.key = B.key
- 왼쪽 안티 조인 (left anti join)
SELECT * FROM A
LEFT JOIN B ON A.key = B.key
WHERE B.key IS NULL
- 오른쪽 외부 조인 (right outer join)
SELECT * FROM A
RIGHT JOIN B ON A.key = B.key
- 오른쪽 안티 조인 (right anti join)
SELECT * FROM A
RIGHT JOIN B ON A.key = B.key
WHERE A.key IS NULL
- 내부 조인 (inner join)
SELECT * FROM A
INNER JOIN B ON A.key = B.key
- 전체 조인 (full outer join)
SELECT * FROM A
FULL OUTER JOIN B ON A.key = B.key
- 전체 조인 변형 (full outer join 변형)
SELECT * FROM A
FULL OUTER JOIN B ON A.key = B.key
WHERE A.key IS NULL OR B.key IS NULL
📚 참고
반응형
'💾Database > 🐬MySQL' 카테고리의 다른 글
SQL 튜토리얼, 연습, 실습 사이트 모음 (4) | 2021.10.17 |
---|---|
[SQL] 중복된 데이터출력하기 (0) | 2021.04.03 |
[프로그래머스 SQL 고득점 kit] - String, Date 문제 풀이 (0) | 2021.03.05 |
[프로그래머스 SQL 고득점 kit] - JOIN 문제 풀이 (0) | 2021.03.04 |
[프로그래머스 SQL 고득점 kit] - IS NULL 문제 풀이 (0) | 2021.03.03 |