Edited at

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

大文字小文字が混ざっていることに関しては、気にしないで下さい。

間違いがあれば、編集リクエストをお願いします!


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. 後方一致