MySQL

테이블 생성과 제약 사항 연습

haejujung 2024. 5. 31. 17:12

데이터베이스에서 테이블은 다음과 같은 정보를 포함할 수 있습니다.

  1. 테이블 이름
  2. 열 이름
  3. 열 데이터 형식
  4. 빈 값 허용 여부
  5. 기본값
  6. 제약 조건 (Primary Key, Unique Key, Foreign Key 등)
  7. 인덱스
SQL (Structured Query Language)은 데이터베이스 관리 시스템 (DBMS)에서 데이터를 관리하고 검색하기 위해 사용되는 표준 데이터베이스 언어입니다. (안시 쿼리)

 

create database mydb;

use mydb;

-- 테이블 생성 
create table student(
	  student_id int, 
    name varchar(50) not null,
    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값이 있어서는 안됨

alter table subject add primary key(subject_id);

 

테이블 생성 시 PK를 추가하는 방법

 

-- 예약어는 기본적으로 테이블 이름을 선점할 수 없다.
-- 하지만 강제적으로 ``작은따옴표를 사용해서 테이블 이름이라고 명시할 수 있다.
create table `order`(
 id int primary key,
 price bigint,
 customer_order varchar(50),
 product_name varchar(20) not null,
 quantitiy int not null,
 order_date date not null
); 
desc `order`;
    
-- 도전 과제 : 위 형식에 맞는 insert 를 진행하세요
insert into `order`(id, price, customer_order, 
product_name, quantitiy, order_date)
values(12,30000,'busan01','티셔츠',1,'2024-05-30');

select * from `order`;

MySQL에서 가장 많이 사용하는 데이터 타입


💡

숫자 타입: INT, BIGINT, FLOAT, DOUBLE 등
문자열 타입: VARCHAR, CHAR, TEXT, BLOB 등
날짜/시간 타입: DATE, TIME, DATETIME, TIMESTAMP 등
불리언 타입: BOOLEAN, BOOL 등

데이터 타입은 테이블의 컬럼에 저장될 데이터의 형식을 결정하므로, 정확한 데이터 타입을 선택하는 것이 중요합니다. 이를 통해 데이터베이스의 성능을 최적화하고, 데이터 무결성을 보장할 수 있습니다.

숫자 타입은 정수형(INT, BIGINT)과 실수형(FLOAT, DOUBLE)으로 구분됩니다. 정수형은 소수점 이하의 값을 저장하지 않으며, 실수형은 소수점 이하의 값을 저장할 수 있습니다. 문자열 타입은 고정 길이(CHAR)와 가변 길이(VARCHAR)로 구분됩니다. 고정 길이는 저장할 데이터의 길이가 일정하며, 가변 길이는 저장할 데이터의 길이가 가변적입니다.

날짜/시간 타입은 날짜(DATE), 시간(TIME), 날짜와 시간(DATETIME, TIMESTAMP) 등으로 구분됩니다. 불리언 타입은 참(TRUE, 1)과 거짓(FALSE, 0) 두 가지 값을 저장할 수 있습니다

 

도전 과제 1

employee 테이블을 생성하며, id, name, age, department 네 개의 열(column)을 포함. name 는 null 값이 들어갈 수 없습니다. id 열은 기본키(Primary Key)로 설정. 데이터 타입은 직접 결정하세요.

 

create table employee(
id varchar(20) primary key,
name varchar(20) not null,
age int,
department varchar(10)
);

 

도전 과제 2


💡 customer 테이블 생성
id, name, email, address 네 개의 열을 포함
- name, address 는 null 값이 있으면 안됨.
id 열은 기본키(Primary Key)로 설정 데이터 타입은 직접 선정
create table customer(
id int primary key,
name varchar(20) not null,
email varchar(20),
address varchar(50) not null
);