SELECT
SELECT * FROM employees WHERE department = 'Sales';
INSERT
INSERT INTO employees (name, department, salary) VALUES ('John Doe', 'Sales', 50000);
UPDATE
UPDATE employees SET salary = 60000 WHERE name = 'John Doe';
DELETE
DELETE FROM employees WHERE name = 'John Doe';
CREATE TABLE
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
department VARCHAR(50),
salary INT
);
ALTER TABLE
ALTER TABLE employees ADD COLUMN email VARCHAR(100);DROP TABLE
DROP TABLE employees;
스키마 (Schema)
테이블 (Table)
열 (Column)
행 (Row)
키 (Key)
헤더 (Header)
데이터 레코드
name,age,department
John Doe,30,Sales
Jane Smith,25,Marketing
객체 (Object)
{}로 감싸진 속성-값 쌍의 집합입니다.{
"name": "John Doe",
"age": 30,
"department": "Sales"
}배열 (Array)
[]로 감싸진 값들의 순서 있는 집합입니다.[
{
"name": "John Doe",
"age": 30,
"department": "Sales"
},
{
"name": "Jane Smith",
"age": 25,
"department": "Marketing"
}
]값 (Value)
null이 될 수 있습니다.
1xx 상태 코드는 서버가 요청을 수신했으며, 처리가 계속되고 있음을 나타냅니다.
2xx 상태 코드는 클라이언트의 요청이 성공적으로 수신되어 이해되었고 처리되었음을 나타냅니다.
3xx 상태 코드는 클라이언트가 요청한 리소스를 다른 위치에서 가져와야 함을 나타냅니다.
4xx 상태 코드는 클라이언트의 요청에 오류가 있음을 나타냅니다.
5xx 상태 코드는 서버가 요청을 처리하는 도중 오류가 발생했음을 나타냅니다.
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import java.io.FileWriter;
import java.io.IOException;
public class ApacheCommonsCSVExample {
public static void main(String[] args) throws IOException {
FileWriter out = new FileWriter("example.csv");
try (CSVPrinter printer = new CSVPrinter(out, CSVFormat.DEFAULT)) {
printer.printRecord("ID", "Name", "Age");
printer.printRecord("1", "John Doe", "30");
printer.printRecord("2", "Jane Smith", "25");
}
}
}
import com.opencsv.CSVWriter;
import java.io.FileWriter;
import java.io.IOException;
public class OpenCSVExample {
public static void main(String[] args) throws IOException {
String csv = "example.csv";
CSVWriter writer = new CSVWriter(new FileWriter(csv));
String[] header = {"ID", "Name", "Age"};
writer.writeNext(header);
String[] record1 = {"1", "John Doe", "30"};
writer.writeNext(record1);
String[] record2 = {"2", "Jane Smith", "25"};
writer.writeNext(record2);
writer.close();
}
}
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
import com.fasterxml.jackson.dataformat.csv.CsvSchema;
import java.io.File;
import java.io.IOException;
public class JacksonCSVExample {
public static void main(String[] args) throws IOException {
CsvMapper mapper = new CsvMapper();
CsvSchema schema = CsvSchema.builder().addColumn("ID").addColumn("Name").addColumn("Age").build().withHeader();
Object[] users = new Object[]{
new User("1", "John Doe", "30"),
new User("2", "Jane Smith", "25")
};
mapper.writerFor(User[].class).with(schema).writeValue(new File("example.csv"), users);
}
}
class User {
public String ID;
public String Name;
public String Age;
public User(String ID, String Name, String Age) {
this.ID = ID;
this.Name = Name;
this.Age = Age;
}
}
| 특성/라이브러리 | Apache Commons CSV | OpenCSV | Jackson CSV |
|---|---|---|---|
| 단순성 | 높음 | 중간 | 중간 |
| 유연성 | 높음 | 높음 | 높음 |
| 성능 | 높음 | 중간 | 높음 |
| POJO 매핑 | 지원 안 함 | 애노테이션 사용 | 강력한 데이터 바인딩 |
| 통합성 | 단일 기능에 집중 | 단일 기능에 집중 | 다양한 데이터 포맷 지원 |
| 사용 예시 | 단순 CSV 파일 읽기/쓰기 | POJO와 매핑된 CSV 처리 | Jackson 생태계와의 통합 |