Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

データベース操作

データベースに接続

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

データベース一覧の表示

SHOW DATABASES;

mysql_01.png

データベースの作成

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

mysql_02.png

データベースの削除

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

mysql_03.png

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

USE [データベース名];

mysql_04.png

テーブル操作

前提

利用するデータベースをUSEで選択している必要があります。

ひとこと

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

テーブル一覧の表示

SHOW TABLES;

mysql_05.png

テーブルの作成

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

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

テーブルからデータを取得(SELECT)

データがない場合

SELECT * FROM `users`;

mysql_07.png

データがある場合

SELECT * FROM `users`;

mysql_09.png

抽出するデータを一部にする

usersテーブルから、idとnameだけを取得する。

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

mysql_10.png

条件つきでデータを取得

SELECT * FROM `users` WHERE id = 2;

mysql_11.png

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

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

mysql_12 .png

並べ替えてデータを取得

SELECT * FROM `users` ORDER BY id ASC;

mysql_13.png

SELECT * FROM `users` ORDER BY id DESC;

mysql_14.png

データを更新(UPDATE)

データを更新

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

[更新前]
mysql_15.png

[UPDATE文発行]
mysql_16.png

[更新後]
mysql_17.png

データを削除(DELETE)

データを削除

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

[削除前]
mysql_18.png

[DELETE文発行]
mysql_19.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;
knife0125
東南アジアでスタートアップする会社のお手伝いとかをしています。 FabLabなどのアジアの活動の支援もしています。 フィリピン人の優秀なエンジニアの採用・管理などの経験もあります。
http://knife0125.net
awesome_ars_academia
アジアに5ヶ国7拠点1300人で活動するソフトウェア・アプリ開発会社が提供する「英語」と「プログラミング」が学べるグローバルテックスクール。アジア各国の大学へIT教育も提供し、年間に育成するエンジニアは1000名以上。21世紀を変えるテクノロジーを多国籍環境で学べるグローバルテックスクールです。
https://awesome-ars-academia.net/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした