본문 바로가기

웹개발

2022-09-15 국비지원 웹개발 23일차

<강사님>

옛날에 네이버 광고에서 뜬금없이 "있을 때 잘하지."라는 대사가 나왔었어요.

소름 돋는 점은 그 광고가 방영된 시점이 딱 네이버가 다음을 넘어선 시점이었다는 거죠.

아무리 좋은 프로그램이라도 평소에 사용자들의 불만을 잘 케어하지 못했다면,

대체 프로그램이 나왔을 때 한순간에 망할 수 있어요.


비동기식 처리와 await, promise를 사용한 동기식 만들기, MySQL설치, select 기본 등에 대해 배웠다.


1. 비동기식 처리

먼저 처리를 시작한 함수가 끝나고 다음 함수를 처리하고 하는 이런 식의 동기식과는 다르게

멀티 스레드로 여러 개의 함수가 동시에 처리를 시작하고 끝나는 시간은 코드 순서가 아니라 처리 순서에 따라 달라진다.

자바스크립트는 기본이 동기식인데 Worker 기능을 사용해 비동기식 처리를 사용 가능하다.

 

위 코드에서는 코드가 worker1, worker2, worker3의 순서로 쓰였지만

처리는 worker2, worker3, worker1의 순서로 끝난다.

 

2. await, promise를 사용한 동기식 만들기

 

비동기식으로 처리를 할 때 특정 함수들의 처리가 끝나는 시간을 정해줘야 한다면

비동기식 만들기 방법을 사용한다.

 

function a() {

  var promise = new Promise(function(resolve, reject) {

    resolve;

  });

  return promise;

}

 

async function b() {

  var r = await a();

}

 

이 경우 함수 a의 처리가 끝난 다음 함수 b가 끝난다.

resolve는 반환 값을 담은 리턴이고 reject는 에러 났을 때 거부된 이유를 반환한다.

 

3. MySQL 설치

 

(1) 아래 링크로 들어가

Windows (x86, 64-bit), ZIP Archive
이것을 선택해 받아준다.
install은 컴퓨터가 바뀌면 데이터베이스를 사용할 수 없어서 아카이브를 받아 포터블로 만들어 준다.

다운로드 후 압축을 해제하면 폴더가 나오는데 그 폴더를 C드라이브의 루트에 넣는다. (원하는 드라이브에 넣어도 괜찮다.)

https://dev.mysql.com/downloads/mysql/

 

MySQL :: Download MySQL Community Server

Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Server Red Hat Enterprise Linux / Oracle Linux Fedora Linux - Generic Oracle Solaris macOS Source Code Select OS Version: All Windows (x86

dev.mysql.com

 

(2) cmd창을 관리자 권한으로 실행한다.

cd \를 입력해 루트(최상위)로 이동한다.

cd c (또는 폴더를 넣은 드라이브)를 입력한다.

cd my + tab키를 누르면 my로 시작하는 폴더나 파일을 자동으로 찾아준다. 압축을 푼 mysql폴더를 지정한다.

그리고 \bin을 붙여서 mysql폴더의 bin으로 이동한다.

mysqld --initialize-insecure를 입력한다. (암호 없이 설치한다는 명령어.)

여기서 만약 dll 오류가 난다면 인터넷에 해당 dll을 검색해 설치 후 다시 진행하면 설치가 진행된다.

 

(3) 설치가 완료되면 mysqld를 입력한다. (mysql 데몬 실행.)

 

(4) 데몬이 실행되고 있는 cmd창은 최소화 시키고 새로운 cmd창을 관리자 권한으로 실행한다.

그리고 다시 cd명령어를 사용해 bin폴더로 이동하고, mysql -u root를 입력한다. (root 슈퍼계정 로그인.)

 

(5) alter user root@localhost identified by '비밀번호';를 입력해 root계정에 비밀번호를 추가한다.

exit으로 mysql을 로그아웃하고, mysql -u root -p를 입력한다.

그럼 비밀번호를 입력하라는 안내가 나오고 설정한 비밀번호를 입력하면 mysql에 로그인된다.

 

(6) mysql에 로그인하고 show databases;를 입력하면 사용가능한 데이터베이스 목록을 보여준다.

use 데이터베이스이름;을 입력해서 사용할 데이터베이스를 설정 가능하다.

데이터베이스를 설정하면 show tables를 입력해 해당 데이터베이스에 있는 table을 볼 수 있다.

 

(7) mysql을 종료할 떄는 exit으로 로그아웃하고 cmd창을 종료하고, 데몬이 실행되고 있는 cmd창은 Ctrl+c로 데몬을 종료하고 cmd창을 종료한다.

 

4. select 기본

 

우선 원활한 학습을 위해 sample 파일을 학원 카페에서 다운받는다.

sample 파일을 bin 폴더에 넣고, mysql -u 사용자명 -p < sample파일.확장자명 입력.

해당 사용자명으로 mysql 로그인 후 use classicmodels(데이터베이스명) 입력.

show tables로 추가된 테이블들을 확인한다.

 

CREATE USER 사용자명@localhost identified by '비밀번호';로 사용자 생성가능.

root는 보안상 아예 삭제하고 새로운 사용자 만들어서 쓰는 경우가 많다.

 

DROP USER 사용자명@localhost;로 사용자 삭제가능. 생성과 삭제는 슈퍼계정만 가능하다.

 

GRANT ALL PRIVILEGES ON *.* TO 사용자명@localhost;로 권한 전부 부여 가능.

REVOKE ALL ON *.* from 사용자명@localhost;로 권한 전부 제거 가능.

flush privileges;로 즉시 적용가능.

 

desc 테이블명;으로 테이블의 구조 확인가능.

varchar: 바리어블 캐릭터로 최대 글자수를 의미한다.

Null이 YES면 빈값 가능. NO면 빈값 불가능.

Key가 PRI면 유일하다는 뜻. MUL이면 멀티플로 다른것과 조합되어 사용가능하다는 뜻.

 

select는 CRUD에서 Read다.

ex. select * from customers;  ->  customers의 모든 컬럼을 선택해서 보여준다.

*은 모든 컬럼을 의미하며 회사에서는 보안상 사용을 지양한다.

보통 *대신 컬럼 이름을 입력하는데 컬럼이름은 desc 테이블명으로 알 수 있다.

 

ex. officeCode가 1번인 직원들의 사번과 이름(lastName), 이메일을 조회하라.

where은 조건을 나타낸다.

5. 기타

 

(1) 자주 사용하는 cmd 명령어: 

  (a) cd 경로명\하위디렉토리명\하위디렉토리명\...  ->  change directory라는 뜻으로 해당 디렉토리로 이동한다.

       cd ..  ->  하나 상위디렉토리로 이동

       cd\  ->  루트로 이동

  (b) dir  ->  파일목록

       dir\p  ->  파일목록을 한 화면 단위로 끊어서 보여준다. enter로 다음 화면 넘김 가능.

       dir\w  ->  파일목록을 한 화면 표시할 수 있게 가로로 보여준다.

  (c) cls  ->  화면 청소

 

(2) SQL 명령 분류: 

  (a) DDL(Data Definition Language): CREATE(생성), ALTER(변경), DROP(삭제)

  (b) DCL(Data Control Language): GRANT(권한부여), REVOKE(권한삭제)

  (c) DML(Data Manipulation Language): INSERT, UPDATE, DELETE, MERGE, CALL

  (d) DQL(Data Query Language): SELECT

  (e) TCL(Transaction COntrol Language): COMMIT(DML명령어 확정), ROLLBACK(DML명령어 undo), SAVEPOINT

 

(3) RDBMS: 관계형 데이터베이스 관리 시스템.

 

(4) 쿼리 작성 규칙

  (a) 대소문자 구별 하지 않는다. 단, 비교문 문자열은 구별한다.

  (b) '', "" 구별 하지 않는다. 단, ''을 권장한다.

  (c) 날짜, 숫자는 문자열로도 가능하다. ex. 10='10'.

  (d) =은 같다는 뜻이다.

  (e) 논리연산자는 not, and, or 이다.

  (f) 끝은 ;으로 마무리한다.