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 |