SQL 기본 구문

SQL에서 Database와 Table을 예제를 생성한 상태의 MySQL이다.

좌상단의 SCHEMAS를 보면 'codingtable'이라는 Database와 'cats'라는 Table이 있는 것을 볼 수 있다.

또한, 좌하단의 Schemas를 보면 'cats' Table이 어떤 columns이 있는지 확인할 수 있다.

현재는 'cat_id' 값이 기본키로 들어가있으며, name, breed, age가 column으로 있다.

 

MySQL이라는 DBMS를 사용하면 당연히 데이터베이스를 다룰 줄 알아야 한다.

위의 그림을 예시로 들면, 4개의 각기 다른 색에 해당하는 구역이 하나의 Database이다.

각 색상에 들어있는 다양한 크기의 사각형들이 Table이다.

이번 글에서 가장 기본이 되는 데이터베이스를 확인, 생성, 삭제하는 구문을 다루고,

데이터베이스 내부에 존재하는 테이블들을 확인, 생성, 삭제하는 구문을 다룬다.

 

Database 관련 구문

-- MySQL Server에 있는 DB 목록 확인
SHOW databases;

현재 MySQL에 있는 모든 데이터베이스 목록을 보여준다.

 

-- 새로운 DB 만들기
CREATE DATABASE new_db_name;

새로운 데이터베이스를 생성한다.

new_db_name에 자신이 새롭게 생성하고자 하는 데이터베이스 이름을 적으면 된다.

 

-- 존재하는 DB 삭제하기
DROP DATABASE del_db_name;

SQL에서 삭제할 때는 보통 DROP 키워드를 사용한다.

del_db_name에 삭제하고자 하는 데이터베이스 이름을 적으면 된다.

 

-- 사용할 DB 선택하기, DB 더블 클릭과 동일
USE use_db_name;

데이터베이스 내부에 테이블을 생성하기 위해서는 데이터베이스에 접근해야 한다.

use_db_name에 접근할 데이터베이스 이름을 적으면 된다.

이때 MySQL Workbench 좌측창에서 더블 클릭으로 접근해도 상관없다.

 

-- 현재 DB 확인하기
SELECT database();

현재 선택한 데이터베이스를 확인한다.

 

Table 관련 구문

-- 선택한 Database에 있는 Table 목록 확인하기
SHOW TABLES;

 데이터베이스 내부에 존재하는 테이블 목록을 보여준다.

 

-- table_name에 해당하는 Table 확인하기
SHOW COLUMNS FROM table_name;
DESCRIBE table_name;
DESC table_name;

특정 테이블의 정보를 확인한다.

특정 테이블의 Field, Type, Null, Key, Default, Extra 값들을 보여준다.

table_name에 보고 싶은 테이블 이름을 적으면 된다.

 

-- del_table_name에 해당하는 Table 삭제하기
DROP TABLE del_table_name

테이블을 삭제할 때 사용한다. del_table_name에 삭제할 테이블 이름을 적으면 된다.

 

CREATE TABLE new_table_name
(
    Field	Type	*optional value*
);

테이블을 생성하는 방법이다.

위에서 언급한 것처럼 테이블에는 Field, Type, Null, Key, Default, Extra 값이 존재한다.

그에 따라 테이블을 생성할 때는 값을 명시해줘야 한다.

 

CREATE TABLE cats
(
    name	VARCHAR(100),
    breed	VARCHAR(50),
    age	INT
);

가장 간단한 형태로 테이블을 생성한 예시이다.

cats라는 이름으로 테이블을 생성하고 name, breed, age의 Field를 생성했다.

name과 breed는 최대 문자열 100자를 받을 수 있는 타입(VARCHAR(100))으로,

age는 정수값을 받아들일 수 있는 타입으로 선언했다.

 

CREATE TABLE people
(
    first_name	VARCHAR(20)	NOT NULL	DEFAULT 'noname',
    last_name	VARCHAR(20)	NOT NULL	DEFAULT 'noname',
    age		INT			NOT NULL	DEFAULT 99
);

또 다른 예시로 people이라는 이름의 테이블을 생성했다.

테이블의 NULL 속성은 해당 열(column)이 NULL을 허용하는지 안 하는지를 나타낸다.

이때 Field를 NOT NULL로 선언한다면 NULL 값을 허용하지 않는다.

 

테이블을 생성하고, 그에 해당하는 값을 추후에 입력해야 한다.

이때 해당 값에 아무 것도 입력하지 않았을 때, NULL 값으로 들어가게 된다.

NULL이 아니라 특정 값을 넣고 싶다면 DEFAULT로 기본 값을 설정할 수 있다.

 

NOT NULL과 DEFAULT를 같이 선언한다면 어떻게 될까?

DEFAULT 값을 선언했으니 NOT NULL이 의미가 없는 것은 아닐까?

DEFAULT는 아무 것도 입력하지 않았을 때, 특정 값을 넣어준다는 제약이다.

입력값으로 직접 NULL을 넣어주면 DEFAULT가 동작하지 않는다.

이를 NOT NULL로 방지할 수 있다.

 

CREATE TABLE unique_cats
(
    cat_id	INT	PRIMARY KEY,
    name	VARCHAR(100)	NOT NULL,
    age	INT			NOT NULL
);


CREATE TABLE unique_cats
(
    cat_id	INT,
    name	VARCHAR(100)	NOT NULL,
    age	INT			NOT NULL,
    PRIMARY KEY (cat_id)
);

기본키(Primary key)를 사용한 테이블 생성 예제다.

name과 age가 같은 두 마리의 고양이를 입력했다고 해보자. 이를 어떻게 구분할 수 있을까?

이때 필요한 것이 기본키다. 기본키라는 것은 행(row)을 구별하기 위한 고유한 값이다.

기본키는 PRIMARY KEY 키워드로 해당 Field를 기키로써 선언할 수 있다.

기본키로 선언하는 방법에는 위의 2가지가 있다.

 

CREATE TABLE increase_cats
(
    cat_id	INT	AUTO_INCREMENT	PRIMARY KEY,
    name	VARCHAR(100)	NOT NULL,
    age	INT			NOT NULL
);

기본키를 하나하나 직접 입력하기에는 번거롭다. 그를 위한 AUTO_INCREMENT 옵션이 있다.

AUTO_INCREMENT는 기본키를 1부터 시작하여 자동으로 1씩 올려서 저장해준다.

주의할 점은 PRIMARY KEY에는 언더스코어가 들어가지 않고, AUTO_INCREMENT에는 언더스코어가 들어간다.

 

DROP TABLE cats;
DROP TABLE people;
DROP TABLE unique_cats;
DROP TABLE increase_cates;

위처럼 생성한 테이블들을 DROP으로 삭제할 수 있다.

'Language > SQL' 카테고리의 다른 글

SQL 부분 조회(필터링)  (0) 2023.09.15
SQL 문자열 함수  (0) 2023.09.14
CRUD  (0) 2023.09.11
SQL 정의와 DBMS 종류  (0) 2023.09.04
DBMS(MySQL) 설치  (0) 2023.09.04

+ Recent posts