LoginSignup
77
88

More than 3 years have passed since last update.

MySQL基本コマンド一覧まとめ

Last updated at Posted at 2017-05-02

大文字小文字が混ざっていることに関しては、気にしないで下さい。
間違いがあれば、編集リクエストをお願いします!

MySQLの起動

mysql -u ユーザー名;

mysql -u root;
(ユーザー名:root)

mysql -u root -p;
(パスワード付きログイン)

MySQL起動時にパスワードを付与

set password for root@localhost=password('設定したいパスワード');
(ユーザー名:root、サーバ:localhost)

データベースを作成

CREATE DATABASE データベース名;

データベースに権限を付与

grant all on (データベース名).* to 'dbuser'@'localhost' identified by '設定したいパスワード';
(ユーザー名:dbuser、サーバ:localhost)

使うデータベースを切り替える

USE データベース名;

現在のデータベースを確認

SELECT DATABASE();

データベースの中身(一覧)を確認

SHOW DATABASES;

データベースを削除

DROP DATABSE データベース名;

テーブルを作成

CREATE TABLE テーブル名(
カラム名 型 その他,
カラム名 型 その他
);

例:

sample.sql
create table item_category (
category_id int auto_increment not null primary key,
category_name varchar(256) not null 
);

テーブルを削除

DROP TABLE テーブル名;

テーブルの定義を確認

DESC テーブル名;

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

INSERT INTO テーブル名(カラム名,カラム名,...)VALUES(データ, データ),(データ,'データ');

例:
insert into item_category(category_id, category_name) values (1,”家具”), (2,”飲料”), (3,”食品”);

作ったテーブルを見る

show tables; (全てのテーブル)

テーブルの構造を見る

DESC テーブル名;
show columns from テーブル名;

値(データ)を更新

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

値(データ)を削除

DELETE FROM [テーブル名] WHERE カラム名 = 値;

例:
DELETE FROM user WHERE id = 10;

外部キー制約の確認

SHOW CREATE TABLE テーブル名;

外部キー制約の追加

alter table テーブル名 add foreign key (カラム名) references 外部キーを付与したいテーブル名(カラム名);

例:
alter table item_list add foreign key (category_id) references item_category(category_id);

テーブル作成と同時に主キー、外部キー制約を追加

CREATE TABLE テーブル名(
test_no INT NOT NULL,
minitest VARCHAR(20),
time INT,
classroom_id VARCHAR(10),
PRIMARY KEY(test_no),
FOREIGN KEY(classroom_id) REFERENCES classrooms(classroom_id)
);

テーブル結合(内部結合)

SELECT
    テーブル名.カラム名,(続く)
FROM
    テーブル名 INNER JOIN 結合したいテーブル名
    ON テーブル名.列名 = テーブル名.列名;

例:shopテーブルとitemテーブル、item_idが主キーと外部キーの場合

SELECT
  shop.shop_name,
  shop.item_id, 
  item.item_name, 
  item.price, 
  shop.quantity 
FROM
  shop INNER JOIN item 
ON
  shop.item_id = item.item_id;

テーブル結合(外部結合)

$ SELECT
    テーブル名.カラム名,(続く)
FROM
    テーブル名 LEFT (OUTER) JOIN 結合したいテーブル名
    ON テーブル名.列名 = テーブル名.列名;

OUTERはつけても、つけなくてもOK。

サブクエリ

SELECT文の中にSELECT文を使う検索

SELECT
    テーブル名1.カラム名,
    テーブル名1.カラム名,
    テーブル名2.カラム名,
    テーブル名3.カラム名,
    テーブル名3.カラム名
  FROM
   テーブル名2 INNER JOIN テーブル名3
   ON テーブル名1.カラム名 = テーブル名2.カラム名
  WHERE
   テーブル名3.カラム名 IN (
      SELECT カラム名
      FROM カラム名
      WHERE 検索したいカラム名 = 値
  );

例:

SELECT
 students.student_name,
 students.company_name,
 tests.minitest,
 testData.times,
 testData.test_date,
 testData.score
FROM tests
INNER JOIN testData
 ON tests.test_no = testData.test_no
INNER JOIN students
 ON testData.student_no = students.student_no
WHERE
    testData.student_no IN (
    SELECT student_no
    FROM students
    WHERE student_name = '鈴木一郎'
);

エイリアス

テーブルにSQL内でのみ扱える別名をつける

SELECT
    A.カラム名,
    B.カラム名,
    C.カラム名
  FROM
    Aをつけたいテーブル名 A INNER JOIN Bをつけたいテーブル名 B
        ON A.カラム名 = B.karamumei
    INNER JOIN Cをつけたいテーブル名   C
        ON B.カラム名 = C.カラム名;

例:

select
 s.student_name,
 s.company_name,
 t.minitest,
 td.times,
 td.test_date,
 td.score
from tests as t inner join testData as td
 on t.test_no = td.test_no
inner join (
 select student_no, student_name, company_name
 from students
 where student_name = '鈴木一郎'
) s
on td.student_no = s.student_no;

ソート(並び替え)

SELECT * FROM テーブル名 ORDER BY カラム名 ASC(DESC);

昇順:ASC
降順:DESC

グルーピング(指定したカラムでまとめる)

SELECT カラム名 FROM テーブル名 GROUP BY カラム名;

集約関数(計算した結果を表示、合計や平均、最大値など)

SELECT MAX(カラム名) FROM テーブル名;

あいまいな検索(ワイルドカード)

SELECT * FROM テーブル名 WHERE カラム名 LIKE '%テスト%';

カラムからテストとつくデータを抽出
%と_が使える
1. 部分一致
2. 前方一致
3. 後方一致

77
88
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
77
88