조건에 맞는 데이터를 찾기 위한 식별자
관계형 데이터베이슨 테이블처럼 데이터를 관리
각각의 행들을 특정 지을 수 있는 속성 == 기본 키
중복되어서는 안되고 고유, Null 이어서는 안된다. 때로는 여러 열을 묶어 하나의 기본 키로 삼기도 한다.
두 테이블을 연관시키는 것
CREATE DATABASE my_database;
SHOW SCHEMAS;
# 또는
SHOW DATABASES;
USE my_database; # 해당 데이터 베이스를 사용해야 데이터베이스에 테이블 생성이 가능
DROP DATABASE my_database;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY, -- 고유 ID (자동 증가)
username VARCHAR(50) NOT NULL, -- 사용자명 (필수 입력)
email VARCHAR(100) NOT NULL, -- 이메일 (필수 입력)
password VARCHAR(100) NOT NULL, -- 비밀번호 (필수 입력)
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- 생성 시간 (기본값 현재 시간)
);
SHOW TABLES;
DESCRIBE table_name; # 테이블 구조 조회
RENAME TABLE old_table_name TO new_table_name; # 테이블 이름 변경
# 컬럼 추가
ALTER TABLE table_name
ADD COLUMN new_column_name VARCHAR(100) NOT NULL;
#컬럼 수정
ALTER TABLE table_name
MODIFY COLUMN column_name new_data_type;
#컬럼 타입 변경
ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name new_data_type;
# 컬럼 삭제
ALTER TABLE table_name
DROP COLUMN column_name;
# 컬럼에 키 추가
ALTER TABLE table_name
ADD PRIMARY KEY (column_name);
# 컬럼에 인덱스 추가
ALTER TABLE table_name
ADD INDEX index_name (column_name);
#컬럼에 인덱스 삭제
ALTER TABLE table_name
DROP INDEX index_name;
# 테이블 이름 변경
ALTER TABLE old_table_name
RENAME TO new_table_name;
# 구조는 남기고 내용 모두 삭제
TRUNCATE TABLE table_name;
# 구조까지 완전삭제
DROP TABLE table_name;
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
SELECT column1, column2, ...
FROM table_name
WHERE condition
ORDER BY column1 ASC|DESC
LIMIT number;
SELECT COUNT(*) FROM users; # 행의 갯수
SELECT SUM(salary) FROM employees; # 특정 열의 행들의 합
SELECT AVG(salary) FROM employees;
SELECT MAX(salary) FROM employees;
SELECT MIN(salary) FROM employees;
SELECT * FROM users
WHERE name LIKE 'A%'; # A로 시작하는 데이터
SELECT * FROM users
WHERE name LIKE '_a%'; # 두번째 문자가 a로 시작하는 데이터
SELECT * FROM users
WHERE email LIKE '%@example.com'; # @example.com 으로 끝나는 데이터
SELECT column1, AGGREGATE_FUNCTION(column2)
FROM table_name
GROUP BY column1;
#부서별로 직원 수를 계산:
SELECT department, COUNT(*)
FROM employees
GROUP BY department;
SELECT column1, AGGREGATE_FUNCTION(column2)
FROM table_name
GROUP BY column1
HAVING AGGREGATE_FUNCTION(column2) condition;
#직원이 10명 이상인 부서만 조회:
SELECT department, COUNT(*)
FROM employees
GROUP BY department
HAVING COUNT(*) >= 10;
#orders 테이블에서 total_amount가 모든 order_amount보다 큰 고객 찾기:
SELECT customer_id
FROM customers
WHERE total_amount > (SELECT MAX(order_amount) FROM orders);
#departments 테이블에 존재하지 않는 부서의 employees 데이터 찾기:
SELECT name
FROM employees
WHERE department_id NOT IN (SELECT id FROM departments);
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
#users 테이블에서 id가 1인 사용자의 email을 수정:
UPDATE users
SET email = 'new_email@example.com'
WHERE id = 1;
DELETE FROM table_name
WHERE condition;
# age가 18 이하인 사용자 삭제
DELETE FROM users
WHERE age <= 18;