MySQL문법
InnoDB란
MySQL은 흔히 사용하는 RDBMS입니다. MySQL에도 다양한 데이터베이스 엔진을 사용할 수 있습니다
그중에서도 InnoDB를 기본적으로 사용합니다.
InnoDB란 트랜젝션을 지원하는 데이터베이스 엔진입니다.
Transaction이란 DB의 상태를 변화시키는 하나의 행위의 단위입니다.
여기서 DB의 상태는 RollBack과 Commit이 있습니다.
RollBack은 트랜젝션이 정상적으로 작동하지 않았을 때 이전상태로 돌아가는 것이고
Commit은 트랜젝션이 정상적으로 작동했을 때 영구적으로 저장하는 것입니다.
트랜젝션을 지원한다는 것은 쉽게 말해 1번에 1개씩 변화시킨다는 것입니다.즉 Query의 결고는 Rollback or Commit
2개중 하나입니다. 에를 들어 Query가 데이터1번을 수정하고 데이터5번을 삭제하고 데이터 3번을 삭제하는 것이라고 했을 때 3개가 모두 반영되거나 반영되지 않는 경우만 있다는 것입니다. 데이터5번만 삭제되는 경우는 없는 것입니다.
위의 효과를 데이터의 무결성 보장이라고 합니다.
SQL의 문법
이제 SQL의 문법중 MySQL의 문법을 알아보겠습니다.
기본 명령어 | SHOW DATABASE - 모든 DataBse 출력 CREATE TABLE (table명) - Table 생성 CREATE DATABASE (db명) - DB 생성 USE (db명) - DB 선택 DROP DATABASE (db명) - DB삭제 SELECT DATABSE (db명) -선택한 DB 출력 |
데이터 추가 | INSERT INTO (Table) (Attribute) VALUES(......),(.........) |
데이터 삭제 | DELETE FROM (Table명) WHERE (조건식) |
데이터 변경 | UPDATE ( Table ) SET (변경사항) WHERE (조건식) |
데이터 검색 | SELECT (Attribute) FROM (Table명) WHERE (조건식) |
1. 데이터 추가
INSERT INTO (Table) (Attribute)
VALUES(......),(.........)
NSERT INTO (Table) (Attribute) VALUES(......),(.........) |
Attribute부분에 작성한 Attribute의 순서대로 VALUES에 작성하면 작성한 Attribute만 추가(나머지는 NULL or default값) |
NSERT INTO (Table) VALUES(......),(.........) |
Table의 모든 Attribute의 순서에 맞춰 VALUES에 모두 작성 |
NSERT INTO (Table) (Attribute) VALUES(......) |
Data(TUPLE)을 1개만 생성 |
Ex)
INSERT INTO Player (name,age)
VALUES(john, 18),(jerry, 28)
Player 테이블에 name=john, age=18 & name=jerry,age=28인 2개의 데이터 생성((나머지 속성값은 Null)
2. 데이터 삭제
DELETE FROM (Table명) WHERE (조건식) = 조건식에 맞는 Data를 삭제
WHERE) 조건식 연산자
= | 조건식에 맞는 Data |
!= or <> | 조건식에 맞는 경우를 제외한 나머지 Data |
and | 조건이 2개 이상일 경우 조건을 모두 만족하는 Data |
or | 조건이 2개이상일 경우 조건을 하나라도 만족하는 Data |
Ex)
DELETE FROM Player WHERE age<20 and name != john
=> Player table 중 name 값이 john을 제외한 age가 20 미만인 Data 삭제
3. 데이터 변경
UPDATE ( Table ) SET (변경사항) WHERE (조건식)
조건식에 맞는 Data에만 변경사항을 적용
4. 데이터 검색
SELECT (Attribute) FROM (Table명) WHERE (조건식)
Attribute | 기능 |
* | 조건식에 맞는 Data의 모든 Attribute출력 |
Attribute1개 | 조건식에 맞는 Data의 작성한 Attribute만 출력 |
Attribute 2개 이상 | 조건식에 맞는 Data의 작성한 Attribute들만을 출력 |
- Table부분에 Table이 2개이상 올 수 있습니다
2개이상의 table이 있을 때는 Attribute값을 표기할 때 Table명도 함께 적용해야 합니다
Ex) Team,Player table
SELECT Player.name FROM Team,Player WHERE Team.id = 20 and Team.id = Player.team_id
Player의 team_id가 20인 Player의 name 값들만 출력
이때 Player의 team_id가 Foreign Key에 해당합니다. Foreign key를 쿼리문에 직접 넣는 것은 오류가 발생할 수 있습니다. 이유는 Table을 생성할 때 relation option에서 Table의 PK값이 바로 반영되지 않게 했다면 조회되지 않기 때문입니다
AS
조회하는 table이 많아진다면 모든 Attribute에 Table명을 써야합니다.
이때 AS기능을 활용할 수 있습니다. Player AS P 라고 한다면 P.name으로 작성할 수 있습니다.
DISTINCT
만일 출력한 결과에 중복된 내용이 있는 경우 SELECT DISTINCT Attribute를 사용해 출력 결과에 중복 값을 없앨 수 있습니다.