MySQLデータベース操作の基礎

1. DDL(データ定義言語)の基本操作

データベースやテーブルの構造を定義・変更するためのコマンド


-- データベースの作成
CREATE DATABASE school_system 
  DEFAULT CHARACTER SET utf8mb4 
  COLLATE utf8mb4_unicode_ci;

-- データベース選択
USE school_system;

-- テーブルの作成
CREATE TABLE learners (
  student_id INT PRIMARY KEY NOT NULL,
  full_name VARCHAR(30) NOT NULL,
  birth_year YEAR NOT NULL,
  contact_number VARCHAR(15),
  gender ENUM('male', 'female', 'other') NOT NULL DEFAULT 'male'
);

-- テーブル構造の確認
DESC learners;

-- テーブル名の変更
ALTER TABLE learners RENAME TO pupils;

-- カラム追加(末尾)
ALTER TABLE pupils ADD emergency_contact VARCHAR(15) NOT NULL;

-- カラム追加(先頭)
ALTER TABLE pupils DROP emergency_contact;
ALTER TABLE pupils ADD emergency_contact VARCHAR(15) NOT NULL FIRST;

-- カラム追加(特定カラムの後)
ALTER TABLE pupils DROP emergency_contact;
ALTER TABLE pupils ADD emergency_contact VARCHAR(15) NOT NULL AFTER birth_year;

-- カラム定義の変更
ALTER TABLE pupils MODIFY full_name CHAR(30) NOT NULL;

2. DML(データ操作言語)の基本操作

テーブルに格納されたデータを操作するためのコマンド


-- 単一行挿入
INSERT INTO pupils (student_id, full_name, birth_year, contact_number, gender)
VALUES (1001, '山田太郎', 2005, '080-1234-5678', 'male');

-- 自動順序挿入
INSERT INTO pupils VALUES 
(1002, '佐藤花子', 2004, '090-8765-4321', 'female');

-- 指定カラム挿入
INSERT INTO pupils (student_id, full_name, birth_year, contact_number)
VALUES (1003, '鈴木一郎', 2006, '070-5555-6666');

-- 複数行挿入
INSERT INTO pupils VALUES
(1004, '高橋美咲', 2003, '080-9876-5432', 'female'),
(1005, '中村健二', 2005, '090-3333-4444', 'male');

-- データ更新
UPDATE pupils SET birth_year = 2004 WHERE full_name = '高橋美咲';
UPDATE pupils SET contact_number = '080-1111-2222' WHERE full_name = '山田太郎';

-- 特定レコード削除
DELETE FROM pupils WHERE student_id = 1005;

-- 全データ削除
DELETE FROM pupils;

3. DCL(データ制御言語)の基本操作

ユーザ権限の管理を行うためのコマンド


-- ユーザ作成(MySQL 8.0+)
CREATE USER 'teacher'@'%' IDENTIFIED BY 'secure_password123';

-- 権限付与
GRANT ALL PRIVILEGES ON school_system.* TO 'teacher'@'%';

-- 特定ホストへのSELECT権限付与
GRANT SELECT ON school_system.* TO 'guest'@'192.168.1.100' IDENTIFIED BY 'readonly_pass';

-- 権限確認
SHOW GRANTS FOR 'teacher'@'%';

-- 権限取り消し
REVOKE SELECT ON school_system.* FROM 'guest'@'192.168.1.100';

-- ユーザ一覧表示
SELECT User, Host FROM mysql.user;

4. DQL(データ照会言語)の基本構文

データの検索と集計を行うためのクエリ


SELECT 
  full_name, 
  birth_year, 
  contact_number 
FROM 
  pupils 
WHERE 
  gender = 'female' 
  AND birth_year > 2003 
ORDER BY 
  birth_year DESC 
GROUP BY 
  gender;

5. 常用コマンド一覧

DDL関連

  • SHOW TABLES; -- テーブル一覧表示
  • SHOW DATABASES; -- データベース一覧表示
  • CREATE DATABASE コマンドによるデータベース作成
  • CREATE TABLE コマンドによるテーブル構造定義
  • ALTER DATABASE による文字セット変更
  • ALTER TABLE による構造変更(リネーム、カラム追加・削除・変更)

DML関連

  • INSERT INTO によるデータ挿入
  • UPDATE によるデータ更新
  • DELETE によるデータ削除

DCL関連

  • GRANT による権限付与
  • REVOKE による権限取り消し
  • SHOW GRANTS による権限確認

基本クエリ

  • SELECT 文によるデータ抽出
  • WHERE 条件指定
  • ORDER BY によるソート
  • GROUP BY による集計

タグ: MySQL SQL DML DQL DCL

7月6日 00:02 投稿