1.SQL과 DB
SQL
-구조적 질의어(Structured Query Language)로 관계형 데이터 베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계한 특수 목적의 프로그래밍 언어.
-데이터 정의 언어(DDL): 데이터의 형과 구조에 대한 정의를 위해 사용합니다.
-데이터 조작 언어(DML): 데이터 검색, 갱신, 삽입, 삭제 기능입니다.
-데이터 제어 언어(DCL): 데이터의 접근 권한을 관리하기 위해 사용합니다.
RDB
-관계형 데이터베이스, 2차원적인 표를 이용해서 데이터 간의 관계를 정의하는 데이터베이스입니다.
학번 | 과목 | 학점 |
20013 | 실천이성비판 이해 | 3 |
20024 | 현대철학 | 3 |
20034 | 법학개론 | 3 |
-표= 릴레이션
-'학번, 과목, 학점' = 속성
-'20013 - 실천이성비판 이해 - 3', '20024 - 현대 철학 - 3', '20034 - 법학개론 - 3' = 튜플
-속성의 수 = 열의 수 = 디그리 = 차수
-튜플의 수 = 행의 수 = 카디널리티 = 기수
-도메인: 하나의 속성이 가지는 값의 집합. -> 과목 속성의 도메인 = '실천이성 비판 이해', '현대철학', '법학개론'
2.DML
Create
-DB, 스키마, 테이블, 뷰 등의 객체를 생성합니다.
*Mysql 기준
[1]DB
CREATE DATABASE db_name;
[2]TABLE
CREATE TABLE table_name (attribute_name data_type [DEFAULT default_value][NOT NULL],
attribute_name2 data_type2 [DEFAULT default_value][NOT NULL],
PRIMARY KEY(primary_key_column, [primary_key_column2]..));
ALTER
-테이블 객체 구조 변경
[1]ADD
ALTER TABLE table_name ADD attribute_name data_type [DEFUALT 'default_value'][NOT NULL];
[2]DROP
ALTER TABLE table_name DROP COLUMN attribute_name;
DROP & TRUNCATE
-둘 다 삭제와 관련되어 있는데, 전자의 경우 객체를 삭제하고, 후자의 경우 객체 내의 데이터만 삭제한다(즉 비운다)고 생각하면 됩니다.
DROP TABLE table_name;
TRUNCATE TABLE table_name;
3.DML
SELECT
-테이블에서 데이터를 검색합니다.
SELECT [DISTINCT] [table_name.]attribute_name [AS alias] [[table_name.]attribute_name2 [AS alias]]
FROM table_name[, table_name2]
[WHERE [condition, (SELECT ...)]
[ORDER BY attribute_name [ASC , DESC]];
-DISTINCT: 중복 제거
-SELECT ...: 이중 쿼리
-WHERE 구문에 WHERE attribute_name like 와 같은 구문을 사용할 수 있는데, like 뒤에 "%"는 문자 전부를 대체, "_"는 문자 하나를 대체, #은 숫자 하나를 대체해서 사용할 수 있습니다.
*WHERE 이후에는 쓸 수 있는게 굉장히 많습니다.
-ASC: 오름차순
-DESC: 내림차순
UNION
-select 문에서 2개 이상의 테이블의 데이터를 통합시키는 기능을 가지고 있습니다.
SELECT attribute_name FROM table_name
UNION | UNION ALL | INTERSECT | EXCEPT
SELECT attribute_name2 FROM table_name2;
-UNION: 통합 출력 -> 중복된 행은 하나만 출력
-UNION ALL: 통합 출력 -> 중복된 행도 다 출력
-INTERSECT: 교집합
-EXCEPT: 차집합
INSERT
-테이블에 데이터를 삽입합니다.
INSERT INTO table_name(attribute_name, attribute_name2...) VALUES(data1, data2...);
-데이터 타입에 따라서 문자 타입은 quote(' | ")를 붙여야 합니다.
UPDATE
-데이터를 갱신합니다.
UPDATE table SET attribute_name = data WHERE condition;
DELETE
-테이블에서 데이터를 삭제합니다.
DELETE FROM table_name [WHERE condition];
4.DCL
GRANT & REVOKE
-권한을 부여 & 회수할 때 사용합니다.
GRANT privileges ON db.table TO 'user'@'host';
REVOKE privileges ON db.table FROM 'user'@'host';
-db.*는 해당하는 db 내 모든 테이블에 권한을 부여, 회수가 가능합니다.
COMMIT & ROLLBACK & SAVEPOINT
-COMMIT: 쉽게 말해서 저장 -> 되돌리기 불가
-ROLLBACK: 되돌리기, COMMIT하지 않으면 특정 상태로 회귀 "ROLLBACK TO point;"
-SAVEPOINT: 되돌릴 위치를 저장하며 "SAVEPOINT name;"
5.Mysql Account
-Mysql을 사용할 계정과 root 계정을 분리하지 않으면, 공격을 당했을 때 다른 DB까지 공격을 받을 수 있기 때문에 새로운 계정을 만들어서 관리합니다.
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
GRANT query PRIVILEGES ON db.table TO 'username'@'host';
이후에 아래와 같이 mysql에 로그인할 수 있습니다.
mysql -u username -p
자료 출처
'project > APM Web Server' 카테고리의 다른 글
APM 환경 구성 (0) | 2024.04.29 |
---|