SQL, my SQL 그리고 ORM (query)

손연주·2021년 7월 30일
0

SQL과 my SQL

SQL (Structured Query language)란?

표준 관계 데이터베이스에 접근하고, 조작하기 위한 표준 언어로서 데이터베이스에 데이터를 더하거나, 빼거나, 수정하거나, 바꿀 때(CRUD) 유용하다.

쉽게 말해 데이터 베이스와 대화하기 위해 특별히 디자인 된 언어이다. HTTP와 같은 느낌으로 생각하면 편하다. 다시 말하면 데이터베이스에서 CRUD를 하기위해 대화를 해야하는데 언어가 다르면 소통이 안되니까 표준화된 언어라고 생각하면 된다.

데이터 베이스 종류에는 Relational과 Non-Relational가 있다. RDB(관계형 데이터 베이스)에는 SQL을 쓰고, Non relational database는 Non SQL을 쓴다.

RDBMS (Relational database management system)

관계형 데이터베이스를 관리 할 때 유용한 프로그래밍 언어다.

MySQL

RDBMS 중 하나로서, SQL이라는 언어를 사용할 수 있는 시스템이다. 즉, 데이터가 체계적으로 배열, 유지되도록 돕는 소프트웨어다.

SQL 종류

  • SQL
    • mysql
    • postgresql
    • splite
  • Non-SQL
    • mongoDB
    • DynamoDB
    • couchDB

SQL 문법은 마치 실제 영어처럼 보여서 쉽게 사용할 수 있는데 왜 개발자들은 SQL을 잘 모르는 걸까? ORM 때문이다. 프로그래밍 언어를 가져와서 SQL 코드로 바꿔주는 일을 한다. nodeJS의 경우 Sequelize || type ORM이 있다.

하지만 위와 같이 ORM 보다 SQL을 써서 작동이 빨라지는 경우도 있으니, 우리는 둘 다 사용할 줄 알면 좋겠다.

SQL의 Query 사용법

내가 작성한 SQL query문

SELECT 함수

 SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명=값;

해당 테이블의 해당 컬럼의 데이터를 불러온다. 컬럼 전체를 불러오고 싶을때는 컬럼명 부분에 '*' 를 쓰면 된다. WHERE 구문을 추가하여 해당 조건이 참인 데이터만 불러온다.

INSERT 함수

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

UPDATE

UPDATE 테이블명 SET 컬럼명 = 변경할 값 WHERE 컬럼명=값;

테이블에 있는 데이터의 컬럼의 값을 변경한다. WHERE절에 맞는 데이터만 변경한다. 변경해야할 컬럼이 여러개일 때 콤마(,)를 사용하여 여러개의 값을 변경할 수 있다.

DELETE

DELETE from 테이블명 WHERE 컬럼명=값;

WHERE절에 맞는 데이터만 삭제한다. 모든 데이터를 삭제하고 싶으면 WHERE문을 제외하고 사용하면 된다.

Sequelize의 Query사용법

내가 작성한 Sequelize query문

INSERT 함수

  • create(values: Object, options: Object) : 레코드 생성 함수이다.
  • findOrCreate(options: Object): 조회 시 없으면 생성해주는 함수이다.
  • findCreateFind(options: Object) : 조회 시 없으면 생성 후 조회하는 함수이다.
  • upsert(values: Object, options: Object) : 한 레코드만 인서트하거나 업데이트 해주는 함수.

SELECT 함수

  • findOne(options: Object) : 하나만 조회하는 함수이다. find()와 동일
  • findAll(options: Object) : 여러 개를 조회하는 함수이다.
  • findAndCountAll(findOptions: Object) : 조회 후 총 수까지 알 수 있다. 조회 객체.count로 접근
  • findByPk(id: Number | String | Buffer, options: Object) : 프라이머리키로 조회하는 함수이다.
  • findCreateFind(options: Object) : 조회 시 없으면 생성 후 조회하는 함수이다.
  • findOrCreate(options: Object): 조회수 없으면 생성해주는 함수이다.

UPDATE 함수

  • update(values: Object, options: Object) : 값을 업데이트 해주는 함수. 여러 레코드도 가능.
  • upsert(values: Object, options: Object) : 한 레코드만 인서트하거나 업데이트해 주는 함수.

DELETE 함수

  • destroy(options: Object) : 한 개나 여러 레코드를 삭제하는 함수.

참고

profile
할 수 있다는 생각이 정말 나를 할 수 있게 만들어준다.

0개의 댓글