본문 바로가기

컴퓨터/MariaDB

데이터베이스 MariaDB

  MariaDB는 MySQL에서 파생된 오픈소스 데이터베이스 프로그램이다.

 

[연산자]

  기본적인 사칙, 비교연산자의 사용법은 자바스크립트와 동일하다. 단 "같음"을 나타내는 연산자는 「==」이 아니라, 「=」이다.


[SQL]

  SQL은 「Structured Query Language」의 약자로 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다.

1) 조회

  (1) 특정 칼럼 조회

SELECT column1, column2, ... FROM table_name;

※ 쿼리문은 구분이 용이하게 대문자로 입력한다.

  (2) 전체 칼럼 조회

SELECT * FROM table_name;

  (3) 문자 인코딩 바꿔서 조회

SELECT CONVERT(컬럼명 USING 문자인코딩) FROM 테이블명;

2) 조건

SELECT column1, column2, ... FROM table_name WHERE condition;

3) 논리

  (1) 그리고

SELECT column1, column2, ... FROM table_name WHERE condition1 AND condition2 AND condition3 ...;

  (2) 또는

SELECT column1, column2, ... FROM table_name WHERE condition1 OR condition2 OR condition3 ...;

  (3) 부정

SELECT column1, column2, ... FROM table_name WHERE NOT condition;

6) NULL 검사

  (1) NULL 값

SELECT column_names FROM table_name WHERE column_name IS NULL;

  (2) NULL 아닌 값

SELECT column_names FROM table_name WHERE column_name IS NOT NULL;

9) 제한

SELECT column_name(s) FROM table_name WHERE condition LIMIT number;

10) 최소·최대

 11) 갯수, 평균, 합계

  (1) 갯수

SELECT COUNT(column_name) FROM table_name WHERE condition;

  (2) 평균

SELECT AVG(column_name) FROM table_name WHERE condition;

  (3) 합계

SELECT SUM(column_name) FROM table_name WHERE condition;

12) 유사

SELECT column1, column2, ... FROM table_name WHERE columnN LIKE pattern;

13) 와일드카드

LIKE Operator Description
WHERE CustomerName LIKE 'a%' Finds any values that starts with "a"
WHERE CustomerName LIKE '%a' Finds any values that ends with "a"
WHERE CustomerName LIKE '%or%' Finds any values that have "or" in any position
WHERE CustomerName LIKE '_r%' Finds any values that have "r" in the second position
WHERE CustomerName LIKE 'a__%' Finds any values that starts with "a" and are at least 3 characters in length
WHERE ContactName LIKE 'a%o' Finds any values that starts with "a" and ends with "o"

 

심화편

[주석]

* 한 줄 주석

-- 한줄 주석;

* 여러 줄 주석

/*
  여러줄
  주석
*/

[테이블]

※ 테이블에 관련된 작업은 SQL로 처리하기 보단, HeidiSQL 에서 처리하는 것이 간편하다.

* 목록 보기

SHOW TABLES;

* 생성

CREATE TABLE 테이블명 (
컬럼명1 INT PRIMARY KEY AUTO_INCREMENT,
컬럼명2 VARCHAR(15) NOT NULL,
컬럼명3 INT
) ENGINE=INNODB;

* 구조 보기

DESCRIBE 테이블명;

* 구조 복사

CREATE TABLE IF NOT EXISTS 복사테이블 LIKE 원본테이블;

* 테이블 데이터 전체 복사

INSERT INTO `복사 테이블` SELECT * FROM `원본 테이블`;

* 테이블 이름 변경

RENAME TABLE 이전테이블명 TO 새테이블명;
RENAME TABLE 이전테이블명1 TO 새테이블명1, 이전테이블명2 TO 새테이블명2;

* 테이블 삭제

DROP TABLE 테이블명;
DROP TABLE IF EXISTS 테이블명;

* 테이블 비우기

> TRUNCATE 테이블명;

[컬럼]

* 기본값 변경

ALTER TABLE 테이블명 MODIFY COLUMN 컬럼명 자료형 DEFAULT 기본값;

* 선택 열 데이터 복사

INSERT INTO 복사테이블 (컬럼1, 컬럼2) SELECT 컬럼1, 컬럼2 FROM 원본테이블;

 


 

[UPSERT]

INSERT INTO 테이블명 (칼럼명1, 칼럼명2, ...) VALUES (레코드1, 레코드2, ...) ON DUPLICATE KEY UPDATE 칼럼명1=레코드1, 칼럼명2=레코드2, ...;

※ 단, 기준이 되는 칼럼은 UNIQUE 인덱스 설정을 해줘야 한다. UNIQUE 인덱스 설정을 안 해주면, 같은 값이 그냥 insert 된다.

[Aliases]

  조회할 때 열의 이름을 정해준다.

SELECT 컬럼명 AS 새컬럼명 FROM 테이블명;

[일시]

* 현재 일시

NOW()

* 오늘

CURDATE()

* 요일

WEEKDAY("2017-01-23")

* 차이 계산

SELECT TIMESTAMPDIFF(YEAR, '2017-03-01', '2018-03-28');
SELECT TIMESTAMPDIFF(DAY, '2017-03-01', '2018-03-28');
-- SELECT TIMESTAMPDIFF(YEAR, '2017-03-01 00:00:00', '2018-03-28 00:00:00');

* 한달전, 하루전, 한시간전

DATE_ADD(NOW(), INTERVAL -1 MONTH); //한 달 전
DATE_ADD(NOW(), INTERVAL -1 DAY); //하루 전
DATE_ADD(NOW(), INTERVAL -1 HOUR); //한 시간 전

[문자열]

* 자르기

- 왼쪽에서 자르기

LEFT(문자열, 남길길이)

- 오른쪽에서 자르기

RIGHT(문자열, 남길길이)

* 합치기

CONCAT(문자열1, 문자열2);

* 수정

REPLACE(문자열, 수정전문자열, 수정후문자열);

[특수문자]

\0 널문자(null)
\n 개행문자
\t 탭(tab)
\r 캐리지 리턴(carriage return)
\b back space
\' single quote(')
\" double quote(")
\\ 역슬래시(\) 문자
\% 퍼센트(%) 기호 검색시에 사용되 는 % 문자가 아닌 그냥 문자
\_ _문자 검색 시에 사용되는 _문자 가 아닌 그냥 문자

 

[외래키 제약]

CASCADE A개체를 변경/삭제할 때, A개체를 참조하고 있는 모든 개체들이 변경/삭제된다.
RESTRICT A개체를 변경/삭제할 때, A개체를 참조하고 있는 개체가 존재하면 A개체에 대한 명령(변경/삭제)이 취소된다.
SET NULL A개체를 변경/삭제할 때, A개체를 참조하고 있는 모든 개체들의 값은 NULL로 셋팅된다.

※ 외래키명은 동일 데이터베이스 내에서 중복될 수 없다.
※ 외래키명 추천: FK_원본테이블명_대상테이블명_칼럼명

'컴퓨터 > MariaDB' 카테고리의 다른 글

MariaDB DATA  (0) 2022.02.18
MariaDB TABLE  (0) 2022.02.18
MariaDB IFNULL(), NULLIF()  (0) 2022.02.17
MariaDB 형 변환  (0) 2022.02.17
014. HeidiSQL 사용법  (0) 2021.10.29