1. 데이터베이스(Database)와 테이블(Table)
데이터베이스(Database): 여러 테이블을 포함하는 큰 틀입니다.
테이블(Table): 데이터가 행(row)과 열(column)로 구성된 구조로 저장되는 곳입니다. 각 행은 하나의 데이터 레코드를 나타내며, 각 열은 데이터의 속성을 나타냅니다.
열= 컬럼=필드
SQL에서는 데이터베이스와 테이블을 생성하고, 데이터를 조회, 삽입, 수정, 삭제하는 등의 작업을 수행할 수 있습니다.
DDL data definition language : 데이터베이스의 구조를 정의하고 관리하는 명령어이다.
주요명령어
CREATE 테이블, 데이터베이스, 인덱스 등을 생성한다
ALTER 기존의 테이블이나 객체를 수정 한다
DROP 테이블, 데이터베이스 등을 삭제한다 (구조까지 삭제)
TRUNCATE 테이블의 데이터를 모두 삭제한다(구조는 유지)
DML data manipulation language 데이터베이스의 데이터를 조작하는 명령어이다.
주요명령어
INSERT 데이터를 추가한다.
UPDATE 데이터를 수정한다
DELETE 데이터를 행단위로 삭제한다
SELECT 데이터를 조회한다
DCL data control language 데이터베이스의 접근 권한을 관리하는 명령어이다.
GRANT 사용자에게 특정권한을 부여한다.
REVOKE 사용자로부터 권한을 회수한다
데이터베이스를 새로 생성할 때는 CREATE DATABASE 명령어를 사용합니다.
CREATE DATABASE First_database
예약어, 숫자로시작, 공백 불가
테이블을 생성할 때는 CREATE TABLE 명령어를 사용합니다.
CREATE TABLE 테이블이름 ( 컬럼1 데이터타입, 컬럼2 데이터타입, ... );
CREATE TABLE students ( id INT, name VARCHAR(50), age INT );
해석 : students 라는 이름의 테이블을 생성합니다. 이 테이블에는 세 개의 열이 있습니다:
id: 정수형 데이터를 저장하는 열 (INT).
name: 최대 50자까지의 문자열을 저장할 수 있는 열 (VARCHAR(50)).
age: 정수형 데이터를 저장하는 열 (INT).
AUTO_INCREMENT 자동으로 고유한값이 증가하여 행에추가된다.
order_id INT AUTO INCREMENT,
테이블에서 데이터를 조회할 때는 SELECT 명령어를 사용합니다.
SELECT 컬럼1, 컬럼2, ... FROM 테이블이름;
SELECT name, age FROM students; //students 테이블에서 name과 age 열의 데이터를 조회합니다.
WHERE 절: 특정 조건에 맞는 데이터만 조회합니다.
SELECT name, age FROM students WHERE age > 20; //students 테이블에서 age 값이 20보다 큰 학생들의 name과 age를 조회합니다.
ORDER BY 절: 조회한 데이터를 정렬합니다.
SELECT name, age FROM students ORDER BY age DESC; //students 테이블에서 name과 age를 조회하되, age를 기준으로 내림차순(DESC)으로 정렬합니다. 즉, 나이가 많은 학생부터 순서대로 정렬됩니다.
LIMIT 절: 조회할 데이터의 개수를 제한합니다.
SELECT name, age FROM students LIMIT 5; //students 테이블에서 name과 age를 조회하되, 최대 5개의 행만 조회합니다.
LIMIT 5 OFFSET 10 = 11번째 행부터 시작해서 5개의 행만 반환한다.
LIMIT절은 보통 ORDER BY 와 함께 사용한다.
ORDER BY AGE DESC
LIMIT 3; //나이가많은 세명조회
테이블에 새로운 데이터를 추가할 때는 INSERT INTO 명령어를 사용합니다.
INSERT INTO 테이블이름 (컬럼1, 컬럼2, ...) VALUES (값1, 값2, ...)
//예시 INSERT INTO students (id, name, age) VALUES (1, 'Alice', 23);
기존 데이터를 수정할 때는 UPDATE 명령어를 사용합니다.
UPDATE 테이블이름 SET 컬럼1 = 값1, 컬럼2 = 값2 WHERE 조건;
//예시 UPDATE students SET age = 24 WHERE id = 1; //students 테이블에서 id가 1인 학생의 age 값을 24로 수정
테이블에서 데이터를 삭제할 때는 DELETE FROM 명령어를 사용합니다.
DELETE FROM 테이블이름 WHERE 조건;
DELETE FROM students WHERE id = 1 //students 테이블에서 id가 1인 행을 삭제
기본 키(Primary Key): 테이블에서 각 행을 고유하게 식별하는 열(또는 열의 조합)입니다.
외래 키(Foreign Key): 다른 테이블의 기본 키를 참조하는 열로, 테이블 간의 관계를 나타냅니다.
CREATE TABLE orders ( order_id INT PRIMARY KEY, student_id INT, FOREIGN KEY (student_id) REFERENCES students(id) );
해석 : orders 라는 이름의 테이블을 생성합니다. 이 테이블에는 두 개의 열이 있습니다:
order_id: 정수형 데이터를 저장하는 열로, 이 열이 기본 키(PRIMARY KEY)입니다. 즉, orders 테이블의 각 행을 고유하게 식별합니다.
student_id: 정수형 데이터를 저장하는 열로, students 테이블의 id를 참조하는 외래 키(FOREIGN KEY)입니다. 이를 통해 orders 테이블의 각 주문이 어떤 학생과 관련이 있는지를 나타낼 수 있습니다.
기본키는 각 테이블의 데이터를 고유하게 정의한다. null값을 허용하지 않는다.
외래키는 테이블 간의 관계를 연결하며, 데이터간의 관계를 나타낸다.
4. 집계 함수(Aggregate Functions)
집계 함수는 여러 행의 값을 계산하여 하나의 결과를 반환하는 함수입니다.
SELECT COUNT(*) FROM students;
SELECT SUM(age) FROM students;
SELECT AVG(age) FROM students;
SELECT MAX(age) FROM students;
SELECT MIN(age) FROM students;
AND: 두 조건이 모두 참일 때 사용합니다.
SELECT * FROM students WHERE age > 20 AND name = 'Alice';
OR: 두 조건 중 하나만 참이면 사용합니다.
SELECT * FROM students WHERE age > 20 OR name = 'Bob';
SELECT * FROM students WHERE NOT age > 20;
새로배운내용
ddl, dml, dcl
데이터 삽입 명령어 insert into table1(값1,값2...) value(값1, 값2...)
데이터 수정 명령어 update 테이블이름 set 컬럼1 = 값1 where조건
데이터 삭제 명령어(행단위로삭제) delete from 테이블 이름 where 조건
기본키는 각 테이블의 데이터를 고유하게 정의한다. null값을 허용하지 않는다.
외래키는 테이블 간의 관계를 연결하며, 데이터간의 관계를 나타낸다.
CREATE TABLE users (
user_id INT PRIMARY KEY,
name VARCHAR(100)
);
CREATE TABLE orders (
order_id INT PRIMARY KEY,
user_id INT,
order_date DATE,
FOREIGN KEY (user_id) REFERENCES users(user_id)
);
join us 구문은 외래키를 위함인가?
꼭 그렇지는 않다. 외래키 설정 없이도 join us 구문 사용가능하다.
다만 기본키와 외래키 설정을 통해 테이블 간의 관계를 일관되고 정확하게 유지할 수 있다.
참조 무결성 데이터베이스 관리에서 매우 중요한 개념.