mysqlコマンド(コメント・CRUD編)

linux

大体は覚えているけど、たまーに構文を忘れてしまったりするときの為のメモ。全部入れると長くなるので、この記事はテーブルに関連するCRUDのみ。

更新・削除に関しては失敗するとリストアが大変だったり、最悪バックップ取っていなくて復旧不可なんて事もあるので、実際コマンド実行前によく確認しましょう。

コメント

-- これは1行コメント
# これも1行コメント
/*
これは複数行に
またがって書ける
コメント
*/

CREATE TABLE

CREATE TABLE `hoge` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `hoge_bool`      bool          DEFAULT 0    COMMENT 'bool',
  `hoge_tint`      tinyint       DEFAULT NULL COMMENT 'tinyint',
  `hoge_int`       int           DEFAULT NULL COMMENT 'int',
  `hoge_uint`      int unsigned  DEFAULT NULL COMMENT 'int unsigned',
  `hoge_bint`      bigint        DEFAULT NULL COMMENT 'bigint',
  `hoge_float`     float         DEFAULT NULL COMMENT 'float',
  `hoge_double`    double        DEFAULT NULL COMMENT 'double',
  `hoge_decimal`   decimal(16,4) DEFAULT NULL COMMENT 'decimal',
  `hoge_char`      char(20)      DEFAULT NULL COMMENT 'char',
  `hoge_varchar`   varchar(2000) DEFAULT NULL COMMENT 'varchar',
  `hoge_text`      text          DEFAULT NULL COMMENT 'text',
  `hoge_blob`      blob          DEFAULT NULL COMMENT 'blob',
  `hoge_date`      date          DEFAULT NULL COMMENT 'date',
  `hoge_datetime`  datetime      DEFAULT NULL COMMENT 'datetime',
  `hoge_timestamp` timestamp     DEFAULT NULL COMMENT 'timestamp',
  PRIMARY KEY (`id`),
  UNIQUE KEY `u_key1` (`hoge_char`),
  KEY `key1` (`hoge_date`,`hoge_int`),
  FULLTEXT KEY `ft_key1` (`hoge_varchar`,`hoge_text`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='table comment';

ALTER TABLE

# カラムの追加
ALTER TABLE `table_neme` add column `add_column_name` varchar(50) DEFAULT NULL COMMENT 'COMMENT MESSAGE HERE' after `base_colmun_name`;
# カラム内容の変更(カラム名変更や型の変更)
ALTER TABLE `table_name` change column `before_column_name` `after_column_name` text DEFAULT NULL COMMENT 'COMMENT MESSAGE here';
# カラム削除
ALTER TABLE `table_name` drop `column_name`;

CREATE INDEX

# インデックスの場合
CREATE INDEX `index_name` ON `table_name` (`column1`);
# フルテキストインデックスの場合
CREATE FULLTEXT INDEX `index_name` ON `table_name`  (`column1`,`column2`) WITH PARSER ngram;

SELECT

SELECT hoge.*, fuga.*
FROM hoge
INNER JOIN fuga
  ON hoge.id = fuga.hoge_id
WHERE hoge.hoge_date > '2020-01-01'
AND hoge.hoge_bool = 1

UPDATE

updateは間違ったものを更新しないように条件をよく確認すること。

UPDATE hoge set hoge_bool=0, hoge_date=now(), hoge_datetime=now()
WHERE id=1;

DELETE

DELETEも間違ったものを削除しないように条件をよく確認すること

DELETE FROM hoge
WHERE id=1;

TRUNCATE

DELETEと異なるのは、AUTO INCREMENTでINDEXを張っている場合はリセットされるのと、トランザクションが張れないので巻き戻し(rollback)が不可な点。テストなどでゴミデータがたまって掃除する時など用。

TRUNCATE TABLE hoge;

コメント

タイトルとURLをコピーしました