【MySQL】SQL(テーブル操作：作成・表示・構造変更・取得・更新・削除)

# 概要
基本的なSQLを備忘録として記載する。
※MySQL5.7を想定

# 作成(CREATE)
## テーブルを作成する
```sql
CREATE TABLE db_name.tbl_name (col_name data_type, ...);

/* 例 */
CREATE TABLE sample_db.sample_table_001 (id int);
```

```sql
/* use　文でデータベース選択済みの場合 */
use db_name;
CREATE TABLE db_name.tbl_name (col_name data_type, ...);

/* 例　*/
use sample_db;
CREATE TABLE sample_table_002 (id int);
```

## インデックスを作成
```sql
CREATE INDEX index_name ON db_name.table_name (col_name, ...);

/* 例 */
CREATE INDEX index_id ON sample_db.sample_table_001 (id);
```

```sql
/* use　文でデータベース選択済みの場合 */ 
use db_name;
CREATE INDEX index_name ON table_name (col_name, ...);

/* 例 */
use sample_db;
CREATE INDEX index_id ON sample_table_001 (id);
```

# 表示(SHOW)
## テーブル一覧表示
```sql
SHOW TABLES FROM db_name;

/* 例 */
SHOW TABLES FROM sample_db;
```

```sql
/* use　文でデータベース選択済みの場合 */
use db_name;
SHOW TABLES;

/* 例 */
use sample_db;
SHOW TABLES;
```

## テーブルのカラム情報を表示
```sql
SHOW COLUMNS FROM db_name.table_name;

/* 例 */
SHOW COLUMNS FROM sample_db.sample_table_001;
```

```sql
/* use　文でデータベース選択済みの場合 */
use db_name;
SHOW COLUMNS FROM table_name;

/* 例 */
use sample_db;
SHOW COLUMNS FROM sample_table_001;
```

# テーブル構造を変更(ALTER)
## カラムを追加
```sql
ALTER TABLE table_name ADD col_name column_definition

/* 例 */
ALTER TABLE sample_table_001 ADD name varchar(10);
```

# データの挿入(INSERT文)
```sql
INSERT INTO db_name.table_name (col_name1, col_name2, ...) VALUES (value1, value2, ...)

/* 例 */
INSERT INTO sample_db.sample_table_001 (id, name) VALUES (1, 'Taro');
```

```sql
/* use　文でデータベース選択済みの場合 */
use db_name;
INSERT INTO table_name (col_name1, col_name2, ...) VALUES (value1, value2, ...)

/* 例 */
use sample_db;
INSERT INTO sample_table_001 (id, name) VALUES (1, 'Taro');
```

# 取得(SELECT文)
## 全てのカラムデータを取得する
```sql
SELECT * FROM db_name.table_name;

/* 例　*/
SELECT * FROM sample_db.sample_table_001;
```

```sql
/* use　文でデータベース選択済みの場合 */
use db_name;
SELECT * FROM table_name;

/* 例 */
use sample_db;
SELECT * FROM sample_table_001;
```

## 指定のカラムデータを取得する
```sql
SELECT col_name1, col_name2... FROM db_name.table_name;

/* 例 */
SELECT id, name FROM sample_db.sample_table_001;
```

```sql
/* use　文でデータベース選択済みの場合 */
use db_name;
SELECT col_name1, col_name2... FROM table_name;

/* 例 */
use sample_db;
SELECT id, name FROM sample_table_001;
```

# 更新(UPDATE)
## 条件に一致するデータを更新
```sql
UPDATE db_name.table_name SET col_name1 = value1 [, col_name2 = value2, ...] WHERE where_condition;

/* 例 */
UPDATE sample_db.sample_table_001 SET name = 'Takeshi' WHERE name = 'Taro';
```

```sql
/* use　文でデータベース選択済みの場合 */
use db_name;
UPDATE db_name.table_name SET col_name1 = value1 [, col_name2 = value2, ...]

/* 例 */
use sample_db;
UPDATE sample_db.sample_table_001 SET name = 'Taro' WHERE name = 'Takeshi';
```

# 削除(DELETE)
## 条件に一致するデータを削除する
```sql
DELETE FROM db_name.table_name [WHERE where_condition]

/* 例 */
DELETE FROM sample_db.sample_table_001 WHERE name = 'Taro';
```

# 削除(DROP)
## テーブルを削除する
```sql
DROP TABLE db_name.table_name;

/* 例 */
DROP TABLE sample_db.sample_table_001;
```

```sql
/* use　文でデータベース選択済みの場合 */
use db_name;
DROP TABLE table_name;

/* 例 */
use sample_db;
DROP TABLE sample_table_002;
```

## インデックスを削除
```sql
DROP INDEX index_name ON db_name.table_name;

/* 例 */
DROP INDEX index_id ON sample_db.sample_table_001;
```

```sql
/* use　文でデータベース選択済みの場合 */ 
use db_name;
DROP INDEX index_name ON db_name.table_name;

/* 例 */
use sample_db;
DROP INDEX index_id ON sample_table_001;
```


# その他メモ
```sql
/* 非表形式でテーブル情報を表示 */
SHOW TABLES FROM sample_db\G -- 大文字のGである必要あり

/* 非表形式でカラムデータを取得 */
SELECT * FROM sample_db.sample_table_001\G
```