MyWebSQL

MyWebSQL 은 PHP기반으로 제작된 웹 데이터베이스 관리 서비스이다. 생각보다 유용하고 잘 만들어져 SQL 복습하는 기념으로 테이블 생성 및 관리하는 방법을 기록할 생각이다.


CREATE

CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    column3 datatype,
    ...
);
CREATE TABLE 테이블이름 (
    열의이름 변수형
);


사용될 수 있는 변수형

  • 문자형
CHAR(size)
MEDIUMTEXT
LONGTEXT

MEDIUMTEXT의 경우는 1600만 글자, LONGTEXT는 42억 글자까지 기록할 수 있다. 텍스트 서버를 운용하는 경우 이용하면 유용할 듯 하다. 자세한 내용은 https://www.w3schools.com/sql/sql_datatypes.asp

  • 정수형
TINYINT
SMALLINT
MEDIUMINT
INT

TINYINT의 범위는 +-120안밖이므로 큰 숫자가 아닌경우 활용하면 좋다.

  • 날자/시간
DATE()
DATETIME()
TIME()

유저의 마지막 접속일, 가입일 같은거 기록해 놓으면 좋을 듯 하다.


데이터베이스 생성

상단의 데이터 베이스 탭에서 '새로 만들기'를 실시한 후 데이터 베이스 이름을 결정하고 '만듭니다' 버튼을 누르면 된다.


테이블 생성

여기서는 먼저 유저의 번호와 유저의 이름, 유저의 비밀번호, 유저의 메일을 저장하는 USERINFO라는 테이블을 생성해 보도록 할 것이다.

CREATE TABLE USERINFO (
    UserNum int,
    UserName char(20),
    UserPW char(20),
    UserMail char(30)
);

명령어 실행 후 위와같이 테이블이 생성된 것을 확인할 수 있다. 이번엔 테이블에 기본키도 넣고 자동 증가값도 설정해서 테이블을 생성해 보았다.

CREATE TABLE USERINFO (
    UserNum int NOT NULL AUTO_INCREMENT,
    UserName char(20) NOT NULL,
    UserPW char(20) NOT NULL,
    UserMail char(30),
    PRIMARY KEY(UserNum)
);
  • NOT NULL은 빈 값이 들어가면 안된다는 의미,
  • AUTO_INCREMENT는 알아서 증가하는 값이라는 의미,
  • PRIMARY KEY는 각각을 구분할 수 있는 기본적인 키이다.
  • UserNum은 생성된 순서대로 발급될 예정이므로 기본키이며 빈값이 들어가면 안되며, 알아서 증가한다.

생성된 테이블에 위와같이 UserNum 속성에 열쇠모양이 붙은 것을 확인할 수 있다.


INSERT

INSERT문을 사용하는 방법은 기초적으로 열을 지정해서 넣는 방법과 열을 미지정해서 넣는 방법이있다.

  • 열지정
INSERT INTO table_name(column2,column3,column4...)
VALUES (value1,value2,value3...)

열지정을 하는 경우에는 지정하지 않는 열에 AUTO_INCREMENT와 같은 속성이 붙어 있는 경우에 주로 사용하게 되었다.

  • 열 미지정
INSERT INTO table_name
VALUES (value1,value2,value3...)

열을 미지정 하는 경우에는 열의 이름을 입력할 필요가 없어서 매우 단순해 보인다.


실습

두가지 방법으로 직접 레코드를 삽입해 보도록 하겠다. 사용되는 테이블은 이전 글에서 생성했던 것으로 이용할 예정이다.

NSERT INTO USERINFO
VALUES (1000,"baere","1234","b******@naver.com")

먼저 baere라는 아이디를 가진 유저를 삽입하고 최초의 유저인 만큼 열을 미지정 하고 모든 값을 삽입했다.

유저의 정보가 정상적으로 들어갔다.

INSERT INTO USERINFO(UserName,UserPW,UserMail)
VALUES ("baere2","1234","b******@naver.com")

UserNum의 경우에는 AUTO_INCREMENT 옵션이 적용되어 있기 때문에 값을 넣지 않아도 알아서 증가한다. 되려 중복될 문제를 야기하지 않아서 열을 지정해서 넣는 방법을 사용하는게 좋을 것 같다.

위와 같이 UserNum에 1001이 들어간 baere2가 생성되었다.


DELETE

DELETE 구문은 하나의 레코드만 삭제하는 구문이다. 기본적인 형태는 아래와 같다.

DELETE
FROM table_name
WHERE column1=value1

FROM에서 테이블을 선택하고 삭제할 레코드의 특징을 WHERE에서 설정해서 없애는 것이다. 만약 이름이 "baere"인 유저의 레코드를 지워본다고 하면 아래와 같이 SQL을 작성할 수 있다.

DELETE
FROM USERINFO
WHERE UserName="baere"

위 처럼 정상적으로 'baere'라는 이름을 가진 유저가 삭제되었다.


TRUNCATE

TURNCATE는 DROP과 DELETE의 사이의 기능을 수행한다. DELETE가 하나의 레코드를 삭제한다면, DROP은 하나의 테이블을 삭제하고 TURNCATE는 테이블 사이의 모든 레코드는 지우지만 테이블을 지우지는 않는다. 기초적인 사용법은 아래와 같다.

TRUNCATE TABLE tabel_name;

아까 작성한 예시 테이블에 TRUNCATE를 사용한다면 위처럼 사용한다.

TRUNCATE TABLE USERINFO;

위 처럼 테이블의 모든 레코드는 삭제되었으나 테이블은 삭제되지 않은것을 확인할 수 있다.


DROP

이번엔 테이블을 삭제하는 명령어인 DROP이다. 더 설명할 것도 없이 그냥 테이블이 삭제된다. 기본적인 사용방법은 아래와 같다.

DROP TABLE tabel_name;

예시 테이블을 삭제한다고 가정하면 위와같이 작성된다. 좌측에 보면 Tables에서 USERINFO가 완전히 사라진 것을 확인할 수 있다.