본문 바로가기

WEB/SQL

[SQL INJECTION] SQL 기본 문법 정리 Ⅱ

이 포스트는 인프런의 성공적인 SQL 인젝션 공격을 위한, SQL 기본 문법 을 보고 작성하였습니다!

 

1. CREATE 구문

(1) 데이터베이스 생성:

 

① 형식

CREATE DATABASE [DB_NAME];

② 예시

CREATE DATABASE test_db;

(2) 테이블 생성:

 

① 형식

CREATE TABLE [NAME] ([COLUMN_NAME][DATA_TYPE]); 

∨ DATA_TYPE: 자료형 EX)숫자(int), 문자(char), 날짜(data)

 

② 예시

CREATE TABLE test_db (name char(20),age int);

 

 

2. DROP 구문

(1) 데이터베이스 / 테이블 삭제

 

①형식

DROP [DATABASE/TABLE][NAME];

②예시

DROP TABLE test_tb;

 

3. INSERT 구문

(1) 데이터 삽입: 

①형식

INSERT INTO [TABLE_NAME][COLUMN1].... VALUES ([DATA1]...);

②예시

INSERT INTO test_tb(name, age) VALUES ('KIM',21);

주의할 점

1) COLUMN 이 없으면 VALUE가 순차적으로 나와야한다.

 COLUMN 명이 있으면 괜찮다!

2) NULL 값이 들어들어간다면 명시해야한다. 

 

4. SELECT 구문

- 데이터 조회

①형식

SELECT [COLUMN1] FROM [TABLE] WHERE [CONDITION];

②예시

SELECT name, age FROM test_tb(where id='ad~');

∨condition 은 불필요한건 출력안하게 조건을 거는 것.

 

5. UPDATE 구문

- 데이터 수정

①형식

UPDATE [TABLE] SET [COLUMN1]=[DATA1] WHERE [CONDITION];

②예시

UPDATE test_tb SET age=19 WHERE name="kim";

※ WHERE 절을 사용

age 부분을 전부 수정하는 것이 아니기 때문에 특정 name을 지칭 해야한다.

★from 을 사용하지 않는다. 

 

6. DELETE 구문 

- 데이터 삭제

①형식

DELETE FROM [TABLE] WHERE [CONDITION];

②예시

DELETE FROM test_tb WHERE name="kim";

 

0. 기타 자주 쓰는 명령어

①show databases/tables;

데이터베이스/테이블 출력

 

② select databases();

현재 데이터베이스

 

③use DB 이름;

데이터베이스 선택, 이동

 

④desc(ribe) member(테이블 명칭);

테이블 구조를 보여줌

 

∨ 요소에 문자가 들어가면 '(싱글쿼터)를 넣어줘야함.

select 절에서 칼럼을 선택하고 where에서 레코드를 선택한다.


<실습>

1. MYSQL 로그인

mysql -u root -p

이런 식으로 로그인 창이 나온다. 초기비밀번호는 설정되어있지 않으므로 엔터를 눌러본다. 

 

로그인이 되었다. 

∨ 비밀번호 변경

변경을 하고 적용까지 해야한다. 

★변경 사항을 적용하는 명령어 : flush privileges;

update mysql.user set password=password('변경하고 싶은 비밀번호') where user='root';

 

2. DataBases 만들기

 

현재 있는 DataBase이다.

여기에 새로운 DB를 추가할 것이다. example 이라는 새로운 database를 추가할것이다. 

<코드>

CREATE DATABASE example;

 

3. table 생성

① example 데이터베이스로 이동한다. 

명령어: use

 

② member 라는 새로운 table을 만든다.

명령어: create

 

<코드>

create table member(seq int, name char(20), email char(50));

③ table을 확인한다.

④ table안에 구조를 확인한다.

명령어: describe 

<코드>

describe member;

4. insert를 통해 레코드 넣기

(1) 처음에 레코드 넣기

<코드>

insert into member(seq, name, email) values(2,'crehacktive','crehactive@crehacktive.co.kr');

(2) 나중에 레코드 추가하기

<코드>

insert into member values(6,'test','test@crehacktive.co.kr');

 

현재 레코드를 조회하고 싶다면 select명령어를 사용하면 된다.

<코드>

select * from 테이블명;

5. select

▶레코드 조회 역할을 함

 

①형식

select (컬럼명) from 테이블명;

컬럼명에 *을 넣으면 모든 레코드 조회하는 것이다.

 

칼럼명에 특정 칼럼을 넣으면 그 칼럼만 조회한다. 

 

② 특정칼럼 조회

③ Where 명령어를 이용해서 분류 조건을 하나 더 추가한다.

 

6. UPDATE를 이용

▶레코드 내용을 수정하고 싶을 경우에 사용

 

<코드>

update member set name='test1' where seq=6( 또는 name='test');

ex)

 

 

7. delete 를 이용

▶레코드를 삭제하기