MySQL<基本>

MySQL

MySQLとは …

Oracle社から販売されているリレーショナル・データモデルに基づいて作成されたデータベース管理システム(DBMS:Database Management System)のこと
オープンソースで開発されており、無償で提供されている

データベース(Database)とは…

広義の意味でのデータベースは、「データの貯蔵庫」を指す
IT分野では、DBMSのことを指す

DBMSとは…

データベースを管理するためのアプリケーションのこと

  • 膨大な量のデータを扱うことができる
  • 素早くデータを取り出すことができる
  • 複数のユーザーで同時に利用できる
  • トランザクション*1管理機能を備えている
  • セキュリティ機能を備えている
  • 耐障害性を備えている

DBMSの基本的な操作"CRUD"とは…

作業名 内容 MySQL内での具体的な文
CREATE 新しいデータの追加 CREATE・INSERT
READ 既存データを検索する SELECT
UPDATE 既存データを変更する UPDARE
DELETE 既存データを削除する DELETE

リレーショナル・データベースとは…

①二次元の表(テーブル)を扱う
②テーブルはデータ重複なく整合的である(=正規化されている)
③テーブル同士に関連を持たせて結合(ジョイン)することができる
SQL(Structured Query System)という専門言語を用いて操作する

*1:一連のデータ処理の流れをひとまとめにした単位のこと

オブジェクト指向

1.17-18

クラスとオブジェクト

  • オブジェクト(object)・・「モノ」のこと
    目に見えるモノでだけではなく、概念などもオブジェクトである。オブジェクトの中には、クラスとインスタンスが含まれる。

  • オブジェクト

  • クラス(class)・・「分類」「型」「概念」

  • インスタンス(instance)・・クラスを実体化したもの

インスタンスを生成するためには new を用いる

Dog john = new Dog();

自分で定義したDogという参照型の変数の型を用いてjohnという名前の変数にインスタンスを格納している。これは、インスタンスがDogにいるという存在の場所を知らせているだけで、そのまま変数に代入している訳ではないことに注意

インスタンスとオブジェクトはほとんど同じものだと考えてよいが、背景にクラスがちらついているのがインスタンスである。

またクラスは三つで構成されている。

  • フィールド(状態)
  • メソッド(振る舞い)
  • コンストラクタ(フィールドの初期化)

コンストラクタの方法

public class Dog{  
  String name;    
  Dog(String name){   
  this.name = name;
  }  
}  

コンストラクタするときに陥りやすいところ

コンストラクタは、明示的に表示していないときでも、引数なしのコンストラクタが暗黙のうちに生成されている。(デフォルトコンストラクトという)
しかし、引数ありのコンストラクタを生成した場合、引数なしのコンストラクタは生成されない。
そのため、 java Dog john = new Dog(); に引数を入れなかった場合、コンパイルエラーが生じる。
なぜなら、引数ありのコンストラクタを生成しているにも関わらず、引数を与えていないからである。この場合、Dogクラスに引数なしのコンストラクタを明示する必要がある。

Java Silver への道 データ型(プリミティブ型)編

4.4

データ型

データ型とは、データの種類を表す情報で、プログラムの実行中にデータの扱い方を指定するために記述するもの。
例えば"3"という値を整数として扱う場合と浮動小数点として扱う場合とではコンピュータ内部での扱い方が変わる。

プリミティブ型(基本データ型)

プリミティブ型は、整数や浮動小数点といった数値、真偽値、文字を扱うもの。

種類 サイズ 既定値
整数型 byte 8bit 0
整数型 short 16bits 0
整数型 int 32bits 0
整数型 long 64bits 0
小数型 float 32bits 0.0
小数型 double 64bits 0.0
真偽値型 boolean 1bit false
文字型 char 16bits ¥¥u000|

*型名は省略などせずにこのままの通り記述する

暗黙の型変換について

整数はlong型、少数はdouble型がいちばん大きなデータを表すことができる。
前述した表の上から小さい順に並んでいて、イメージとしては順番にデータを入れる箱が大きくなっていると考えるとよい。そのため、小さい箱は大きい箱に入れて変換することができる。
たとえば、int型はlong型に変換してくれるけれど、short型に変換はしてくれない。

 
 public class Sample {
 
    public static void main(String[] args) {
 
        // 2147483647はint型で扱えるデータの最大値
        int x = 2147483647;
        // long型の方がintより大きいデータを扱えるため、暗黙的にlong型に変換してくれる
        long xx = 2147483647;
        // shortで扱えるデータの値より大きいためint型に変換できずコンパイルエラーが起きる
        short xxx = 2147483647;
     //short型の範囲であれば型変換OK  
        short xxxx = 21;
    }
 }
 

リテラル

リテラルとは、ソースコード中に記述する値のこと。javaには整数、浮動小数点、真偽値、文字の4つのリテラルが存在する。
たとえば整数値を記述するとデフォルトでint型として扱われる。浮動小数点だとdouble型、真偽値であればboolean型、文字であればchar型である。

もしデフォルトの型ではなくて明示的に違う型を指定したい場合は、接尾辞をつけなければいけない。

public class Sample {

public static void main(String[] args) {
    
    //9223372036854775807はint型では扱えないlong型でいちばん大きなデータ
    //longと表記しているにも関わらず、接尾辞をつけていないためint型と認識しコンパイルエラーがでる
    long a = 9223372036854775807;
    
    //接尾語をつけるとlong型と認識してくれる
    long aa = 9223372036854775807L;
    }
}

~整数リテラルを2・8・16進数で表記するときのルール~
10進数はそのまま表記することができるが、それ以外の進数で表記したいときは接頭辞をつけなければいけない。

進数 接頭辞
2 0b
8 0
16 0x

~文字リテラル
文字リテラルは一文字を表すデータ型で、char型で表現できる。
ちなみに文字列リテラルは複数の文字を表すデータ型である。
この二つのリテラルを区別するために、文字リテラルはシングルクォーテーション「'‘」、文字列リテラルはダブルクォーテーション「"“」で括る。

文字リテラルは、「a」などの文字だけでなく、「¥u」から始まるUnicode番号(16進数4桁)でも表すことができる。

このように16進数4桁の数値で文字を表現できることから、char型には0~65535までの数値を代入できる。(負の値は不可) これは数値リテラルであるため、シングルクォーテーションは必要ない。

char型に代入できるもの

  1. 文字リテラル
  2. 0~65535までの数値リテラル
public class Sample {

    public static void main(String[] args) {

        char a = 12450;
        char b = 'ア';
        char c = '\u30A2';

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }
}

➡結果はすべて「ア」が表示される

~アンダースコア~
数値リテラルの見やすさを向上させるために導入された。使用には以下のルールがある。

  1. リテラルの先頭と末尾には使用できない
  2. 記号の前後には使用できない
  3. 利用できる記号は「.」「F」「L」「0b」「0x」

識別子

識別子とは、変数やメソッド、クラスなどプログラマーが自由につけていい名前のことを指す。識別子には以下のような命名規則がある。

  • 予約語*1は使えない
  • 使える記号はアンダースコア「_」と通貨記号(「¥」「$」「¢」「€」「£」)のみ
  • 数字から始めてはいけない(2行目以降可能)

*1:intやforなどプログラムを書く上で必要な用語