SQLの基礎

# SQLの基礎

SQL（Structured Query Language）は、リレーショナルデータベースの管理と操作を行うための言語です。この記事では、SQLの基本的な構文や操作について説明します。

## 1. SQLの基本構文

SQLの基本的な構文は以下の通りです。ここでは、データの選択、挿入、更新、削除の各操作について説明します。

### データの選択（SELECT文）

```sql
SELECT column1, column2, ...
FROM table_name
WHERE condition;
```

例：

```sql
SELECT name, age
FROM employees
WHERE age > 30;
```

### データの挿入（INSERT文）

```sql
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
```

例：

```sql
INSERT INTO employees (name, age, department)
VALUES ('John Doe', 25, 'Sales');
```

### データの更新（UPDATE文）

```sql
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
```

例：

```sql
UPDATE employees
SET age = 26
WHERE name = 'John Doe';
```

### データの削除（DELETE文）

```sql
DELETE FROM table_name
WHERE condition;
```

例：

```sql
DELETE FROM employees
WHERE name = 'John Doe';
```

## 2. テーブルの作成と削除

SQLでは、テーブルの作成と削除も行うことができます。

### テーブルの作成（CREATE TABLE文）

```sql
CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    ...
);
```

例：

```sql
CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT,
    department VARCHAR(50)
);
```

### テーブルの削除（DROP TABLE文）

```sql
DROP TABLE table_name;
```

例：

```sql
DROP TABLE employees;
```

## 3. テーブルの変更

テーブルの構造を変更するためには、ALTER TABLE文を使用します。

### 列の追加

```sql
ALTER TABLE table_name
ADD column_name datatype;
```

例：

```sql
ALTER TABLE employees
ADD email VARCHAR(50);
```

### 列の削除

```sql
ALTER TABLE table_name
DROP COLUMN column_name;
```

例：

```sql
ALTER TABLE employees
DROP COLUMN email;
```

### 列の変更

```sql
ALTER TABLE table_name
MODIFY COLUMN column_name datatype;
```

例：

```sql
ALTER TABLE employees
MODIFY COLUMN age SMALLINT;
```

## 4. データの集計

SQLでは、データを集計するための関数がいくつか提供されています。以下に主要な集計関数を示します。

### COUNT

```sql
SELECT COUNT(column_name)
FROM table_name
WHERE condition;
```

例：

```sql
SELECT COUNT(*)
FROM employees
WHERE department = 'Sales';
```

### SUM

```sql
SELECT SUM(column_name)
FROM table_name
WHERE condition;
```

例：

```sql
SELECT SUM(salary)
FROM employees
WHERE department = 'Sales';
```

### AVG

```sql
SELECT AVG(column_name)
FROM table_name
WHERE condition;
```

例：

```sql
SELECT AVG(age)
FROM employees;
```

### MAX

```sql
SELECT MAX(column_name)
FROM table_name
WHERE condition;
```

例：

```sql
SELECT MAX(salary)
FROM employees;
```

### MIN

```sql
SELECT MIN(column_name)
FROM table_name
WHERE condition;
```

例：

```sql
SELECT MIN(age)
FROM employees;
```

## 5. データの結合

複数のテーブルからデータを取得するためには、JOIN文を使用します。以下に主要な結合の種類を示します。

### INNER JOIN

```sql
SELECT columns
FROM table1
INNER JOIN table2
ON table1.column = table2.column;
```

例：

```sql
SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments
ON employees.department_id = departments.id;
```

### LEFT JOIN

```sql
SELECT columns
FROM table1
LEFT JOIN table2
ON table1.column = table2.column;
```

例：

```sql
SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.id;
```

### RIGHT JOIN

```sql
SELECT columns
FROM table1
RIGHT JOIN table2
ON table1.column = table2.column;
```

例：

```sql
SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments
ON employees.department_id = departments.id;
```

### FULL JOIN

```sql
SELECT columns
FROM table1
FULL JOIN table2
ON table1.column = table2.column;
```

例：

```sql
SELECT employees.name, departments.department_name
FROM employees
FULL JOIN departments
ON employees.department_id = departments.id;
```

## まとめ

以上が、SQLの基本的な構文と操作についての概要です。SQLは非常に強力で柔軟な言語であり、データベースの管理やデータの操作を効率的に行うことができます。基本を押さえておくことで、データ分析やアプリケーション開発において非常に役立つスキルとなります。