![見出し画像](https://assets.st-note.com/production/uploads/images/146422331/rectangle_large_type_2_76c7114fe91fd7165f6c3b91ae623c03.png?width=800)
Oracle MySQL Explorerを受講した
Oracleの資格を欲しいと思っているので使用している英語の勉強もかねて受講した。
自分でも感覚でやってる部分があってそこで間違いがあった。
やはり設定系にミスが多いので自分の反省点とする
MySQL Client/Server Model
mysqld: MySQLサーバーのこと
これによりMySQLデータベースへの接続、クエリの実行が可能
クライアント: データベースサーバに接続してクエリを実行する
LinuxやWindowsがある
Linuxの使用例: Linux上でクライアントとしてMySQLに接続する方法はたくさんある
PHPはその1つ。
PHPはMySQLデータベースと連携してwebアプリを構築する
Windowsの使用例: ODBC(Open Database Connectivity)が使用される
ODBCは異なるデータベース管理システムに対して統一的なアクセス手段を提供するAPI
WindowsアプリはODBCドライバーを通じてMySQLデータベースに接続できる
MySQL コネクタ
クライアントはMySQLサーバに接続すしDB操作を行うアプリケーション
コネクタはクライアントとサーバの間の通信を行い、サーバ上のデータにアクセスする
コネクタはOSごとに種類がある
Connector/C: C言語用
Connector/J: Java言語用
Connector/ODBC: ODBCを使用するアプリケーション用
Connector/NET: .NETアプリケーション用
COnnector/Python: Pythonアプリケーション用
MySQLサーバ接続のためのライブラリ:
・libmysqld
MySQLサーバをアプリケーションに埋め込むためのライブラリ
これによりアプリケーションがMySQLサーバを起動し、データベースにアクセスできる
・PHPはMySQLデータベースにアクセスするための多くのAPIを提供
MySQL プラットフォーム
・LinuxならYumとRPMパッケージでインストールする
・macOSにはMySQLパッケージインストーラを使う
・WindowsならMySQLインストーラを使う
OSごとのMySQL起動/停止の手順
Linuxの場合
・Linuxコマンドラインを使う
・bootとMySQL Workbenchを使う
macOSの場合
・MySQL設定からm、MySQL サーバを起動する
・MySQL Workbenchからコマンドラインでファイルを読み込む
Windowsの場合
・MySQL Workbenchを使う
コマンド例
・コマンドラインでのMySQL起動/停止の手順
mysql -u [user] -p [password]
\c で入力したコマンドを中断できる
・プロンプト
PROMPT (\u@\h) [\d]\_
・ヘルプ
HELP
・終了
EXIT
・ログ出力
teeコマンドを使う
例) tee ファイル名.txt
・ログ出力 終了
notee
・SQL操作
mysql -u [user] -p [password]
でログイン後に、SELECTなど好きなSQL文を実行する
・パスワード変更
rootパスワードの設定例
ALTER USER USER() IDENTIFIED BY 'Oracle';
MySQL Workbenchで出来ること
・SQL開発
SQLクエリとスクリプトの編集と実行
データベースオブジェクトの作成、編集、削除
デーブルのデータの編集
・データモデリング
EERモデルの拡張
SQLクエリとスクリプトの編集と実行
データベースの製造、生成、管理
・サーバ管理
サーバの起動/停止
データベースサーバ設定の編集
ユーザーの管理
データのインポート/エクスポート
・データベースマイグレーション
他のデータベースから移行する
MySQLを最新バージョンにアップグレードする
既存のアプリケーションをMySQLに移行する
MySQL Workbenchのバージョン
Community Edition(GPL)
Standard Edition(Commercial)
Enterprise Edition(Commercial)
MySQL Workbenchの使用手順
・MySQL Workbenchで接続情報を作成する
ここで接続情報名、ホスト名、ポート番号、ユーザ名、パスワードを設定する
・DB操作が可能になる
データの読み込み/出力、データの取得/変更/削除/追加
SQLクエリ
基本的な構文
SELECT
DISTINCT 列名
FROM
テーブル名
WHERE
条件
ORDER BY 列名
LIMIT 行数
複雑なSQLクエリ
条件文の演算子
算術演算子
-- 加算
SELECT 10 + 5 AS addition;
-- 減算
SELECT 10 - 5 AS subtraction;
-- 乗算
SELECT 10 * 5 AS multiplication;
-- 除算
SELECT 10 / 5 AS division;
-- 整数除算
SELECT 10 DIV 3 AS integer_division;
-- 剰余
SELECT 10 % 3 AS modulus;
-- 剰余 (MOD関数)
SELECT MOD(10, 3) AS modulus_function;
比較演算子
-- 小なり
SELECT 5 < 10 AS less_than;
-- 小なりイコール
SELECT 5 <= 10 AS less_than_or_equal;
-- イコール
SELECT 5 = 5 AS equal;
-- NULLセーフイコール
SELECT 5 <=> NULL AS null_safe_equal;
-- ノットイコール (<>)
SELECT 5 <> 10 AS not_equal_alternate;
-- ノットイコール (!=)
SELECT 5 != 10 AS not_equal;
-- 大なりイコール
SELECT 10 >= 5 AS greater_than_or_equal;
-- 大なり
SELECT 10 > 5 AS greater_than;
-- BETWEEN
SELECT 5 BETWEEN 1 AND 10 AS between_range;
論理演算子
-- AND
SELECT 1 = 1 AND 2 = 2 AS and_operator;
-- OR
SELECT 1 = 1 OR 2 = 3 AS or_operator;
-- XOR
SELECT 1 = 1 XOR 2 = 2 AS xor_operator;
-- NOT
SELECT NOT (1 = 1) AS not_operator;
-- 給与にボーナスを加算
SELECT first_name, last_name, salary + 1000 AS new_salary
FROM employees;
-- 給与の税額を計算 (仮に税率が10%とする)
SELECT first_name, last_name, salary * 0.1 AS tax_amount
FROM employees;
-- 週給を計算
SELECT first_name, last_name, salary / 4 AS weekly_salary
FROM employees;
-- 給与が5000未満の従業員を選択
SELECT first_name, last_name
FROM employees
WHERE salary < 5000;
-- 給与が5000以上6000以下の従業員を選択
SELECT first_name, last_name
FROM employees
WHERE salary BETWEEN 5000 AND 6000;
-- 複数の条件をANDで組み合わせ
SELECT first_name, last_name
FROM employees
WHERE salary > 4500 AND last_name = 'Doe';
-- 複数の条件をORで組み合わせ
SELECT first_name, last_name
FROM employees
WHERE salary > 6500 OR last_name = 'Smith';
-- XORを使用した条件
SELECT first_name, last_name
FROM employees
WHERE (salary > 6500 XOR last_name = 'Smith');
-- NOTを使用した条件
SELECT first_name, last_name
FROM employees
WHERE NOT salary = 6000;
LIKE演算子を使った例
% を使用した例: 任意の文字列にマッチさせる。
-- 'Apple'を含むすべての商品を選択
SELECT product_id, product_name, price
FROM products
WHERE product_name LIKE '%Apple%';
-- 'Phone'で終わるすべての商品を選択
SELECT product_id, product_name, price
FROM products
WHERE product_name LIKE '%Phone';
-- 'Samsung'で始まるすべての商品を選択
SELECT product_id, product_name, price
FROM products
WHERE product_name LIKE 'Samsung%';
_ を使用した例: 任意の単一の文字にマッチさせる。
-- 'G'で始まり、任意の4文字が続く商品を選択 (例えば、'Google'がマッチする)
SELECT product_id, product_name, price
FROM products
WHERE product_name LIKE 'G____%';
-- 2文字目が'a'であるすべての商品を選択 (例えば、'Apple', 'Samsung'がマッチする)
SELECT product_id, product_name, price
FROM products
WHERE product_name LIKE '_a%';
SELECT
NAME
FROM
country
WHERE
IndepYear = 1919;
SELECT
Name,
Population
FROM
country
WHERE
population > 10000000;
SELECT
Name,
LifeExpectancy
FROM
country
WHERE
LifeExpectancy < 40;>
SELECT
Name
FROM
country
WHERE
GovernmentForm = 'Socialistic Republic';
SELECT
Name,
Continent
FROM
country
WHERE
Continent != 'North America';
SELECT
Name,
GovernmentForm
FROM
country
WHERE
GovernmentForm LIKE 'Social%';
SELECT
Name
FROM
country
WHERE
Name LIKE '%stan';
SELECT
code,
Name
FROM
country
WHERE
Code LIKE 'CO_';
SELECT
ID,
Name,
District
FROM
city
WHERE
Name IN ('New York', 'Rochester', 'Syracuse');
SELECT
Name,
Continent
FROM
country
WHERE
GovernmentForm = 'Republic'
AND (Continent = 'North America' OR Continent = 'Europe');
SELECT
Name
FROM
country
ORDER BY Name;
SELECT
Name
FROM
country
ORDER BY 1;
SELECT
Name
FROM
country
ORDER BY DESC;
SELECT
Name
FROM
country
ORDER BY ASC;
SELECT
Name,
Continent
FROM
country
WHERE
GovernmentForm = 'Republic'
AND (Continent = 'North America' OR Continent = 'Europe')
ORDER By Name;
SELECT
Name
FROM
country
LIMIT 4;
トラブルシューティング
SQLクエリのエラーメッセージの内容
・ステートコード
・エラーコード
・エラーメッセージ
コマンドを実行しエラーを把握する
SHOW WARNINGS
直前に実行された SQL ステートメントの警告メッセージを表示
-- テーブルの作成
CREATE TABLE example (
id INT,
name VARCHAR(10)
);
-- name列に長すぎるデータを挿入しようとする
INSERT INTO example (id, name) VALUES (1, 'ThisNameIsTooLongForTheColumn');
-- 警告を表示
SHOW WARNINGS;
SHOW ERRORS
直前に実行された SQL ステートメントのエラーメッセージを表示
-- テーブルの作成
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50)
);
-- データの挿入
INSERT INTO employees (employee_id, first_name, last_name) VALUES (1, 'John', 'Doe');
-- 一意制約違反を試みる
INSERT INTO employees (employee_id, first_name, last_name) VALUES (1, 'Jane', 'Smith');
-- エラーを表示
SHOW ERRORS;
![](https://assets.st-note.com/img/1720270609656-To0fKG0bqj.png?width=800)
この記事が気に入ったらサポートをしてみませんか?