-- NOT NULL과 디폴트값 사용 
DROP TABLE student;

CREATE TABLE student(
	student_id INT PRIMARY KEY, 
    name VARCHAR(50) NOT NULL, 
    grade INT NOT NULL, 
    major VARCHAR(50) DEFAULT '미정' NOT NULL 
);
desc student;

-- 디폴트 제약을 사용했을 때 값을 넣은 방법 1
INSERT INTO student(student_id, name, grade, major)
VALUES 
     (1, 'John', 3, '경영학과'),
     (2, 'Jane', 2, '경영학과'),
     (3, 'Mike', 1,  DEFAULT),
     (4, 'David', 2, DEFAULT);
     
select * from student;     
-- 디폴트 제약을 사용했을 때 값을 넣은 방법 2
INSERT INTO student(student_id, name, grade) 
VALUES
     (5, '홍길동1', 2),
     (6, '홍길동2', 3),
     (7, '홍길동3', 1),
     (8, '홍길동4', 3);

major 컬럼에 DEFAULT 제약 조건을 추가 하였으며, NOT NULL 제약 조건을 계속 유지합니다. 이렇게 설정하면 major 컬럼이 NULL인 경우 '미정'이라는 값으로 입력됩니다. ‘미정’ 은 여러분들이 정의한 값을 설정할 수 있습니다.

 

: 제약 사항 변경하기 default 구문 추가

CREATE TABLE subject (
  subject_id,
  subject_name VARCHAR(50) NOT NULL,
  credit INT NOT NULL,
  department VARCHAR(50) NOT NULL,
  professor VARCHAR(50) NOT NULL
);

-- professor 컬럼 제약 사항을 default 로 추가 하고 값을 빈 문자열로 만들어 주세요 
-- 빈 문자열에 의미는 "" 처리 하면 됩니다.  

CREATE TABLE subject (
  subject_id INT primary key,
  subject_name VARCHAR(50) NOT NULL,
  credit INT NOT NULL,
  department VARCHAR(50) NOT NULL,
  professor VARCHAR(50)  NOT NULL
);

-- 테이블이 생성 되어 있을 때 제약 변경 default 구문 추가 
ALTER TABLE subject MODIFY professor VARCHAR(30) NOT NULL DEFAULT '';

 

테이블에 데이터를 저장하는 방법

-- 데이터 저장 (한줄 주석) 
/*
 여러줄 주석 
*/

-- DROP TABLE student;
-- DROP TABLE subject; 
-- DROP table product;

CREATE TABLE student(
	student_id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL, 
    grade INT NOT NULL, 
    major VARCHAR(50) 
);

-- 기본 문구 모양 
-- INSER INTO 테이블명(컬럼명1, 컬럼명2, ..) VALUES (값1, 값2);

INSERT INTO student(student_id, name, grade, major)
VALUES (1, '홍길동', 3, '컴퓨터공학과');

INSERT INTO student(student_id, name, grade, major) 
VALUES (2, '김철수', 4, '전자공학과'); 

INSERT INTO student(student_id, name, grade, major) 
VALUES (3, '이영희', 2, '경영학과');

INSERT INTO student(student_id, name, grade, major)
VALUE (4, '티모', 1, '롤학과');


select * from student;

-- 테이블에 데이터를 삭제하는 명령어 사용해보기 
DELETE FROM student;  -- 테이블 안에 있는 데이터만 삭제하는 명령어이다. 

-- 복수형으로 insert 쿼리문 작성하기 
INSERT INTO student(student_id, name, grade, major)
VALUES
	(1001, '김철수', 2, '컴퓨터공학과'), 
  (1002, '이영희', 3, '수학과'), 
  (1003, '박민수', 1, '전자공학과');

-- 복수형으로 데이터 3행을 넣어주세요 단 VALUE로 사용해보세요    
INSERT INTO student(student_id, name, grade, major)
VALUE
	(1004, '김철수2', 2, '컴퓨터공학과'), 
  (1005, '이영희2', 3, '수학과'), 
  (1006, '박민수2', 1, '전자공학과');  
    
-- insert 구문에서 복수행 쿼리를 실행할 때 하나라도 오류가 있으면
-- 데이터는 정상 저장되지 않는다.      
INSERT INTO student(student_id, name, grade, major)
VALUES
	(1007, '김철수3', 2, '컴퓨터공학과'), 
  (1008, '이영희3', 3, '수학과'), 
  (1008, '박민수3', 1, '전자공학과');

select * from student;

VALUE 와 VALUES

테이블에 데이터를 입력할 때 VALUES 라는 구문도 사용할 수 있습니다.

 

둘 다 동일한 결과를 반환하며, VALUES와 VALUE는 서로 바꾸어 사용할 수 있습니다. 다만, VALUES는 복수형이며, VALUE는 단수형이므로, 여러 개의 레코드를 삽입하는 경우에는 VALUES를 사용하는 것이 좀 더 자연스러운 표현입니다.

 

테이블 제약 사항 변경하는 방법과 예외 상황 :

테이블안에 컬럼에 변경하려는 제약사항과 맞지 않다면 처리하고 진행 하여야 한다.

-- 이미 생성된 테이블 제약 사항 변경하기
ALTER TABLE student MODIFY grade INT NULL;  
desc student;

insert into student(student_id, name, major) 
values(1, '홍길동', '검술학과');

--  grade 제약을 NOT NULL 변경 해보기
--  테이블 값이 하나 들어가 있는 상태  
ALTER TABLE student MODIFY grade INT NOT NULL;  

select * from student;
-- 하나 행을 삭제하는 쿼리 - WHERE절 (조건절)  
delete from student WHERE student_id = 1; 

-- major 컬럼 제약을 NOT NULL 변경해 주세요  
ALTER TABLE student MODIFY major VARCHAR(50) NOT NULL;


-- 컬럼 선언 부분을 생략도 가능하다. 단 전부 값을 넣을려고 하는 상활일 때 
insert into student values(2, '홍길동2', 3, '검술학과');
select * from student

-- insert 구문 컬럼명 선언 방식 
-- 1. 전부 작성하는 방법 
-- 2. 제약 사항이 null 인 열이 있다면 넣고 싶은 열만 지정해서 구문을 작성할 수 있다. 
-- 3. 전부 데이터를 넣는 상황이라면 컬럼 선언부분을 생략 가능하다.

 

숫자 타입: 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) 두 가지 값을 저장할 수 있습니다.

 

'MYSQL' 카테고리의 다른 글

NOT NULL 과 디폴트 값 사용  (0) 2023.03.13
INSERT 구문과 제약 사항  (0) 2023.03.13
이미 생성된 테이블에 PK(기본키 - 제약 조건) 추가 해보기  (0) 2023.03.13
테이블 생성 해보기  (0) 2023.03.13
테이블이란 ?  (0) 2023.03.13

기본키를 추가하면 해당 열에 대한 중복 데이터가 저장될 수 없으며, 데이터 검색 속도가 향상됩니다. 기본키는 테이블 내에서 고유한 값이어야 하며, 해당 열에 대해 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' 카테고리의 다른 글

INSERT 구문과 제약 사항  (0) 2023.03.13
MySQL에서 가장 많이 사용하는 데이터 타입 알아보기  (0) 2023.03.13
테이블 생성 해보기  (0) 2023.03.13
테이블이란 ?  (0) 2023.03.13
데이터 베이스 생성 방법  (0) 2023.03.13

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

use mydb;
-- 테이블 생성시, SQL 작성시 어떤 DB 사용해야 하는지 먼저 선택 되어야 한다. 

-- 테이블 생성 
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; 
desc subject;

 

 

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

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

 

1열(column) 2열(column) 3열(column)

1행(row) 1행(row) 1행(row)

2행(row) 2행(row) 2행(row)

3행(row) 3행(row) 3행(row)

 

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

  1. 테이블 이름
  2. 열 이름
  3. 열 데이터 형식
  4. 빈 값 허용 여부
  5. 기본값
  6. 제약 조건 (Primary Key, Unique Key, Foreign Key 등)
  7. 인덱스

데이터 베이스 생성 방법과 설명

CREATE DATABASE [database_name];
CREATE DATABASE mydb;

 

위 쿼리문을 실행하면 mydb 라는 이름의 데이터베이스가 생성됩니다. 생성된 데이터베이스는 MySQL 서버에 저장되며, 데이터베이스 내에서 테이블을 생성하고 데이터를 저장할 수 있습니다. 데이터베이스를 생성할 때는, 데이터베이스 이름이 이미 존재하는 경우 오류가 발생하므로, 데이터베이스 이름을 중복되지 않게 지정해야 합니다.

DBMS > RDBMS > 데이터베이스(DB) > 테이블 한 회사에서 사업을 하나만 하는 경우도 있지만 쇼핑몰, 배달에 민족 처럼 여러 사업을 진행할 수 도 있습니다. 그래서 DB(데이터베이스는) 여러 개 만들어 둘 수 있습니다.

 

+ Recent posts