🍣

プログラミング自主学習 DAY83 mySQL

2023/08/18に公開

MySQL

今のITスクールでは、OracleDBMSを学びますが、日本の場合はMySQLを利用する企業が多いというアドバイスを頂き、明日からインストールして、ちょこちょこ勉強する予定です。

IT SCHOOLの記事に今日一人で勉強した知識もまとめていますので、今日の記事は簡単に、
ORACLE DBMSとMySQLの違いを乗せたいと思います。

MySQLの長所としては、Oracleよりメモリ使用が少ないため、処理速度が速いです。
また、UI/UX的にも初心者向けで、シンプルですので、学びやすい点もあるらしいです。

しかし、複雑なQueryとTransaction(トランザクション)を処理に対しては、Oracleの方が
優れています。JOIN機能もOracleの方がより様々な種類を提供します。

今日は、OracleでSELECTとDUALという仮想テーブルで演算をしてみましたが、その中で日付情報をもらう関数 が違いました。
OracleはSYSDATEでしたが、mySQLはDATE() です。


<ORACLE>
SELECT SYSDATE FROM DUAL

<MySQL>
SELECT DATE() FROM DUAL

データーの仕組み

データータイプ (文字型)

OracleもMySQLも**CHAR,VARCHAR(2)**を活用します。

Oracleは大容量テキストの場合、主にCLOB(Character Long Object)を活用します。
LONG もありますが、制限事項が多くて、CLOBがメインらしいです。

MySQLは、TEXT, BLOB(Binary Long Object)を活用します。
BLOBの場合、イメージと動画などが保存できますが、実際はamazonのS3などにファイルのアップロードし、そのファイルの経路をVARCHARに保存することが多いです。
また、文字列を列挙して保管したENUMSET もあります。

データータイプ (数字)

Oracle 特徴 容量
NUMBER(P,S) P : Precision, Sは小数点以下の桁数(Scale)/10進法 22bytes
FLOAT(P) 2進法 22bytes
BINARY_FLOAT 浮動小数点数 4bytes
BINARY_DOUBLE 浮動小数点数 8bytes
MySQL 特徴 容量
BIT(n) 値ごとのbit数を表示します 1~64bit(1bit~8bytes)
BOOL, BOOLEAN TINYINT(n)と同じです。ただし0のみfalse,他の数字はtrueを意味します。 1byte
TINYINT(n) -127~128(最大:255) 1byte
SMALLINT(n) -32768~32767(最大:65535) ータ型
MEDIUMINT(n) -8388608~8388607(最大:16777215) 3bytes
INT(n) -2147483648~2147483647(最大:約42億) 4bytes
BIGINT(n) 無制限の数値を表現可能 8bytes
FLOAT(n,d) 固定小数点 4bytes
DOUBLE(n,d) 浮動小数点数 8bytes
DECIMAL(n,d) n: Precision, dは小数点以下の桁数(Scale)

データータイプ (日付け)

Oracle 特徴 容量
DATE 年月日と時分秒形式の期間表現データ型 7bytes
TIMESTAMP DATE + MSの期間表現データー型 11bytes

BC4712 01-01 00:00:01 - 9999-12-31 23:59:59まで表現可能。
紀元前4712から書記9999年までって、、、結構ショックですね。
ユリウス暦をベースにしたと思います。

その他にTIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONEというデータータイプもあります。あくまで推測にすぎなせんが、以前JavaのCalendarクラスでも見たことがある形です。世界と地域の時間を表すデーターではないかと思います。両方13bytesです。

MySQL 特徴 容量
DATE 年月日形式の期間表現データ型 3bytes
TIME 時分秒形式の期間表現データ型 3bytes
DATETIME 年月日と時分秒形式の期間表現データ型 8bytes
TIMESTAMP 年月日と時分秒形式の期間表現データ型 4bytes
YEAR 年の表現データ型 1byte

それに比べて、mysqlは書記1000年から9999年まで表現できます。OracleのDATEと同じ使用方法のTIMESTAMPの場合、1970年から2038年1月19日3時14分07秒まで表現できます。
しかし、YEAR、DATE、TIMEがありますので、より柔軟に表現できるでしょう。

Discussion