데이터 베이스 생성
CREATE DATABASE [database_name];
CREATE DATABASE mydb;
테이블
MySQL에서 테이블(table)은 데이터를 저장하는 기본적인 단위이다.
테이블은 열(column)과 행(row)으로 이루어져 있으며, 각 열은 데이터 유형을 나타내는 데이터 형식(data type)을 가지고 있다.
데이터베이스에서 테이블은 다음과 같은 정보를 포함할 수 있다.
- 테이블 이름
- 열 이름
- 열 데이터 형식
- 빈 값 허용 여부
- 기본값
- 제약 조건 (Primary Key, Unique Key, Foreign Key 등)
- 인덱스
SQL ( Structured Query Language ) 은 데이터베이스 관리 시스템 ( DBMS ) 에서 데이터를 관리하고 검색하기 위해 사용되는 표준 데이터베이스 언어이다.
create database mydb;
use mydb;
-- 테이블 생성
create table student(
student_id int,
name varchar(50) not null,
-- varchar : 쓰는 글자 수에 따라 칸의 크기가 조절 됨
grade int not null,
major varchar(50) not null
);
select * from student;
desc student;
-- 과목 테이블 생성
create table subject(
subject_id int,
subject_name varchar(50) not null,
credit int not null,
department varchar(5),
professor char(50) not null
);
select * from subject;
이미 생성된 테이블에 PK(기본키 - 제약조건) 추가하기
기본키를 추가하면 해당 열에 대한 중복 데이터가 저장될 수 없으며, 데이터 검색 속도가 향상된다.
기본키는 테이블 내에서 고유한 값이어야 하며, 해당 열에 대해 NOT NULL 제약 조건이 설정되어 있어야 한다.
-- 이미 생성된 테이블에 기본키를 추가하는 방법
alter table student add primary key(student_id);
-- 사전 기반 지식 (데이터가 들어가 있는 상태에서 빈 값이 포함되어 있다면, 기본키를 추가할 수 없다.)
-- 즉, NULL 값이 있어서는 안된다.
desc subject;
DESC 명령어는 특정 테이블의 구조(스키마) 정보를 출력하는 명령어이다. DESC는 DESCRIBE의 약어로, 테이블의 구조 정보를 보다 간략하게 확인 가능하도록 지원하는 명령어 이다.
테이블 생성 시 PK를 추가하는 방법
-- 테이블을 삭제하는 명령어 확인
DROP TABLE student;
DROP TABLE subject;
-- 학생 테이블 생성 PK 추가
CREATE TABLE student(
student_id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
grade INT NOT NULL,
major VARCHAR(50) NOT NULL
);
desc student;
CREATE TABLE subject(
subject_id INT PRIMARY KEY,
subject_name VARCHAR(50) NOT NULL,
credit INT NOT NULL,
department VARCHAR(10) NOT NULL,
professor VARCHAR(20) NOT NULL
);
desc subject;
MySQL 에서 가장 많이 사용하는 데이터 타입
1. 숫자 타입 : INT, BIGINT, FLOAT, DOUBLE 등
2. 문자열 타입 : VARCHAR, CHAR, TEXT, BLOB 등
3. 날짜/시간 타입 : DATE, TIME, DATETIME, TIMESTAMP 등
4. 불리언 타입 : BOOLEAN, BOOL 등
데이터 타입은 테이블의 컬럼에 저장될 데이터의 형식을 결정하므로, 정확한 데이터 타입을 선택하는 것이 중요하다.
이를 통해 데이터베이스의 성능을 최적화하고, 데이터 무결성을 보장할 수 있다.
숫자 타입은 정수형(INT, BIGINT)과 실수형(FLOAT, DOUBLE)으로 구분된다.
정수형은 소수점 이하의 값을 저장하지 않으며, 실수형은 소수점 이하의 값을 저장할 수 있다.
문자열 타입은 고정 길이(CHAR)와 가변 길이(VARCHAR)로 구분된다.
고정 길이는 저장할 테이터의 길이가 일정하며, 가변 길이는 저장할 데이터의 길이가 가변적이다.
날짜/시간 타입은 날짜(DATE), 시간(TIME), 날짜와 시간(DATETIME, TIMESTAMP) 등으로 구분된다.
불리언 타입은 참(TRUE, 1)과 거짓(FALSE, 0) 두 가지 값을 저장할 수 있다.
- TEXT는 대부분의 문자열 데이터를 저장하는 데 사용된다.
- BLOB는 이진 데이터를 저장하는데 사용된다. 최대 크기는 TEXT와 동일하지만, TEXT는 문자집합(Character Set)과 관련된 처리를 한다. BLOB은 이진 데이터로 간주되어 문자 집합에 영향을 받지 않는다.
-- 예약어는 기본적으로 테이블 이름을 선점할 수없다.
-- 하지만 강제적으로 `` 작은 따옴표를 사용해서 테이블 이름이라고 명시할 수 있다.
create table `order`(
id int primary key,
price bigint,
cusotmer_order varchar(50),
product_name varchar(20) not null,
quantity int not null,
order_date date not null
);
desc `order`;
-- 도전 과제 : 위 형식에 맞는 insert 구문을 만고 실행 하세요.
-- 도전 과제 : 위 형식에 맞는 insert 구문을 만고 실행 하세요.
INSERT INTO `order` (id, price, cusotmer_order, product_name, quantity, order_date)
VALUES (2, 15000, 'or123', '청바지', 3, '2024---05-30'); // date (값 확인)
select * from `order`;
AURO_INCREMENT
오토 인크리먼트(auto-increment)는 MySQL과 같은 데이터베이스 시스템에서 자동으로 순차적인 번호를 생성해주는 기능이다. 일반적으로 테이블에서 기본키(Primary Key)를 지정할 때 사용한다.
즉, 새로운 레코드를 삽입할 때 마다 기본키 값이 자동으로 증가하며, 중복된 값이 입력되지 않도록 보장한다.
'MySQL' 카테고리의 다른 글
UPDATE 구문과 조건절 (0) | 2024.05.31 |
---|---|
SELECT 구문과 조건절 (0) | 2024.05.31 |
데이터베이스 구축 절차 (2) | 2024.05.30 |
데이터베이스 (0) | 2024.05.29 |
My SQL 설치 (2) | 2024.04.19 |