メモ > 技術 > データベース: MySQL > データ操作
データ操作
データベース作成。
CREATE DATABASE test DEFAULT CHARACTER SET utf8mb4;
データベース削除。
DROP DATABASE test;
データベース仕様確認。
SHOW CREATE DATABASE test;
テーブル作成。
CREATE TABLE address(
no INT,
name VARCHAR(80),
tel VARCHAR(80)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT 'アドレス';
テーブル名変更。
ALTER TABLE address RENAME TO address2;
RENAME TABLE address TO address2;
MySQLの「ALTER TABLE RENAME」と「RENAME TABLE」 - なからなLife
https://atsuizo.hatenadiary.jp/entry/2016/06/16/100000
テーブル削除。
DROP TABLE address;
テーブル仕様確認。
SHOW COLUMNS FROM address;
SHOW FULL COLUMNS FROM address;
SHOW CREATE TABLE address;
登録。
INSERT INTO address(no, name, tel) VALUES(1, '山田太郎', '090-1234-5678');
INSERT INTO address VALUES(1, '山田太郎', '090-1234-5678');
表示。
SELECT name, tel FROM address;
SELECT token, COUNT(*) FROM devices GROUP BY token;
更新。
UPDATE address SET name = '山田健二' WHERE name = '山田太郎';
UPDATE address SET name = '山田健二', tel = '090-2345-6789' WHERE name = '山田太郎';
削除。
DELETE FROM address WHERE name = '山田太郎';
DELETE FROM products WHERE id >= 5001;
複製。
INSERT INTO address_test SELECT * FROM address WHERE no >= 3;
ASによる別名の設定。
SELECT c.id AS id, c.name_sei AS sei, c.name_mei AS mei FROM customers AS c;
ASの省略による別名の設定。
SELECT c.id id, c.name_sei sei, c.name_mei mei FROM customers c;
オートインクリメントをリセット。
ALTER TABLE products AUTO_INCREMENT = 0;
日時をフォーマットして表示。
SELECT DATE_FORMAT(created, '%Y-%m-%d %H:%i:%s') AS created FROM histories GROUP BY created ORDER BY id DESC LIMIT 100;
日付をフォーマットして表示。
SELECT DATE_FORMAT(created, '%Y-%m-%d') AS created FROM histories GROUP BY created ORDER BY id DESC LIMIT 100;
日付ごとにランキング。
SELECT
DATE_FORMAT(created, '%Y-%m-%d') AS created,
COUNT(*) AS count
FROM
histories
GROUP BY
DATE_FORMAT(created, '%Y-%m-%d')
ORDER BY
count DESC
LIMIT
100;
連結して表示。
SELECT
histories.created_at,
histories.user_id,
histories.device_id,
devices.token
FROM
histories LEFT JOIN devices ON histories.device_id = devices.id
WHERE
histories.detail IS NULL
ORDER BY
histories.id
LIMIT
100
;
SELECT
devices.token,
COUNT(devices.token)
FROM
histories LEFT JOIN devices ON histories.device_id = devices.id
WHERE
histories.detail IS NULL AND histories.created_at = '2019-02-08 15:02:29'
GROUP BY
devices.token
;
データ件数を一括確認。
SELECT
table_name, table_rows from information_schema.TABLES
WHERE
table_schema = '対象データベース名'
;
MySQLで全テーブルのレコード数を一覧表示する - Qiita
https://qiita.com/isobecky74/items/6efff247484f8e4fccae
インデックスを確認。
SHOW INDEX FROM histories;
インデックスを一括確認。
SELECT
TABLE_SCHEMA, TABLE_NAME, INDEX_NAME, COLUMN_NAME, SEQ_IN_INDEX
FROM
information_schema.STATISTICS
WHERE
TABLE_SCHEMA = '対象データベース名'
ORDER BY
TABLE_SCHEMA, TABLE_NAME,INDEX_NAME, SEQ_IN_INDEX
;
MySQLでDB内の全てのインデックスの一覧をCSV出力する|エンジニア初心者の備忘録
http://rigil.iku4.com/mysql_command/index