SQL이란? / mySQL 사용 순서
▶▶ SQL이란?
– Structured Query Language
– 데이터 엑세스를 위해 Oracle Server와 통신하는 언어.
– 관계형 데이터베이스의 서버와 정보를 주고 받을 때 사용하는 언어.
– 기본적으로 대소문자를 구분하지 않음.
▶ 용어

• 열 (column)
– 속성을 나타냄.
ex ) employe_id, last_name, first_name...
• 행 (row)
– 테이블에 담겨 있는 하나의 데이터의 모든 데이터 값 (레코드 데이터)
ex ) 1명의 사원이 가진 모든 속성이 포함된 데이터.
– 필드에는 한 개의 값들만 보관됨.
ex ) 숫자, 문자, 날짜...
– 하나의 속성(col)에는 단일 데이터타입이 입력됨.
ex ) ID 속성에는 무조건 숫자만, Last name 속성에는 무조건 문자만
▶ PRIMARY KEY & FOREIGN KEY
– 제약조건
1. PRIMARY KEY(기본키, 부모)
– 테이블의 각 행(row)을 고유하게 식별하는 열(column) 또는 열 집합.
– 무조건 값이 있어야 하며 중복 불가능.
– 겹치지 않는 고유 값 .
ex ) 사원번호
2. FOREIGN KEY(외래키, 자식)
– 다른 테이블의 기본 키를 참조(인용)하는 열.
– 그래서 조작이 불가능하며 그대로 써야 함.
– 중복이 가능하나 값이 없다거나 엉뚱한 값이 있을 순 없음.
– 부모에게 물려받은 것만 활용 가능.


▶▶ DB 사용 순서
- SHOW : 현재 가지고 있는 데이터베이스 목록 조회 // mysql> SHOW databases;
- USE : 이제부터 접속할 데이터베이스를 선택함 // mysql> USE hr;
- SHOW : 데이터베이스의 테이블 목록 조회 // mysql> SHOW tables;
- DESCRIBE : 테이블 구조 조회 // mysql> DESCRIBE employees;
- SELECT & FROM : SELECT + 컬럼명 & FROM + 테이블명 // mysql> SELECT employee_id FROM employees;
▶ show databases;
– 현재 가지고 있는 데이터베이스를 보여줌.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| hr | // 내가 설치한 것
| information_schema |
| mysql |
| performance_schema |
| sakila |
| sys |
| world | // 샘플 데이터베이스
+--------------------+
▶ use + db name;
– 사용할 데이터베이스 선택.
mysql> use hr;
Database changed
▶ show tables;
– db는 테이블 단위로 묶어서 보관함.
– hr db가 가진 테이블 목록을 보여줌.
mysql> show tables;
+------------------+
| Tables_in_hr |
+------------------+
| countries |
| departments |
| emp_details_view |
| employees |
| job_history |
| jobs |
| locations |
| regions |
+------------------+
8 rows in set (0.01 sec)
▶ describe + 테이블명;
– desc 테이블명도 가능.
– 테이블 구조조회.
– 컬럼의 목록, 데이터타입, 다른 속성값들을 조회가능.
mysql> DESCRIBE employees;
+----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| employee_id | int unsigned | NO | PRI | NULL | |
| first_name | varchar(20) | YES | | NULL | |
| last_name | varchar(25) | NO | | NULL | |
| email | varchar(25) | NO | | NULL | |
| phone_number | varchar(20) | YES | | NULL | |
| hire_date | date | NO | | NULL | |
| job_id | varchar(10) | NO | MUL | NULL | |
| salary | decimal(8,2) | NO | | NULL | | // decimal(8,2) : 8자리까지 표현할 수 있는데,
| commission_pct | decimal(2,2) | YES | | NULL | | 2자리정도는 소숫점자리로 표현하는 데이터타입
| manager_id | int unsigned | YES | MUL | NULL | |
| department_id | int unsigned | YES | MUL | NULL | |
+----------------+--------------+------+-----+---------+-------+
11 rows in set (0.00 sec)
→ varchar(20) : 가변문자열의 데이터타입, 최대 20byte까지 문자데이터 담을 수 있음.
→ date : 날짜값을 저장하는 데이터타입이며 고정값임.전세계의 날짜는 동일하기 때문.
→ decimal(8,2) : 실수, 8자리숫자(8byte) 받을건데 그 중에서 2자리(2byte)는 소수점 아래 표현에 사용한다는 뜻.