데이터베이스와 테이블 구축

POOHYA·2022년 4월 6일
0

SQL

목록 보기
7/7

데이터베이스 생성

CREATE DATABASE [IF NOT EXISTS] course_rating;

DB생성

USE course_rating;

사용할 DB설정

테이블 생성

CREATE TABLE student(
`컬럼명` 데이터타입 속성,
`컬럼명` 데이터타입 속성,
...,
`컬럼명` 데이터타입 속성,
primary key('컬럼명')
);

PK primary key
NN not null
AI auto increment

데이터 타입\

Numeric types

정수형

tinyint

TINYINT SIGNED : -128 ~ 127
TINYINT UNSIGNED : 0 ~ 255

smallint

SMALLINT SIGNED : -32768 ~ 32767
SMALLINT UNSIGNED : 0 ~ 65535

mediumint

MEDIUMINT SIGNED : -8388608 ~ 8388607
MEDIUMINT UNSIGNED : 0 ~ 16777215

INT

INT SIGNED : -2147483648 ~ 2147483647
INT UNSIGNED : 0 ~ 4294967295

BIGINT

BIGINT SIGNED : -9223372036854775808 ~ 9223372036854775807
BIGINT UNSIGNED : 0 ~ 18446744073709551615

실수형

DECIMAL

DECIMAL(M, D)형식으로 나타내고 m은 최대자리수 d는 소수점 최대자리수

FLOAT

-3.402823466E+38 ~ -1.175494351E-38,

DOUBLE

날짜 및 시간타입

DATE

날짜를 나타내는 데이터

DATETIME

날짜와 시간을 나타내는 데이터

TIMESTAMP

날짜와 시간을 나타내는 데이터 DATETIME과 다른점은 타임존 정보도 함께저장

문자열 타입

CAHR

CHAR(n) 최대 n자의 문자열을 저장할 수 있다
0부터 최대 255까지의 숫자를 적을 수 있다

VARCHAR

VARCHAR(n) 최대 n자의 문자열을 저장할 수 있다
0부터 최대 65,535(216 − 1)까지의 숫자를 적을 수 있다

CHAR와 VARCHAR의 차이점
CHAR(10)은 어떤 길이의 문자열이 저장되더라도 항상 그 값이 10만큼 용량을 차지하지만 VARCHAR(n)는 저장 용량이 설정된 최대 길이에 맞게 고정된 게 아니라 실제 저장된 값에 맞게 최적화 된다

TEXT

최대 65535 자까지 저장할 수 있다.

INSERT

INSERT INTO student(id, name, student_number, major, email, phone, admission_date)
VALUES(1, '손승완', 20150202, '컴퓨터공학과', 'sw0221@mail.com', '010-1234-4567', '2022-03-12');

모든 컬럼이 들어가는 로우를 삽일할때는 컬럼이름을 생략해도 된다

INSERT INTO student(name, student_number, major, admission_date)
VALUES('강슬기', 20140505, '경영학과', '2014-03-12');

특정 컬럼을 제외한 로우를 삽일할때는 컬럼이름을 명시해주어야 한다

UPDATE

UPDATE student 
	SET major = '정보통신공학과', name = '손수난'
	WHERE id = 2;

DELETE

DELETE FROM student WHERE ID = 3

ALTER

RENAME

컬럼의 이름수정

ALTER TABLE student 
    RENAME COLUMN student_number TO registraion_number;

DROP

컬럼삭제

ALTER TABLE student DROP COLUMN admission_date;

ADD

컬럼추가

ALTER TABLE student ADD status varchar(5) NOT NULL;

MODIFY

컬럼의 타입 또는 속성을 변경

ALTER TABLE student MODIFY major INT;

DEFAULT

ALTER TABLE student MODIFY major NOT NULL DEFAULT 101;

UNIQUE

CONSTRAINT

ALTER TABLE student
 	ADD CONSTRAINT st_rule CHECK (email like '%@%' AND gender IN ('m', 'f'));

DATETIME, TIEMSTAMP 타입의 컬럼에 값을 넣는 두가지 방식

1. NOW() 함수

2. DEFAULT CURRENT_TIMESTAMP / ON UPDATE CURRENT_TIMESTAMP 속성 설정

PRIMARY KEY와 UNIQUE속성의 차이
PK는 테이블에서 하나의 row를 식별하기위해 사용되는 컬럼이므로 null을 허용하지않음
unique는 각각의 컬럼들이 가질수 있는 속성으로 한테이블의 여러 개의 unique 속성들이 존재할 수 있다

테이블 제약조건

제약조건 생성

한개의 제약조건

ALTER TABLE student
 	ADD CONSTRAINT st_rule CHECK (registration_number < 30000000);

여러개의 제약조건

ALTER TABLE student
 	ADD CONSTRAINT st_rule CHECK (email like '%@%' AND gender IN ('m', 'f'));

제약조건 삭제

ALTER TABLE student DROP CONSTRAINT st_rule;

컬럼 가장 앞으로 당기기

ALTER TABLE student
	MODIFY id INT NOT NULL AUTO_INCREMENT FIRST;

컬럼 간의 순서 바꾸기

ALTER TABLE student
	MODIFY role CHAR(5) NULL ALTER name;

role컬럼을 name컬럼 뒤에 위치하도록 한다

CHANGE

컬럼의 이름과 컬럼의 데이터 타입 및 속성 동시에 수정하기
CHANGE [기존컬럼명][바뀐컬럼명] [데이터타입][속성]

ALTER TABLE student 
	CHANGE role position VARCHAR(2) NOT NULL;

여러 작업 동시에 수행하기

ALTER TABLE student
	RENAME COLUMN id TO registration_number,
    MODIFY name VARCHAR(20) NOT NULL,
    DROP COLUMN position,
    ADD height DOUBLE NOT NULL,
    ADD weight DOUBLE NOT NULL;

테이블 이름 변경

RENAME TABLE studen TO undergraduate;

테이블 복사

전체 복사

CREATE TABLE copy_of_undergraduate AS SELECT * FROM undergraduate;

컬럼 구조만 복사

CREATE TABLE copy_of_undergraduate LIKE undergraduate;

테이블 ROW만 복사

INSERT INTO copy_of_undergraduate SELECT * FROM undergraduate;

테이블 삭제

DROP TABLE copy_of_undergraduate;

테이블 데이터 삭제

DELETE FROM student;
TRUNCATE student;
profile
김효주

0개의 댓글