설명
데이터베이스에서 정보를 관리하기 위해 사용되는 특수한 언어다
DML, DDL, DCL 이 있다.
DML (Data Manipulation Language)
- 데이터 조작어 - SELECT, UPDATE, INSERT, DELETE
DDL (Data Definition Language)
- 데이터 정의어 - CREATE, ALTER, DROP
DCL (Data Control Language)
- 데이터 제어어 - GRNAT, REVOKE
Key
키(Key)"는 특정한 레코드(행)를 식별하거나 정렬하기 위해 사용되는 열(칼럼)이다.
키는 데이터를 구분하고 찾는 데 사용된다.
기본 키/PK (Primary Key)
- 테이블의 특정 열에 대해 고유한 값만 사용하도록 제한을 함 # ex. 주민등록번호
- NULL 데이터를 사용할 수 없음
외래 키/FK (Foreign Key)
- 다른 테이블의 기본키 값이 있는 열간의 관계를 만들기 위해 사용
- 부모 테이블에 존재하는 값만을 사용할 수 있도록 제한을 함
제약 조건
NOT NULL
- 열에 NULL 값을 사용할 수 없도록 제한
- PK 제약 조건에는 NOT NULL 제약도 포함되어 있음
UNIQUE
- 열에 고유한 값만을 사용하도록 제한
- 단, NULL 은 중복 사용 가능
- PK 제약 조건에는 UNIQUE 제약도 포함되어 있음
CHECK
- 열에 지정된 값 및 값의 범위만 사용하도록 제한
명령어
테이블 명령어
SELECT user, host FROM mysql.user;
# 생성된 유저 목록 확인
CREATE TABLE <테이블명>(
<열 이름> <데이터 타입> [<제약조건>]
<열 이름> <데이터 타입> [<제약조건>]
<열 이름> <데이터 타입> [<제약조건>]
......
);
# 테이블 생성
DROP TABLE <테이블명>;
# 테이블 삭제
ALTER TABLE <테이블명> ADD <열 이름> <데이터 타입> [<제약조건>]
DROP <열 이름>
MODIFY <열 이름> <데이터 타입>
RENAME COLUM <이전 열이름> TO <새로운 열 이름>
RENAME TO <새로운 테이블 이름>
# 테이블 변경
# 테이블에 데이터가 존재할 경우, 위 명령어를 사용해 스키마 정보를 수정하는 것은 권장X
INSERT INTO 테이블명 (열1, 열2, ...) VALUES (값1, 값2, ...);
# 데이터 추가
UPDATE <테이블명> SET <열이름> = <값>;
# where 이 없으면 전체 행 데이터 수정
UPDATE <테이블명> SET <열이름> = <값> WHERE <열 이름> = <값>;
# 데이터 수정 ex) UPDATE student SET 나이 = 23 WHERE 이름 = '홍길동';
DELETE FROM <테이블 명>;
# DROP 은 테이블 자체를 삭제
DELETE FROM <테이블 명> WHERE <열 이름> = <값>;
# DELETE는 저장된 데이터를 삭제
# SELECT 결과를 확인 후 삭제 및 수정 할것
함수
SELECT CHAR_LENGTH('안녕하세요');
# 글자 수 세기
SELECT CONCAT('a','b');
# 텍스트 합치기
SELECT concat(YEAR,'년') FROM country_stats LIMIT 5;
# 1959년 처럼 뒤에 말 붙일 수 있음
SELECT LOWER('ABC');
# 소문자로 출력
SELECT UPPER('abcd');
# 대문자로 출력
SELECT REPLACE('안녕하세요','하세요','?'); // 결과 : 안녕?
# 문자열에서 문자를 찾아 대체
SELECT SUBSTRING('안녕하세요',1,2), SUBSTRING('안녕하세요',3,3);// 안녕, 하세요
# 텍스트의 n번째에서 m번까지
-- 날짜 관련 함수
SELECT NOW();
# 현재 날짜 및 시간을 반환 하는 함수
SELECT STR_TO_DATE('2022-01-16', '%Y-%m-%d');
# 문자열로 만들어진 날짜 및 시간 형식을 날짜 타입으로 변환
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
# 날짜 타입을 문자열로 변환
SELECT TIMEDIFF('2022-01-16 12:00:00', '2022-01-15 10:30:00');
# 두 날짜 및 시간의 차이를 구하는 함수
SELECT YEAR(NOW()), MONTH(NOW()), DAY(NOW());
# 날짜 타입에서 원하는 년, 월, 일 을 추출하는 함수
SELECT ADDDATE(NOW(),7);
# 현재에서 일주일 후
SELECT ADDDATE(NOW(),-7);
# 현재에서 일주일 전
SELECT ADDDATE(NOW(), INTERVAL 3 MONTH);
# 현재 날짜에서 3개월 후
SELECT ADDDATE(NOW(), INTERVAL -3 MONTH);
# 현재 날짜에서 3개월 전
-- 집계 함수
조회한 결과의 정보가 집계되어 1개의 행 정보로 만들어 짐
행 정보가 공통된 열을 기준으로 묶일 수 있도록 SQL 구문을 작성해야 함
COUNT()
# SELECT COUNT(*) FROM country_stats;
# SELECT COUNT(*) FROM country_stats WHERE country_id = 117;
# SELECT country_id, COUNT(*) FROM country_stats GROUP BY country_id;
# 전체 행 수를 구하기 위해 사용
# 특정 값을 가지는 레코드의 행 수를 구할 때에도 사용
SUM()
# SELECT country_id, SUM(population) FROM country_stats GROUP BY country_id;
MAX()
# SELECT country_id, MAX(gdp) FROM country_stats GROUP BY country_id;
MIN()
# SELECT country_id, MIN(gdp) FROM country_stats GROUP BY country_id;
AVG()
# SELECT country_id, AVG(gdp) FROM country_stats GROUP BY country_id;
# SQL 질의문 실행 순서
# FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY
# from 으로 테이블 을 보고 where절로 추출
# group by 에 의해 그룹화 되어 having 조건으로 추출
# select 로 지정한 테이블을 나오고 order by로 정렬
'DataBase' 카테고리의 다른 글
DataBase 란? (1) | 2024.02.10 |
---|
댓글