sue
  • SQL 기본
    2020년 11월 02일 20시 23분 41초에 업로드 된 글입니다.
    작성자: sue24
    저는 mySQL을 사용하고 있습니다!

    SQL?

    Structured Query Language의 준말로 데이터베이스에 접근할 수 있는 언어입니다.

    특정한 시스템에 한정되지 않기 때문에 많은 곳에서 사용되고 있습니다.

     

    • SQL 명령어를 꼭 대문자로 적어야 이해하는 건 아닙니다.
    • 마지막에 ;(세미콜론)를 잊지 말자!!

    이번 포스트에서는 데이터베이스와 타입, 테이블과 관련한 기본적인 명령어를 알아보겠습니다.

     

     

    database

    1. SHOW DATABASES;

      현재 있는 모든 데이터베이스를 보여달라

    2. CREATE DATABASE <데이터베이스 이름>;

      새로운 데이터베이스 생성.

      데이터베이스 이름은 띄어쓰기만 안 넣으면 스네이크 케이스 낙타 케이스 상관없지만

      스네이크 케이스를 추천한다고 합니다.

    3. DROP DATABASE <데이터베이스 이름>;

      해당 데이터베이스 지우기

    4. USE DATABASE <데이터베이스 이름>;

      이 데이터베이스를 사용하겠습니다.

    5. SELECT database();

      현재 사용 중인 데이터베이스 조회하기.
      사용 중인 데이터베이스를 DROP으로 지우고 SELECT 명령어를 사용하면 NULL을 반환합니다.

     

     

    types

    1. numeric

      1. INT

      2. SMALLINT

      3. TINYINT

      4. MEDIUMINT

      5. BIGINT

      6. DECIMAL

      7. NUMERIC

      8. FLOAT

      9. DOUBLE

      10. BIT

    2. string

      1. CHAR

      2. VARCHAR

      3. BINARY

      4. VARBINARY

      5. BLOB

      6. TINYBLOB

      7. MEDIUMBLOB

      8. LONGBLOB

      9. TEXT

      10. TINYTEXT

      11. MEDIUMTEXT

      12. LONGTEXT

      13. ENUM

    3. date

      1. DATE

      2. DATETIME

      3. TIMESTAMP

      4. TIME

      5. YEAR

    중요한 건 INT, VARCHAR!!

    • INT: 모든 숫자. 음수 포함. 4294967295가 최대 숫자

    • VARCHAR: string의 종류로 1~255자까지. -2999도 VARCHAR 타입 적용 가능.

      사용은 VARCHAR(문자의 최대 길이)와 같은 형태로 합니다.

      ex) VARCHAR(10)

      VARCHAR(255) <= 이건 text처럼 쓰는 거.

       

       

    table

    1. SHOW TABLES;

      해당 데이터베이스 안의 테이블 조회

    2. CREATE TABLE <테이블 이름> ( <컬럼 이름> <컬럼 타입>, <컬럼 이름> <컬럼 타입> );

      컬럼별 이름과 티입을 지정하여(최소한 이름과 타입은 줘야 함) 새로운 테이블 생성하기

    3. SHOW COLUMNS FROM <테이블 이름>;

      해당 테이블의 전체 컬럼 조회하기

    4. DESC <테이블 이름>;

      테이블 조회하기.

      SHOW COLUMNS FROM <테이블 이름>;과 같은 역할을 합니다.

    5. DROP TABLE <테이블 이름>;

      테이블 삭제하기

    6. 데이터 삽입하기

      • 테이블에 새로운 데이터 삽입하기

        INSERT INTO <테이블 이름> (컬럼 이름,컬럼 이름) VALUES (컬럼 값, 컬럼 값);

      • 여러 개의 데이터를 한 번에 삽입하기

        INSERT INTO <테이블 이름>(컬럼 이름, 컬럼 이름) VALUES (컬럼 값, 컬럼 값)

        ,(컬럼 값, 컬럼 값)

        ,(컬럼 값, 컬럼 값);

      • 아무런 값도 주지 않았지만 데이터를 하나 더 추가하고 싶을 때!

        INSERT INTO <테이블 이름>() VALUES();

    7. SELECT * FROM <테이블 이름>;

      테이블의 데이터 전체 조회하기

    8. '', ""가 값 안에 있는 데이터를 사용하려면

      • \', \" 처럼 백슬래쉬를 이용합니다.

      • 전체 스트링을 ''로 감쌌으면 인용은 "" 쓰기.(반대로 해도 됩니다.)

    • NULL

      값을 알 수 없음

      0과는 다른 값
      • 이름과 나이라는 두 개의 칼럼이 있는 테이블에 하나의 칼럼 값만 삽입한다면

        나머지 하나의 값은 NULL이 되어 데이터가 삽입됩니다.
      • 아예 값을 지정하지 않았을 경우에는 다 NULL이 됩니다. INSERT INTO cats() values();

      • NULL을 허용하지 않으려면 테이블을 만들 때 컬럼의 마지막에 NOT NULL을 넣어줍니다.

    위의 sample 테이블에 name이나 age만 값을 지정한 데이터를 넣으려고 하면

    값을 넣지 않은 컬럼에 default value가 없다고 경고가 뜹니다

    경고는 뜨지만 값을 조회하면

    int일 경우에는 0으로

    varchar일 경우에는 공백으로 들어가 있습니다.

    not null로 지정하지 않은 경우에는 null이 들어갑니다.

    • default

      값이 지정되지 않은 경우, default로 설정되어 있는 값이 해당 변수에 할당됩니다.

      테이블을 만들 때, <컬럼 이름> <컬럼 타입> DEFAULT <기본 값>, 형식으로 넣어줍니다.

    NOT NULL과 default value

    default 값이 없고 NOT NULL이 아닐 때(NULL이 허용될 때),

    빈 값은 NULL.

    default 값이 있으면 빈 값은 default 값.

    그렇다면, default 값이 있다면 NOT NULL 설정을 안 해도 될까?

    그렇지는 않습니다.

    NOT NULL이 설정이 안 되어 있고 default 값이 있을 때, NULL 을 입력하면 NULL이 들어갑니다.

    NOT NULL 설정이 되어 있고 default 값이 있을 때, NULL 을 입력하면 에러가 납니다.

     

    • PRIMARY KEY

      프라이머리 키라고 설정한 데이터는 중복될 수 없습니다.

      데이터 관련한 작업을 수행할 때는 특정 데이터를 찾는 것이 매우 중요합니다.

      데이터를 특정짓기 위한 간편한 방법이 바로 각 데이터에 유니크한 id를 부여하는 것입니다.

      그 유니크한 id를 Primary Key 라고 합니다.


      프라이머리 키는 하나의 데이터베이스 내에서 중복될 수 없습니다.

    unique_cats1을 만든 것처럼 만들 테이블의 컬럼을 다 열거한 뒤에

     

    PRIMARY KEY로 지정할 컬럼을 ()안에 넘겨줘도 되고,

     

    unique_cats2처럼 처음 컬럼을 열거할 때 바로 PRIMARY KEY 속성을 부여해줘도 됩니다.

     

    AUTO_INCREMENT 속성은 해당 컬럼의 값을 자동으로 하나씩 늘려주는 속성입니다.

     

    보통 프라이머리 키 컬럼에 쓰입니다.

     

    이 속성을 사용함으로써 cat_id라는 컬럼의 값을 부여하지 않아도 자동으로 값이 들어가게 됩니다.

    'SQL' 카테고리의 다른 글

    데이터모델링의 이해  (0) 2022.03.17
    44회 SQLD  (0) 2022.03.15
    SQL 더 나은 SELECT를 위하여  (0) 2020.11.08
    SQL string functions  (0) 2020.11.07
    SQL CRUD  (0) 2020.11.04
    댓글