프롬포트로 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 [조건];
끝!
'Back-End Frameworks > Node.js' 카테고리의 다른 글
15)Nodejs_MySQL(4)_Sequelize로 CRUD, 관계 쿼리 (0) | 2023.07.21 |
---|---|
14)Nodejs_MySQL(3)_Sequelize, models (0) | 2023.07.21 |
12)Nodejs_ MySQL(1)_SQL언어를 쓰는 관계형 DBMS (0) | 2023.07.19 |
11)Nodejs_ Express Web Server_(2) Router, req res ,Template Engine(일단 보류. .ㅎㅎ) (0) | 2023.07.18 |
10)Nodejs_ Express Web Server_(1) 시작, 미들웨어(morgan, static, body-parser, cookie-parser, express-session, multer) (0) | 2023.07.16 |