見出し画像

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;


この記事が気に入ったらサポートをしてみませんか?