-
#MySQL 돌고래 친구의 언어를 배워보자!.!MySQL 2023. 11. 15. 23:13
# MySQL이란?
가장 널리 사용되는 관계형 데이터베이스 관리 시스템(RDBM: Relational DBMS)으로 오픈소스이며, 자료를 관리 및 처리하기 위해 설계된 표준 언어입니다.
# MySQL 특징
1. 대소문자 구분을 하지 않습니다. 2. 구문 뒤에 세미콜론(;)을 붙입니다. 3. 주석은 두개의 하이픈(--)과 한 칸의 공백을 사용합니다. 4. 컬럼은 이름, 데이터타입, 제약사항으로 이루어져있습니다.
# 관계형 데이터베이스의 테이블(table)(출처: TCP School)
테이블(Table): 서로 연관된 레코드의 집합을 의미합니다.
레코드(Record): 하나의 단위로 취급되는 자료의 집합, DB에서는 행(Row)에 해당합니다.
필드(Field): 가장 작은 단위의 데이터를 의미합니다. DB에서는 열(Column)에 해당합니다.# 기초 SQL문 정리
** 데이터 베이스 보기
SHOW DATABASES;
** 데이터 테이블 보기
SHOW TABLES;
** 데이터 베이스 생성
CREATE DATABASE 데이터베이스명;
** 데이터 테이블 생성
CREATE TABLE 테이블명 (컬럼명1, 컬럼명2, 컬럼명3, ..., 컬럼명N);
** 데이터베이스 사용
USE 데이터베이스명;
** 데이터베이스 삭제
DROP DATABASE 데이터베이스명;
** 테이블 삭제
DROP TABLE 테이블명;
** 테이블에 새로운 칼럼 추가
ALTER TABLE 테이블명 ADD 컬럼명 자료형;
** 테이블에 특정 컬럼을 변경
ALTER TABLE 테이블명 CHANGE 변경전명 변경후명 자료형;
** 테이블에 특정 컬럼 삭제
ALTER TABLE 테이블명 DROP 컬럼명;
** 테이블에 데이터 추가하기
INSERT INTO 테이블명 (컬럼1, 컬럼2, ..., 컬럼N) VALUES (데이터1, 데이터2, ..., 데이터N);
** 테이블에 구조 살펴보기
DESCRIBE 테이블명;
** 원하는 항목 표시하기
SELECT * FROM 테이블이름; SELECT 컬럼1, 컬럼2, ...컬럼N FROM 테이블이름;
** 조건하에 항목 표시하기SELECT id, name, email FROM memo WHERE sex = 'M' AND math > '70';
** 순서대로 표시하기
// 오름차순 SELECT name, phone FROM memo ORDER BY 컬럼명 ASC;
// 내림차순 SELECT name, phone FROM memo ORDER BY 컬럼명 DESC;
** 원하는 갯수만큼 가져오기
// 위에서 4개만 가져온다. SELECT * FROM memo LIMIT 4;
// 3번부터 4개를 가져온다. SELECT * FROM memo LIMIT 2, 4;
** 데이터 갯수 알아내기
SELECT COUNT(*) FROM data;
** 특정조건에 해당하는 데이터 갯수 구하기
SELECT COUNT(*) FROM data WHERE sex = 'F';
** 검색을 통해 데이터 가져오기
SELECT * FROM student WHERE name LIKE '인민%';
** 자료 업데이트 하기
UPDATE 테이블명 SET 컬럼 = 값, ... WHERE 조건문
** 자료 삭제하기
DELETE FROM 테이블명 WHERE 조건문;
# 조인(join)
** 외쪽 외부 조인(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
# 제약조건(constraint)
** NOT NULL - 칼럼이 NULL 값을 가질 수 없도록 보장
** UNIQUE - 칼럼의 모든 값이 서로 다른 값을 가지도록 보장
** PRIMARY KEY - NOT NULL과 UNIQUE의 조합, 기본키
** FOREIGN KEY - 하나의 테이블과 다른 테이블을 연결, 외래 키
** DEFAULT - 해당 필드의 기본값을 설정
** AUTO INCREMENT - 칼럼이 생성될 때 자동생성
※ 참고 자료
https://dev.mysql.com/doc/refman/8.0/en/atomic-ddl.html
http://www.tcpschool.com/mysql/intro
https://tcpschool.com/mysql/mysql_constraint_notNull