Structured Query Language
구조적 쿼리 언어
관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어
실행 순서가 없는 비절차적인 언어
관계형 데이터베이스(RDBMS)란?
테이블(table)로 이루어져 있으며, 키(key)와 값(value)의 관계로 표현한다
데이터의 종속성을 관계(realationship)으로 표현하는 것이 관계형 데이터베이스의 특징
데이터의 중복을 최소화하고, 무결성을 유지한다.
기능에 따라 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL)로 구분한다

테이블에 넣을 데이터들의 규칙을 정의하는 명령어
DDL을 통해 테이블, 도메인, 뷰, 인덱스 등을 정의하고 변경할 수 있다.
• 데이터베이스와 테이블을 생성하는 명령어
• 테이블이름, 열이름, 데이터형식 등을 지정
• 기본키, 외래키정의
• 데이터 베이스 생성
CREATE DATABASE SESAC DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;
/*
* sesac 이라는 데이터베이스를 생성하는데,
* 문자열셋으로 utf8mb4, 콜레이션을 utfmb8_unicode_ci를 사용!
* utf8mb4는 utf8보다 더많은 문자 지원(이모지 저장 가능)
*/
• 테이블 생성
create table products(
/*
* create table 테이블명(
* 속성1 형식 제약조건,
* 속성2 값형식 제약조건,
*/
/*
* 제약조건
* - NOT NULL : NULL 허용 X
* - AUTO_INCREMENT : 자동 숫자 증가
* - PRIMARY KEY : 기본키(중복허용 X, NULL값 허용 X)
* - DEFAULT : 기본값
* - UNIQUE : 중복 허용 X, NULL 값 허용
*/
ID INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(50) NOT NULL,
MODEL_MODEL VARCHAR(15) NOT NULL,
SERIRES VARCHAR(30) NOT NULL
);
• 생성된 테이블의 속성과 속성에 대한 제약 및 기본키, 외래키를 변경
-- 1. 컬럼 추가
ALTER table products add new_column varchar(20);
-- 2. 특정 컬럼 수정
ALTER table products modify new_column INT;
-- 3. 특정 컬럼 삭제
ALTER Table products DROP new_column;
• 생성된 스키마, 도메인, 테이블, 뷰, 인덱스 등을 삭제
-- 데이터 베이스 제거
DROP DATABASE sesac;
-- 테이블 삭제
DROP TABLE PRODUCTS;
데이터베이스의 내부 데이터를 관리하기 위한 언어
SELECT 속성이름, ... FROM 테이블이름 [WHERE 검색조건]
• 데이터를 검색하는 기본 문장
• 질의어(query) 라고도함
• SQL문 중 가장 많이 사용되는 문법
-- 데이터 조회(READ) select~from
select * from user;
SELECT name from user;
select name,age FROM user;
--where 절로 조건 적용
SELECT * FROM user WHERE age = 40;
SELECT * FROM user WHERE name = 'son';
--order by : 데이터 정렬
--asc(오름차순,디폴트), desc(내림차순)
SELECT * FROM user ORDER BY age DESC;
SELECT * from user where id > 6 ORDER BY age asc;
테이블에 새로운 튜플을 삽입
INSERT INTO 테이블명 (필드1, 필드2,...) VALUES (값1,값2,...);
INSERT INTO 테이블명 VALUES (값1, 값2, 값3,...);
필드를 명시하지 않은 경우 테이블의 모든 컬럼에 값을 순서대로 추가해야 함
insert into user (name, age, address) VALUES('거지',22,NULL);
테이블에서 특정 속성 값 수정
UPDATE 테이블명 SET 필드 = 값 WHERE 조건;
UPDATE user SET name = 'eic2021' WHERE id = 1;
테이블의 기존 튜플을 삭제
DELETE FROM 테이블명 WHERE 필드 = 값;
DELETE FROM user where id =10;
DELETE FROM user; -- 전체 데이터 삭제
TRUNCATE table user;