【MySQL, SQL】データベースを扱う基本SQL一覧


## データベース操作

### データベースに接続

	mysql -u root -p

* -u ----- 「ユーザを指定する」というオプション
* -u root ----- 「rootユーザで」みたいな意味
* -p ----- 「パスワードを指定してログインする」というオプション


### データベース一覧の表示

	SHOW DATABASES;

![mysql_01.png](https://qiita-image-store.s3.amazonaws.com/0/18615/61f6b35a-4e65-5fcc-3b23-e00121625a67.png "mysql_01.png")


### データベースの作成

	CREATE DATABASE [データベース名];

![mysql_02.png](https://qiita-image-store.s3.amazonaws.com/0/18615/67a72854-dc3d-509a-8880-aaeb7eb3242d.png "mysql_02.png")


### データベースの削除

	DROP DATABASE [データベース名];

![mysql_03.png](https://qiita-image-store.s3.amazonaws.com/0/18615/d396b3d6-99d8-13b3-1f16-6dc8fac18526.png "mysql_03.png")


### 使用するデータベースの選択

	USE [データベース名];

![mysql_04.png](https://qiita-image-store.s3.amazonaws.com/0/18615/74167dde-e5d6-a81e-bcce-7d08b3216b96.png "mysql_04.png")



## テーブル操作
### 前提
利用するデータベースをUSEで選択している必要があります。

### ひとこと
プログラムでデータを扱う際には、CRUD(Create, Read, Update, Delete)の四つの処理を正確に行うことが大切になります。
SQLというデータベースを扱う言語では、このCRUDの処理をそれぞれ「INSERT, SELECT, UPDATE, DELETE」という四つの構文で行うようになっています。
SQLではこの四つの構文をどれだけ使いこなせるかが重要になるので、まずは下記に紹介するような基本的な構文をマスターしましょう。

### テーブル一覧の表示

	SHOW TABLES;

![mysql_05.png](https://qiita-image-store.s3.amazonaws.com/0/18615/a1d8c59b-1c7c-c4ab-0483-5f4905089363.png "mysql_05.png")


### テーブルの作成

	CREATE TABLE [テーブル名] (
		column1 [データ型] [その他オプション],
		column2 [データ型] [その他オプション],
		column3 [データ型] [その他オプション],
	);


![mysql_06.png](https://qiita-image-store.s3.amazonaws.com/0/18615/0f9db59e-3ab8-2fda-452a-17b7ebedf2aa.png "mysql_06.png")

### CREATE TABLE文を確認

	SHOW CREATE TABLE [テーブル名];

### テーブルにデータを挿入(INSERT)

	INSERT INTO `users`(`id`, `name`, `address`, `tel`) VALUES(1, 'nishide', 'Cebu', '080-xxxx-oooo');


![mysql_08.png](https://qiita-image-store.s3.amazonaws.com/0/18615/7bf03902-dfe6-f96f-a5fa-e469d4f9066e.png "mysql_08.png")



### テーブルからデータを取得(SELECT)
#### データがない場合

	SELECT * FROM `users`;


![mysql_07.png](https://qiita-image-store.s3.amazonaws.com/0/18615/a1fc569d-f6cd-c55d-fc52-d9d5e09dbc4c.png "mysql_07.png")


#### データがある場合

	SELECT * FROM `users`;

![mysql_09.png](https://qiita-image-store.s3.amazonaws.com/0/18615/1b29be93-e166-c25f-1b00-d79e18a6f506.png "mysql_09.png")


#### 抽出するデータを一部にする
usersテーブルから、idとnameだけを取得する。

	SELECT `id`, `name` FROM `users`;


![mysql_10.png](https://qiita-image-store.s3.amazonaws.com/0/18615/2a354574-db71-682e-9442-b5aaef2a08e4.png "mysql_10.png")


#### 条件つきでデータを取得
	
	SELECT * FROM `users` WHERE id = 2;

![mysql_11.png](https://qiita-image-store.s3.amazonaws.com/0/18615/ef9130dd-61be-6597-408d-3ede11bcb52c.png "mysql_11.png")



#### 複数の条件で絞り込んでデータを取得

	SELECT * FROM `users` WHERE id > 3 and id < 6;

![mysql_12 .png](https://qiita-image-store.s3.amazonaws.com/0/18615/60c06a5b-eab1-42f8-620e-6b8eef22c33b.png "mysql_12 .png")


#### 並べ替えてデータを取得

	SELECT * FROM `users` ORDER BY id ASC;

![mysql_13.png](https://qiita-image-store.s3.amazonaws.com/0/18615/f2ecc395-bc72-4041-6aba-917a13ad1be1.png "mysql_13.png")


	SELECT * FROM `users` ORDER BY id DESC;

![mysql_14.png](https://qiita-image-store.s3.amazonaws.com/0/18615/7524202c-4f5c-6829-979d-69144f8f76b9.png "mysql_14.png")



### データを更新(UPDATE)

#### データを更新

	UPDATE [テーブル名] SET [COLUMN名] = '新しい値'

[更新前]
![mysql_15.png](https://qiita-image-store.s3.amazonaws.com/0/18615/b05389dc-b26c-4345-0d5e-49406967e197.png "mysql_15.png")


[UPDATE文発行]
![mysql_16.png](https://qiita-image-store.s3.amazonaws.com/0/18615/e1bf907d-de7a-839c-8fd3-2d7e101139e6.png "mysql_16.png")


[更新後]
![mysql_17.png](https://qiita-image-store.s3.amazonaws.com/0/18615/b50172d1-8d1f-1f98-1603-1db0bef1a93f.png "mysql_17.png")


### データを削除(DELETE)

#### データを削除

	DELETE FROM [テーブル名] WHERE [条件]

[削除前]
![mysql_18.png](https://qiita-image-store.s3.amazonaws.com/0/18615/d69a6bb4-10bf-388d-416a-48e7a47de2a8.png "mysql_18.png")


[DELETE文発行]
![mysql_19.png](https://qiita-image-store.s3.amazonaws.com/0/18615/2f599e7e-5770-0ae3-c738-aa6ff5af1250.png "mysql_19.png")


[削除後]
![mysql_20.png](https://qiita-image-store.s3.amazonaws.com/0/18615/391a0ee1-559c-4b70-3a9d-cd6073694e38.png "mysql_20.png")



### postsテーブルの作成

    CREATE TABLE `posts`(
 	   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 	   `user_id` int(10) unsigned NOT NULL,
 	   `post` varchar(512) NOT NULL,
 	   PRIMARY KEY (`id`)
    );
    

### postsテーブルにサンプルデータをインサート

	INSERT INTO `posts`(
		`user_id`,
		`post`
	) VALUES (
		1,
		'hogehoge fugafuga なんやで'
	);


### データベースをリレーションしてデータを取得

	SELECT
		post.id AS post_id,
		user.name AS create_user,
		post.post AS post
	FROM 
		posts AS post,
		users AS user
	WHERE
		post.user_id = user.id;