プログラミング自主学習 DAY83 mySQL
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に保存することが多いです。
また、文字列を列挙して保管したENUM 、SET もあります。
データータイプ (数字)
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