본문 바로가기
Back-End Frameworks/Node.js

13)Nodejs_MySQL(2)_DB, 테이블 생성, CRUD

by Downy_J 2023. 7. 20.
728x90
반응형
SMALL

프롬포트로 DB를 생성 할 수도 있고

워크벤치를 써서 생성 할 수도 있다

 

프롬포트 쓰지 말고 제공한 워크벤치만 쓰자..

세상 쉽게 살수있는 길이 있고 쓰라고 준건데

머던다고 어렵게 살겠어...ㅋ

저거 4번째 드럼통모양 누르면
이런 탭 뜨는데
name : nodejs
Charset/ Collation : utf8 / utf8_general_ci 로 해준뒤
하단의 [ Apply ] 클릭
[ Apply ] 클릭

사실 저기 1번에 써진걸 SQL 접속 해서 똑같이 쓰면
생성 된다.
[ Finish ] 클릭
그럼 좌측 Schemas에 방금만든
nodejs라는 DB가 생성됬음

Table 생성

DataBase를 생성 했으니

이제 Table을 생성 해야 한다

 

테이블이란 데이터가 들어갈 틀이다

   

[[ user 테이블을 뜯어보자 ]]

  • CREATE TABLE [데이터베이스명.테이블명] : 테이블 생성 명령어
  • id(고유번호 - PK지정함), name(이름), age(나이), married(결혼), comment(자기소개), created_at(로우 생성일)
  • INT : 정수. 소수까지 쓰고싶을 시 FLOAT 나 DOUBLE 를 써라
  • VARCHAR(00) : 글자수 같은거. CHAR도 있으나 이건 고정 길이고, 얘는 가변길이임. CHAR(10) 이러면 10글자까지만 나오고 다음 안나오나, VARCHAR(10)을쓰면 10글자 마다 줄을 바꿔버림.
  • TEXT : 긴 문자열을 저장 할 때씀. VARCHAR과 비슷 하나 TEXT가 좀 더 큰 개념으로 씀. 한장짜리 쪽지와 한권짜리 책 정도 차이라 보믄됨.
  • TINYINT : -128 ~ 127 까지의 정수를 저장. 1과 0만 저장 하련다면 BOOLEAN 과 같은 역할도 수행함
  • DATETIME : 날짜 시간 정보가 담김.

[ Option ]

  • NULL \ NOT NULL : 빈칸 공백을 허용할래 말래. comment 제외 모두 NOT NULL인 이유 나머지 컬럼들은 row 생성 때 데이터를 입력해야 하기 때문
  • AUTO_INCREMENT : 숫자 자동으로 올리겠음. 이거 안하면 등록 할때마다 숫자가 안올라가짐 그냥 전부 1번된다.
  • UNSIGNED : 숫자 자료형에만 적용되는 옵션. 음수로 가지 않고 0 ~ 쭉 간다. FLOAT와 DOUBLE 는 UN 적용 불가
  • ZEROFILL : 숫자 자릿수가 고정일때 씀. INT가 아닌 INT(00) 이런식으로 써졌다면 이때 저거 설정하면 빈곳에 0을 넣는다. INT(4) ZEROFILL 인데 1을 넣었다? 0001 이렇게 써짐.
  • DEFAULT now() : DB저장시 해당 컬럼의 값이 없으면 MySQL 기본값을 넣는다. now()는 현재 시각을 말함. CURRENT_TIMESTAMP를 넣어도 같으며 유저정보를 넣으면 created_at 컬럼에 뭐 넣는 순간 현재 시각이 자동으로 드감
  • PRIMARY KEY : 기본 키. 로우를 대표함. 로우구별 식별자.
  • UNIQUE INDEX : 해당 값이 고유해야 하는지에 대한 옵션. 인덱스명을 name_UNIQUE로 name를 오름차순(ASC)로 기억 하겠단 말.( 내림차순은 DESC). PK나 UNIQUE INDEX 경우 별도로 컬럼을 관리하므로 조회 속도가 빠름

[ 테이블 자체 설정 ]

  • COMMENT : 테이블의 대한 보충 설명 (필수 사항은 아님)
  • DEFAULT CHARACTER SET : 이걸 utf8로 해야 한글 입력 가능함.
  • ENGINE : MyISAM과 InnoDB가 가장 많이 쓰임. (이게 뭔지 좀 찾아봐야 할듯.. 왜 필요한지 모름) 
  • DESC 테이블명 : 만들어진 데이블 확인하는 명령

자 그럼. . 해보자..

............?

아..... 뭐 어디 오타가 나서 안만들어졌구나..?

아... ㅎㅎㅎㅎ 예전 회사에서 MSSQL을 써본적 있다.

그땐 불러오는게 dbo.테이블명 이였던거 같은데...

혹시나 하구 DB명.테이블명 하니깐 나온다

 

그리고 요거 한방이면 테이블을 제거 할 수 있다

일일이 오타날까봐 가슴 졸이며 만들던 테이블을

이렇게 간단히 만들수 있다

[ Apply ] 클릭

그럼 이게 맞냐 뭔 창이 하나 뜬다

한번. . 비교 해보자 ㅋ

프롬포트 워크벤치

쿼리 입력 창에 저렇게 쓰고 위에 번개표시 누르면

아래 그리드가 나온다.. 성공!

테이블 삭제도 뭐 코드를 쓸 필요도 없이

좌클릭후

 

Drop Table 클릭하면 지워진

 

 

 

 

 

 

 

 

 


유저 댓글 테이블도 만들어 봅세~

아마 프롬포트 말고

워크벤치에 작성 후 출력하면..

 성공적으로 comments(유저 댓글) 테이들이 완성이 됬다!

 

 

 

 

 

 

 

 

[[ comments 테이블을 뜯어보자 ]]

  • id : 고유번호
  • commenter : 댓글 작성한 사용자 id. 다른 테이블의 기본키(PK)를 저장하는 컬럼을 외래키(FK)라 부름. CONSTRAINT [제약조건명] FOREIGN KEY [컬럼명] REFFERENCES [ 참고하는 컬럼명] 으로 FK를 지정 해줄수 있음.
  • comment : 댓글내용. user테이블의 id 컬럼과 연결 했다. 그리고 다른 테이블의 기본키 이므로 index도 걸었음.
  • created_at : row 생성일
  • CASADE : ON UPDATE, ON DELETE 두 컬럼 모두 설정해줬음. 사용자 정보가 수정 또는 삭제 시 연관 댓글과 정보도 같이 움직여야 하니깐. (이걸 안하면 데이터 불일치 현상이 생긴다.)
왜 안돼는지 아는사람.....?

SHOW TABLES;를 입력하면 방금까지 생성한

테이블들이 잘 만들어 졌나 확인이 가능하다

(쟤는 되는데 얘는 왜 안됨. .?)


CRUD

Create, Read, Update, Delete

이거 만드는건 정말 기본이다

 

전에 다녔던 첫 직장 생각 나는구만...시버럴거 

 


Create(생성)

users에 사람좀 담아보자

와우~ 쉽네!

 

사람 댓글도 함 담아보자

와 쉽네!

INSERT INTO db명.테이블명 (컬럼1, 컬럼2, 컬럼3, ...) VALUES (값1, 값2, 값3, ...);

끝!


Read(조회)

DB안의 데이터를 조회 하는것. 사실 방금 조회도 했음

SELECT * FROM db명.테이블명;

 



AND 는 여러 조건을 묶어 해당하는걸 가져온다.
OR 를 쓰면 둘중 어느 한개라도 만족하는걸 가져온다
ORDER BY 는 정렬을 하겠다는 말이다.
여기서 DESC(내림차순)과 ASC(올림차순)를 고를 수
있다
조회 할 로우의 갯수대로 보고 싶다면 LIMIT [숫자]를 쓴다. 
row 갯수를 설정해 몇개 묶음씩 건너 뛸건지도 설정이 가능함

특정 값만 조회 하는것도 됨!

SELECT 컬럼1, 컬럼2 FROM [테이블명];

SELECT 컬럼1, 컬럼2 FROM [테이블명] WHERE 컬럼1 > 1 AND 컬럼2;

SELECT 컬럼1, 컬럼2 FROM [테이블명] WHERE 컬럼1 > 1 OR 컬럼2;

SELECT 컬럼1, 컬럼2 FROM [테이블명] ORDER BY 컬럼1 DESC;

SELECT 컬럼1, 컬럼2 FROM [테이블명] ORDER BY 컬럼1 DESC LIMIT [숫자];

SELECT 컬럼1, 컬럼2 FROM [테이블명] ORDER BY 컬럼1 DESC LIMIT [숫자] OFFSET [건너뛸숫자];

끝!


Update(수정)

입력된 데이터를 바꿀때 쓴다.

UPDATA [테이블명] SET [바꿀컬럼명 = 바꿀 값] WHERE [조건];

바꿀내용이 여러개라면

AND 쓰면됨.

끝!


Delete(삭제)

DB안의 데이터를 삭제 할때 쓴다


DELETE FROM [테이블명] WHERE [조건];

끝!

728x90