MySQL 基本文法2 メモ

並べ替えと抽出

# カラム名で昇順
select * from テーブル名 order by カラム名;

# カラム名で降順
select * from テーブル名 order by カラム名 desc;

# グループ化->抽出
select カラム名 from  テーブル名 group by カラム名 having 条件
select bang,sum(uria) from tb group by bang having sum(uria)>100;

更新

# 指定したカラム名の値すべて変更
update テーブル名 set カラム名=値;

# 条件に一致したレコードのカラムだけ修正
update テーブル名 set カラム名=値 where 条件;

統合

# 基本統合(重複分はunion allで出せる)
(select カラム名 from テーブル名1 where 条件)
union
(select カラム名 from テーブル名2 where 条件);

結合

# 内部結合
select カラム名 from テーブル名1
join 結合するテーブル名2 on テーブル名1.カラム名=テーブル名2.カラム名;

# 左外部結合
select カラム名 from テーブル名1
left join テーブル名2 using(カラム名);

#右外部結合
select カラム名 from テーブル名1
right join テーブル名2 using(カラム名);

サブクエリ

# tb1内のtosiの平均値以上のtosiをもつレコードの抽出
select * from tb1 where tosi >= (select avg(tosi) from tb1);

# tb内のuriaの最大値をもつレコードの抽出
select * from tb where uria in (select max(uria) from tb);

# tbにあってtb1にないやつ以外の情報の中でtb1にあるレコードを抽出
select * from tb1 where exists (select * from tb where tb.bang=tb1.bang);

# tbにあってtb1にないやつの情報の中でtb1にあるレコードを抽出
select * from tb1 where not exists (select * from tb where tb.bang=tb1.bang);

ストアドプロシージャ

# 定義
delimiter //
create procedure pr2(d int)
begin
select * from tb where uria>=d;
end
delimter ;
//

# 呼び出し
call pr2

# 内容表示
show create procedure pr2;

# 削除
drop procedure pr2;

ストアドファンクション

# 定義
delimiter //
create function fu1(sintyo int) returns double
begin
return sintyo * sintyo * 22 / 10000;
end
//
delimiter ;

# 呼び出し
select fu1(174);

# 変数定義
delimiter //
create function fu2() returns double
begin
declare r double;
select avg(uria) into r from tb;
return r;
end
//
delimter ;

# 内容表示
show create function fu2;

# 削除
drop function fu2;

トリガ

# 定義
delimiter //
create trigger tr1 before delete on tb1 for each row
begin
insert into tb1M values (old.bang, old.nama, old.tosi);
end
//
delimiter ;

# 確認
show triggers;

# 削除
drop trigger tr1;

ストレージエンジン

# ストレージエンジンの確認
show create table tb;

トランザクション処理

# トランザクションの開始
start transaction;

# ロールバック
rollback;

# コミット
commit;

# 自動コミットをオフ
set autocommit=0;

# 自動でコミットされる処理
drop database
drop table
drop
alter table

ファイル

# コマンドが書かれたファイルの読み込んで実行
source ファイルのパス

# CSV読み込み
load data infile 'CSVファイルのパス' into table テーブル名 fields terminated by ',';

# CSV書き込み
select * into outfile 'CSVファイルのパス' fields terminated by ',' from テーブル名;

# 実行コマンドと結果をファイルに書き込み開始
## 始まり
tee ファイル名
## 終わり
notee

参考文献

基礎からのMySQL 改訂版 (プログラマの種シリーズ SE必修! )

基礎からのMySQL 改訂版 (プログラマの種シリーズ SE必修! )