2020/05/31
Structured Query Language 의 약자. RDBMS와 소통하는 프로그래밍 언어이다.
DB를 상대로 데이터를 조회, 입력, 수정, 삭제하기 위한 모든 것은 질의에 속한다.
SQL은 데이터를 상대하는 언어이다. 데이터들은 테이블에 저장되어 있고, 이러한 테이블들은 목적과 성격에 맞는 데이터를 모아 놓은 데이터 저장소이다. SQL은 특정 조건에 부합한다면 이를 충족하는 데이터 전체를 읽거나 삭제하거나 수정, 입력하는 기능을 수행한다. 즉 데이터를 한 건씩 처리하는 것이 아니라, 조건에 맞는 데이터 전체를 한꺼번에 처리하기 때문에 집합적 언어라고 한다.
Data Definition Language, 데이터 정의어
RDBMS에는 테이블 외에도 뷰, 인덱스, 시퀀스 등 여러 데이터베이스 객체가 있다. 이러한 객체들을 생성, 삭제, 수정하는데 사용하는 SQL.
Data Manipulation Language, 데이터 조작어
가장 많이 사용되는 SQL문
TRUNCATE TABLE은 DDL로 테이블에 있는 모든 데이터를 삭제하고, 그걸로 끝이 난다. 실수로 지우더라도 되돌릴 수 없다. 반면, DELETE는 조건에 맞는 데이터를 선별하여 삭제하므로, 잘못 삭제되었다고 해도 삭제 이전 시점으로 복원이 가능하다. 따라서 데이터를 삭제할 때는 DELETE문을 사용한다.
Transaction Control Language, 트랜잭션 제어어
Data Control Language, 데이터 제어어
DDL의 CREATE문을 사용해 테이블을 생성할 수 있다
CREATE TABLE table_name(
column_name1 datatype [NOT] NULL,
column_name2 datatype [NOT] NULL,
...
PRIMARY KEY ( column_list)
);
대표적인 데이터타입은
문자형
, 숫자형
, 날짜형
이다.
n은 숫자를 의미, 예를 들어 VARCHAR2(10)이라면 VARCHAR2형 문자를 10byte 사용하겠다는 뜻.
CHAR와 VARCHAR2의 차이는, 한 글자만 넣게 되더라도, CHAR는 1byte가 아닌 10byte를 차지하는 반면, VARCHAR2는 1byte만 차지한다. 즉, VARCHAR2는 실제 데이터에 따라 크기가 정해지는 반면, CHAR는 테이블 생성 시 설정한 크기로 고정된다.
따라서, 특별한 경우를 제외하고는 VARCHAR2로 만든다.
NUMBER형으로 데이터 칼럼을 만들면 웬만한 숫자는 모두 저장할 수 있다고 한다.
위에서 보이는 [ ]대괄호는 생략이 가능하다는 표시, 크기를 지정하지 않으면 38자리 숫자까지 입력이 가능하다. 38자리라는 것은 유효숫자 개수가 38이라는 것을 의미
s역시 생략이 가능하고, 기본값은 0. s는 소수점 이하 유효숫자 자리 수를 지정해준다. 고정 소수점 숫자를 지정할 때 사용하고, p만 명시한다면, 부동 소수점 숫자를 사용하는 것
데이터가 없음을 의미.
해당 칼럼에 값이 들어가지 않을 수 있다고 정의하기 위함. NOT NULL이라면 반드시 해당 칼럼에는 값이 들어가야한다
테이블당 1개만 만들 수 있다. 칼럼 1개로 만들 수 있고, 여러 칼럼을 결합하여 만들 수도 있다.
기본 키를 구성하는 칼럼이 1개뿐인 경우에는 칼럼 정의 시 PRIMARY KEY 구문을 넣어 생성할 수 있다.
Column_name1 VARCHAR(10) NOT NULL PRIMARY KEY,
...
기본 키 칼럼에는 반드시 NOT NULL을 명시해야한다. 기본 키에 속하는 칼럼이 여러 개인 경우, 모든 칼럼을 정의한 뒤 마지막에 다음과 같이 명시한다.
...
PRIMARY KEY ( column1, column2, ...)
// 경로 이동
cd /usr/local/mysql/bin/
// mysql 시작하기
./mysql -uroot -p
to be continue