いつか、技術ブログを

新人SE(OJT中)が技術ブログを書きたがっているブログです

【Oracle SQL】文字関数を書く練習問題を作ってみた

Oracle Master BronzeのSQLを受験する予定なのですが、文字列を操作する関数の使い方がまだおぼえられません。
なので、簡単な練習問題を作って勉強してみました。
ちなみに、選択肢を選ぶより1からSQLを書けるようにした方が実務でも役に立つと思い、SQLを書く形式にしました。

  • 使用するテーブル
  • 問題①
  • 問題①の答え
  • 問題②
  • 問題②の答え
  • 問題③
  • 問題③の答え
  • 問題④
  • 問題④の答え
  • 応用問題
  • 応用問題の答え
  • おわりに
続きを読む

OracleのSQLを無料で学習できるAPEXを使うまでにつまづいたポイント2つ

下記の連載を読んで、APEXなるものを利用してOracleSQLの勉強をしようとしたのですが、7年前の記事ということもあり、つまづいたポイントがあったのでまとめました。

www.atmarkit.co.jp

APEXとは?

APEXは通常、Oracle Databaseにインストールして使用する製品です。
しかし、SQL文を試す「SQLワークショップ」という機能を備えているため、無料でOracleSQLを学習できます。
また、ブラウザで利用できるため、ソフトのインストールが不要です。

APEXを使う利点は?

APEXを使用してSQLを学習する利点は、Oracle特有の文法を学習できるということです。
SQLの学習をするには、自分のPCにMySQLなど無料のDBを入れてしまうのが実践的で良いと思います。
ですが、Oracleは有料のため、Oracleを仕事で使う場合や、Oracleの試験勉強のためにはAPEXを使用するのが良いです!
Oracleとその他のDBでは、細かい文法や変数の扱いなどが異なります)

APEXを使う方法は?

わたしは、以下の記事の通りの流れでAPEXを使用しました。(ユーザー登録などが必要です)
www.atmarkit.co.jp 以下では、↑の記事の通りに進めてうまくいかなかった部分を2つ説明していきます。

その1.ユーザー登録の返信メールが遅い

まず「あれ?」と思ったところは、ユーザー登録で必要事項を記入した後、返信のメールが来るまでに半日程度かかったことです。 もちろん無料サービスですし、時間がかかることに不満はないのですが、「遅ければ1日程度かかります」とか書いておいてくれれば…。
なぜこんなことを言うかというと、メールアドレスを間違えて記入したのかな?と思い、もう一度登録してしまったからです。
二重登録になってしまいました、オラクルさんすみません…!

その2.EMP表が初期サンプルとして含まれていない

↑で紹介した記事の最後では、EMP表が初めから用意されている前提でselect文を実行しています。
しかし、私が同じ文を実行したところ、「ORA-00942: 表またはビューが存在しません。」とエラーが発生してしまいました。
そこで、どこかからサンプルをダウンロードできないかと探したところ発見したので、方法をご紹介します。

SQLワークショップを選択
f:id:ramenchahan:20181110174316p:plain
②ユーティリティを選択
f:id:ramenchahan:20181110174351p:plain
③サンプル・データセットを選択
f:id:ramenchahan:20181110180418p:plain
④EMP/DEPTをインストール(記事で使われているEMP表です)
f:id:ramenchahan:20181110180637p:plain
f:id:ramenchahan:20181110180648p:plain
f:id:ramenchahan:20181110180700p:plain
f:id:ramenchahan:20181110180713p:plain
これでインストールは完了です。
実際にSQLが実行できるか確認してみましょう。
SQLワークショップから、SQLコマンドを選択し、SELECT文(select * from emp;)を入力して実行すると、emp表のデータが表示されています。
f:id:ramenchahan:20181110180728p:plain

おわり

この調子で、OracleSQLを学習していきたいと思います!

初心者がmacのターミナルで行末にスペース追加しようとしたけど難しかった

Markdownでこの記事を書いているのですが、はてなブログでは行末にスペースを2個入れないと改行されません、めんどくさいですよね…。
ということで、macのコマンド?シェル?みたいなやつで行末にスペースを2個入れる方法を探してみました!
(初心者で行き当たりばったりで書いてるので、理解しきれてないところがあります)

  • 結論
  • そもそもコマンドの書き方
  • echo
  • パイプ(|)
  • sed
  • まとめ
  • 感想
続きを読む

サーブレットの定型文メモ

サーブレットって、「コレをするにはコレを書かないといけない」っていう決まったコードが多いので、よく使うものをまとめました。
自分のコピペ用メモなので詳細な説明はしていません。時間があったら別記事で書きたいと思います…!

文字データをクライアントに送る

クライアントのブラウザに Hello, world! と表示させるためには、次のように書きます。

response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("Hello, world!");

リクエストパラメータの取得

HTMLのformタグの中で入力された値をサーブレットで使用するためのコードです。

request.setCharacterEncoding("送信元HTMLの文字コード");
String 変数名 = request.getParameter("リクエストパラメータのname");

セッションスコープの取得・基本操作

セッションスコープ(利用者がブラウザを閉じるかプログラムで削除するまで使える)にオブジェクトを保存したり、保存したものを取り出したりする時の書き方です。

// セッションスコープの取得
HttpSession session = request.getSession();
// セッションスコープに保存
session.setAttribute("属性名", インスタンス);
-----------------------------------------
// セッションスコープからインスタンスを取得
型名 変数名 = (型名)session.getAttribute("属性名");

// セッションスコープからインスタンスを削除
session.removeAttribute("属性名");
// セッションを無効化するまでの最大の秒数を指定
session.setMaxInacticeInterval(秒数);

フォワード

フォワードとは、処理をJSPなどに移すことです。ちなみにオブジェクトをサーブレットJSP間で共有するには、リクエストスコープに保存します。

RequestDispatcher dispatcher = request.getRequestDispatcher("フォワード先");
dispatcher.forward(request, response);

// リクエストスコープに保存
request.setAttribute("属性名", インスタンス);
-----------------------------------------
// リクエストスコープからインスタンスを取得
型名 変数名 = (型名)request.getAttribute("属性名");

データベースへの接続・参照

PreparedStatementは、SQL文をデータベースまで運んでくれるもの、というイメージです。
例外処理やクローズ処理は省略してます。

// データベースへの接続
Connection con = DriverManager.getConnection("URLを入力", "ユーザ名", "パスワード");
// PreparedStatementの取得
PreparedStatement pst = con.prepareStatement("SQL文");
// SQL文を実行し、結果をResultSetに取得
ResultSet rs = pst.executeQuery();
// 結果の表示
while(rs.next()){
  String 変数名 = rs.getString("データベースの列名");
}

データベースへの接続・更新

接続の部分は上記の「参照」と同じです。

// データベースへの接続
Connection con = DriverManager.getConnection("URLを入力", "ユーザ名", "パスワード");
// PreparedStatementの取得
PreparedStatement pst = con.prepareStatement("SQLの例:INSERT INTO ~ VALUES (?, ?)");
// ?の部分に代入
pst.setString(1, "文字列"); //1つ目の?
pst.setInt(2, 数値); //2つ目の?
// SQLを実行し、更新した行数を取得
int num = pst.executeUpdate();

DataSourceの使用

DataSourceの設定は、META-INFフォルダ内のcontext.htmlファイルにしておく必要があります。

InitialContext c = new InitialContext();
DataSource source = (DataSource) c.lookup("java:comp/env/ context.xml内のname ");
Connection con = source.getConnection();

Stringクラスの特徴とメソッドまとめ

Java Silverの勉強をしていて、Stringクラスのメソッドをほとんど分かっていなかったのでまとめました!

  • 特徴:immutable(不変)オブジェクトである
  • Stringクラスのメソッドの引数(位置と範囲の指定)
  • concat
  • contains
  • indexOf
  • substring, subsequence
  • charAt
  • replace
  • startsWith, endsWith
  • 参考書籍、参考ページ
続きを読む

はじめて見た予約語まとめ(Java)

こんにちは、毎日楽しく研修中です!
今はJavaの研修をしているのですが、予約語の一覧を見たところ、見たことがないものがいくつかありました。
なので、Java silverのお勉強もかねて、分からない予約語を調べてみました。

  • 予約語の一覧
  • assert
  • const
  • goto
  • native
  • strictfp
  • synchronized
  • transient
  • volatile
  • おわり
続きを読む

JavaサーブレットでHello Worldする最低限のコード

今、本を読みながらサーブレットの勉強をしているのですが、一番最初のサンプルコードからして、とても長いので、何が何だかわからなくなってきました。
なので、「Hello,world」と表示するのに最低限必要なコードを調べて書いてみました。

続きを読む