본문 바로가기

MySQL

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

💡 SQL (Structured Query Language)은 데이터베이스 관리 시스템 (DBMS)에서 데이터를 관리하고 검색하기 위해 사용되는 표준 데이터베이스 언어이다. (안시 쿼리)

테이블이란?

MySQL에서 테이블(table)은 데이터를 저장하는 기본적인 단위이다.

테이블은 열(column)과 행(row)으로 이루어져 있으며, 각 열은 데이터 유형을 나타내는 데이터 형식(data type)을 가지고 있다.

 


 

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

  1. 테이블 이름
  2. 열 이름
  3. 열 데이터 형식
  4. 빈 값 허용 여부
  5. 기본값
  6. 제약 조건 (Primary Key, Unique Key, Foreign Key 등)
  7. 인덱스 - (찾는 키워드에 주소를 기록하는것 단, 인덱스를 걸려면 잘 걸어야한다)

 

데이터 베이스 생성

CREATE DATABASE [database_name];
CREATE DATABASE mydb;

 


 

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(50),
    professor char(50) not null
);

select *from subject;

 

이미 생성된 테이블에 PK(기본키 - 제약 조건) 추가 해보기

💡 기본키를 추가하면 해당 열에 대한 중복 데이터가 저장될 수 없으며, 데이터 검색 속도가 향상된다. 기본키는 테이블 내에서 고유한 값이어야 하며, 해당 열에 대해 NOT NULL 제약 조건이 설정되어 있어야 한다.

desc student; 
-- 이미 생성된 테이블에 기본 키 추가 하는 쿼리 사용방법 
ALTER TABLE student ADD PRIMARY KEY(student_id); 
-- 사전기반지식 : 특정 컬럼을 기본키로 만들게 되면 중복된 데이터를 허용 못하고 
-- NULL 값이 있어서는 안됨 

-- 먼저 쿼리구문 작성해보기 
-- subject 테이블에 PK 추가 대상 - sbject_id 
-- 제약 확인
ALTER TABLE subject ADD PRIMARY KEY(subject_id);

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,
    customer_order varchar(50),
    product_name varchar(20) not null,
    quantity int not null,
    order_date date not null
);
desc `order`;

-- 도전 과제 : 위 형식에 맞는 insert 구문을 만들고 실행하기
insert into `order`(id, price, customer_order, product_name, quantity, order_date)
values('123', '25000', 'ㅇㅇㅎ', '치킨', '1', '2024-05-30'),
('456', '79500', 'ㅇㄱㅍ', '햄버거', '5', '2024-05-30'),
('789', '21350', 'ㅇㅎㅈ', '마라탕', '1', '2024-05-30'),
('057', '35000', 'ㅇㅅㅅ', '피자', '1', '2024-05-29'),
('954', '1500', 'ㅎㄱㄷ', '아이스크림', '1', '2024-05-28');
select *from `order`;
728x90

'MySQL' 카테고리의 다른 글

SELECT 구문과 조건절  (0) 2024.05.31
INSERT 구문과 제약 사항  (0) 2024.05.30
테이블에 데이터 입력  (0) 2024.05.29
데이터베이스 모델링  (0) 2024.05.29
데이터베이스 구축 절차  (0) 2024.05.28