관계형 데이터베이스
SQL(Structured Query Language)은 `관계형 데이터베이스`를 다룰 때 사용되는 `표준 언어`
관계형 데이터베이스는 데이터를 표(테이블)로 나타냄
`MySQL`은 관계형 데이터베이스를 관리하는 시스템(RDBMS, Realational DataBase Management System)이다
데이터베이스 안엔 여러개의 테이블이 존재함
기초 문법(코드)
데이터베이스 생성
CREATE DATABASE [DBNAME];
데이터베이스 삭제
DROP DATABASE [DBNAME];
존재하지 않는 데이터베이스를 삭제할 경우 에러 발생
데이터베이스 선택
USE [DBNAME];
데이터베이스 목록
SHOW DATABASE;
예시)
CREATE DATABASE mydb; //데이터베이스 생성
SHOW DATABASE; //데이터베이스 목록
USE DATABASE; //데이터베이스 사용
DROP DATABASE mydb; //데이터베이스 삭제
DROP DATABASE IF EXISTS mydb; //mydb가 존재하는 경우 삭제
SQL로 테이블 만들기
테이블을 생성할 데이터베이스를 먼저 선택해야함
테이블 생성
CREATE TABLE [TBLNAME] ([column type option][datatype], …);
예시)
CREATE TABLE Member
(
ID BIGINT NOT NULL AUTO_INCREMENT,
Name VARCHAR(20) NOT NULL,
Email VARCHAR(40) NOT NULL,
Birth DATE NULL,
Body TEXT NULL,
PRIMARY KEY(ID)
);
정수 INT, 긴 문자 TEXT, 변경 가능한 문자 VARCHAR, 날짜 DATE 정도는 알아야 한다
(추가로 일반 부동소수점수 DOUBLE, 날짜와 시간 형태인 DATETIME 등)
NULL은 비어 있다는 뜻. NOT NULL이라면 절대 비어있으면 안되는 값
AUTO_INCREMENT 는 값이 1씩 자동으로 증가하는 함수
VARCHAR(20)은 최대 글자수가 20byte 를 의미
PRIMARY KEY(기본키)에 대해서 자세한 내용은 [DATABASE} 03에서 살펴보겠다
여기선 그냥 테이블당 각 하나씩만 존재하는 유일한 값이라는 것만 알아두면 좋을 것 같다. -
테이블 삭제
DROP TABLE [TBLNAME];
삭제할 테이블이 존재하지 않더라도 에러가 발생하지 않고 경고 알림만 뜬 채 실행된다
테이블 목록
SHOW TABLES;
테이블 초기화
TRUNCATE TABLE [TBLNAME];
예시)
USE DATABASE mydb;
CREATE TABLE Member(
ID BIGINT NOT NULL AUTO_INCREMENT,
Name VARCHAR(20) NOT NULL,
Email VARCHAR(40) NOT NULL,
Birth DATE NULL,
Body TEXT NULL,
PRIMARY KEY(ID)
); //테이블 생성
SHOW TABLES; //테이블 목록
TRUNCATE TABLE Member; //테이블 초기화
DROP Member; //테이블 삭제
Column 추가
ALTER TABLE [TBLNAME] ADD [column COLUMN TYPE OPTION]
Column 수정
ALTER TABLE [TBLNAME] CHANGE [COLUMN NAME] [NEW COLUMN NAME] TYPE OFTION;
ALTER TABLE [TBLNAME] MODIFY [COLUMN NAME] [NEW DATETYPE OFTION];
위에는 칼럼 명과 칼럼 데이터 타입을 모두 변경할 수 있는 것이고, 아래는 데이터 타입만 변경하는 함수이다
Column 삭제
ALTER TABLE [TBLNAME] DROP [COLUMN NAME]
예시)
ALTER TABLE Member MODIFY COLUMN Name VARCHAR(10) NOT NULL; //Name 데이터 타입 수정
ALTER TABLE Member CHANGE COLUMN Body Content TEXT NULL; //Body 이름 수정
ALTER TABLE Member CHANGE COLUMN Birth Birthday DATETIME NULL; //Birth 이름, 타입 수정
ALTER TABLE Member DROP Email; //Email 칼럼 삭제
ALTER TABLE Email ADD VARCHAR(40);//Email 칼럼 추가
Data 추가
INSERT INTO [TBLNAME]('COLUMN1', 'COLUMN2'...) VALUES ('VALUE1', 'VALUE2', ...);
Data 삭제
DELETE FROM [TBLNAME] WHERE [CONDITION];
WHERE: 특정 컬럼 중 조건에 부합하는 데이터만 지정하는 것
Data 조회
SELECT 'COLUMN1', 'COLUMN2'.. FROM [TBLNAME] WHERE [CONDITION];
Data 수정
UPDATE [TBLNAME] SET COLUMN1 = 'VALUE1' WHERE [CONDITION];
예시)
INSERT INTO Member(ID, Name, Email) VALUES (1, "홍길동", 'abcd@efg.hr');//DATA 추가
SELECT 'COLUMN1', 'COLUMN2'.. FROM [TBLNAME] WHERE [CONDITION]; //DATA 조회
SELECT * FROM Member; //전체 행 선택
SELECT Name, Email FROM Member WHERE ID=1; //ID가 1인 값 중에서 Name과 Email만 보여줌
UPDATE User SET Name='홍길동' WHERE Birth='2000-01-01';//DATA 수정
DELETE FROM Member WHERE ID=1; //ID가 1인 데이터(행) 삭제
전체 코드
//DB
CREATE DATABASE mydb; //데이터베이스 생성
SHOW DATABASE; //데이터베이스 목록
USE DATABASE; //데이터베이스 사용
DROP DATABASE mydb; //데이터베이스 삭제
DROP DATABASE IF EXISTS mydb; //mydb가 존재하는 경우 삭제
//TABLE
USE DATABASE mydb;
CREATE TABLE Member(
ID BIGINT NOT NULL AUTO_INCREMENT,
Name VARCHAR(20) NOT NULL,
Email VARCHAR(40) NOT NULL,
Birth DATE NULL,
Body TEXT NULL,
PRIMARY KEY(ID)
); //테이블 생성
SHOW TABLES; //테이블 목록
TRUNCATE TABLE Member; //테이블 초기화
DROP Member; //테이블 삭제
//COLUMN
ALTER TABLE Member MODIFY COLUMN Name VARCHAR(10) NOT NULL; //Name 데이터 타입 수정
ALTER TABLE Member CHANGE COLUMN Body Content TEXT NULL; //Body 이름 수정
ALTER TABLE Member CHANGE COLUMN Birth Birthday DATETIME NULL; //Birth 이름, 타입 수정
ALTER TABLE Member DROP Email; //Email 칼럼 삭제
ALTER TABLE Email ADD VARCHAR(40);//Email 칼럼 추가
//DATA
INSERT INTO Member(ID, Name, Email) VALUES (1, "홍길동", 'abcd@efg.hr');//DATA 추가
SELECT 'COLUMN1', 'COLUMN2'.. FROM [TBLNAME] WHERE [CONDITION]; //DATA 조회
SELECT * FROM Member; //전체 행 선택
SELECT Name, Email FROM Member WHERE ID=1; //ID가 1인 값 중에서 Name과 Email만 보여줌
UPDATE User SET Name='홍길동' WHERE Birth='2000-01-01';//DATA 수정
DELETE FROM Member WHERE ID=1; //ID가 1인 데이터(행) 삭제
데이터베이스
[DATABASE] 데이터베이스 개념
[DATABASE] My SQL 기초 문법
[DATABASE] MY SQL 추가 - Join, Subquery
[DATABASE] 기본키, 외래키, 복합키의 개념
[DATABASE] 관계형 데이터 베이스, ERD 설계
[DATABASE] 정규화
'백엔드 공부일지 > 데이터베이스 공부일지' 카테고리의 다른 글
[DATABASE] 관계형 데이터 베이스, ERD 설계 (0) | 2024.05.22 |
---|---|
[DATABASE] 기본키, 외래키, 복합키의 개념 (1) | 2024.05.18 |
[DATABASE] MY SQL 추가 - JOIN, SUBQUERY (1) | 2024.05.16 |
[DATABASE] 데이터베이스 개념 (0) | 2024.05.15 |