Tak's Notebook

Kaggle, Machine Learning, Engineering

SQL 初心者のためのクエリ集(更新・構造操作系)

https://qiita.com/takaiyuk/items/38c303c50fdc132bb378

2018-11-11T17:54:33+09:00

2018-11-11T17:54:33+09:00

トピック

  • データの操作ではなく、DBやテーブル自体を更新したり、操作したりする系の基本的なクエリ集です。(自分用メモなので怪しい所が多々あるかもしれない)

  • 以下の記事に基本操作をまとめています(Python コードと並べて)

  • Udemy のこちらのコースで勉強していました。

データの更新

新規データの追加

  • 新規データを1行追加
    • 列リストと、values句の値リストは、数が一致している必要がある。
insert into
    TABLE (COL1, COL2, ...)
values
    (VALUE1, VALUE2, ...)
  • 列リストを省略して新規データを追加
    • テーブルの前列に対して、値を指定する
insert into
    TABLE  -- 3列のテーブルとする
values
    (VALUE1, VALUE2, VALUE3)
  • 複数行を追加
insert into
    TABLE (COL1, COL2, ...)
values
    (VALUE1, VALUE2, ...)
    (VALUE3, VALUE4, ...)
    (VALUE5, VALUE6, ...)

データの更新

  • ある列すべての値を更新
set sql_safe_updates = 0;  -- safe モードの解除。実務ではあまり使わない

update
    TABLE
set
    COL = COL * 0.9;
  • 特定の行のデータだけを更新
update
    TABLE
set
    COL1 = COL1 * 0.9
where
    col2 > 1000;

行の削除

大量のデータ(10万件以上とか)を削除する際には予想以上に時間がかかるので注意

delete from
    TABLE
[where
    条件式]  -- 削除する行の条件を指定できる。指定なしだとテーブルの全行を削除。

DB構造の操作

DBの追加・削除

  • DB確認
show databases;
  • DB追加
    • 半角の英数字とアンダースコアで書く。
    • マジックナンバー命名者しか意味が分からない数字)を使った名前は避ける。
create database 
    DB_NAME;
  • DBの削除
drop database
    DB_NAME;

テーブルの追加・削除・構造変更

  • テーブルの確認
-- use DB_NAME;
show tables;
  • 列の確認
show columns from TABLE;
  • テーブルの新規作成
create table 
    TABLE_NAME(COLNAME1 DATATYPE not null auto_increment primary key,
               COLNAME2 DATATYPE not null);
/*
- not null: null を許可しない
- auto_increment: idを自動的に振る
- primary key: 主キーの設定
*/
  • テーブルの構造変更

テーブルに列の追加

alter table TABLE  -- 変更するテーブル名
add NEW_COL DATATYPE  -- 新しい列の列名とデータ型
after COL;  -- どの列の後ろに置くか

テーブルの列の変更

alter table TABLE 
change OLD_COL NEW_COL DATATYPE;

テーブルの列の削除

alter table TABLE
drop COL;
  • テーブルの削除
drop table 
    TABLE_NAME