SQLの窓 イラストAC フリー素材

2023年01月15日

C# 言語問題(1) : 記述以外は正しいものを選択する

型を使用すると、あらかじめ明示的に型を定義することなく、一連の専用プロパティを単一のオブジェクトにカプセル化できるので便利です。型の名前はコンパイラにより生成され、ソースコード レベルでは使用できません。 各プロパティの型はコンパイラにより推測されます。

この型を作成するには、 演算子をオブジェクト初期化子と一緒に使用します


体は、メンバーとメンバーを含むことができるという点でクラスに似ています。 ただし、クラスとは異なり値型であり、変数内のメンバはメモリ上のその位置に直接格納します。一方、クラス型の変数にはデータへの参照が含まれます。
private struct DbConnect {
    public string host;
    public string user;
    public string password;
    public string database;
}

DbConnect dbConnect = 
    new DbConnect { 
        host = "localhost", user = "root", password = "", database = "lightbox" 
    };
print(dbConnect.ToString());
print($"{dbConnect.host} : {dbConnect.user}");

配列は、プログラミング言語で最も利用される可能性の高い複数のデータを格納し、ループ処理で利用されます。C# では何らかのデータの配列は一つの型として認識され、(ここは記号二つ)をデータ型の右に表記して配列型として宣言し、さらにその右に変数名を定義します。しかし、配列を扱う場合データを格納するエリアをあらかじめ確保する必要があるため、変数の右辺には配列の大きさを表記するか、(ここは記号二つ)を使った初期化の記述を行います。

また、配列ではという配列の格納数を示すプロパティがあるので、ループ処理はこのプロパティを使用して行うステートメントと自動的に全てを扱うステートメントがあります。しかし、このままでは格納順でしか処理できないので、クラスを使ったソート処理が一般的に使用される事は多いです。

さらに、特殊なデータ型として () を使用する型があります。これは複数のデータを一つの変数にセットで投入するのでJavaScript の JSON オブジェクトに類似したところがあります。変数に対するプロパティを自由に設定できますが、指定しなくてもn ( n は1開始で最初からの連番 ) という記述で参照可能です。

どの言語でも配列よりさらに便利な、後からデータを追加できるクラスが通常存在します。C# では内部にセットするデータ型を定義時に表記する<T>クラスを使用します。データの一覧処理は配列と同じものを使用可能です。一般的にこのクラスを使って最初にデータを投入するのはメソッドで、一覧の最後に追加されます。一覧の要素の数を知る事のできるプロパティは配列と違い、プロパティが存在します。

このクラスと配列は相互変換が容易に可能です。このクラスから配列を作成するには、メソッドを使用して、その反対は配列に対してメソッドが使用できます( 配列には IEnumerable が実装されているからです )。それでは、配列を作成して、クラスに変換して、一覧を Console.WriteLine で表示するコードを記述してください。




posted by at 2023-01-15 09:22 | プログラマ用 | このブログの読者になる | 更新情報をチェックする

2022年07月10日

2022年前期 (3) : JavaScript B

使用頻度はあまり高くありませんが、金額の処理をするのにいくつか使用する必要があるのが数学的な定数とメソッドを持つのがオブジェクトです。このオブジェクトのメソッドは、クラスメソッドとして常にオブジェクト名.メソッド名(引数)という形で使用します。引数の数値に対して、以下のメソッドが使用できます。
 : 小数点以下を切り上げる
 : 小数点以下を切り捨てる
 : 小数点以下を四捨五入する
 : 0以上1未満の疑似ランダムな数値を返す( 引数なし )

日付や時間を扱う Date オブジェクトは少し扱いがやっかいですが、new Date() で現在のものを取得し、引数に(年,月,日) を指定する事によって任意のものを取得できます。但し、月のみ で指定する必要があり、取得した場合同様の範囲で取得されます。オブジェクトに対して以下のメソッドが使用できます。
 : 年を4桁の整数で取得する
 : 月を取得する
 : 日を1から31の整数で取得する
 : 1970年からの経過ミリ秒数を取得する

最後のメソッドを使ってユニークな数値を取得する事ができるので、JavaScript で呼び出すに付加してキャッシュが効かないようにする事ができます。

JavaScript のグローバルな関数で、文字列を整数に変換する が存在します。引数の文字列が整数に変換しなかった場合は、特殊な値である  を返します。逆に、数値の入った変数を文字列に変換するメソッドは変数名.()ですが、変数内が整数の場合、メソッドの引数にをセットすると、16進数文字列になります。なので、"0x" + 16進数文字列 として整数に変換する関数を実行すると元の整数に戻ります。また、文字列としての連結演算子は  なので、数値の後ろから空文字を連結すると文字列になります。

JavaScript 内の単純オブジェクトを外部とのやりとりに使用する為に、オブジェクトが存在し、二つのメソッドがあります。
 : 文字列をオブジェクトとして解析し、JavaScriptの値やオブジェクトを作成。
 : JavaScript のオブジェクトを文字列に変換します。
文字列に変換する際、第2引数はを指定し、第3引数に値を指定するとその数のスペースでインデントして整形されます。

function 内でのみ利用できるオブジェクトがあり、プロパティとしてを持っています。これを使用して、function の仮引数を定義せずに、渡された引数の内容を知る事ができます。また、渡されていない部分を参照した場合は、 となります。また、function もオブジェクトであり、既存の String オブジェクトに追加のインスタンスメソッドを追加作成する事ができます。そのメソッド名を myfunc とすると、以下の定義になります。

String..myfunc = function(){ 処理 };

処理の中で、本体の文字列を取得するには this.() を使用します。引数の指定も可能ですし、前述のオブジェクトで動的に引数をチェックする事もできます。

使用方法は複雑ですが、正規表現を利用する為のオブジェクトとしてが存在します。new を使用して新しい正規表現オブジェクトを作成する時に、引数に文字列のパターンを指定できます。String オブジェクトのメソッドの引数として利用する事が出来、そのメソツドとしてはがあります。


posted by at 2022-07-10 11:08 | プログラマ用 | このブログの読者になる | 更新情報をチェックする

2022年07月09日

2022年前期 (2) : JavaScript A

ブラウザで表示されるWEBアプリケーションの画面は、通常タブ単位で表示されていますその際一つのウインドウから他のウインドウを開いて相互に JavaScript でアクセスする事が可能です。この際、window オブジェクトメソッドを使用します。このメソッドの戻り値は開いた新しいウインドウオブジェクトが取得され、新しく開いたウインドウから元のウインドウの window オブジェクトを参照するには、を使用します。開かれたウインドウは利用が終われば閉じるのが通常で、window.を使用して閉じます。

window オブジェクトのメソッドは、今回のような特殊なものはあえて明示しますが、良く使うものは window の記述は省略します。例えば、3つのダイアログを表示するメソッドはそれぞれ です。( メッセージ表示、OK/キャンセル、文字列入力 )

また、デバッグ用のメッセージ表示やオブジェクト表示に使用される console. メソッドも window.console として参照が可能ですが、単独の console としても利用可能です。window オブジェクトはその名の通りウインドウに対して定義されていますが、WEBページのコンテンツを参照するのは、オブジェクトで、id、name、要素 に対してメソッドが用意されており、それぞれ getElementBy と getElementsBy と getElementsBy です( JavaScript では大文字小文字を区別します )。この際、戻されるオブジェクトは、id 以外ではになるので、一つ一つを参照するにはとして番号を与えて参照します。

JavaScript は他にも独立したオブジェクトが存在しますが、最も重要なのは String オブジェクトです。変数内が文字列である場合や、定数としての文字列に直接ドットで以下のメソッドが使用できます。
 : 文字列を前方検索します。
 : 文字列を置換します。
 : 文字列を切り取ります。整数のゼロ埋め(0パディング)。
 : 文字列をセパレータで分解します。文字列内に指定文字がいくつあるか。
 : 文字列を切り取ります。
 : 文字列を小文字に変換します。
 : 文字列を大文字に変換します。
 : 文字列の両端の空白を削除します。
以下はプロパティです
 : 文字列の長さを取得します。

JavaScript には配列を扱う為に Array オブジェクトがありますが、var a =  と記述する事で空の配列を作成できます。同様の記法で初期値をセットする事も可能です。また、Array.メソッドで、変数が配列かどうかをチェックする事ができます。通常の値の種類は演算子で知る事ができますが、配列は object として判定されます。Array オブジェクトにもいくつもメソッドがありますが、以下を知っておくといいでしょう。
 : 配列の要素を逆順にする
 : 配列の要素をソートする
 : 配列の先頭に要素を追加する
 : 配列の末尾に要素を追加する
以下はプロパティです
 : 配列の要素数を返す



posted by at 2022-07-09 21:07 | プログラマ用 | このブログの読者になる | 更新情報をチェックする

2022年07月03日

2022年前期 (3) : その他

JavaScriptでライブラリを使用せずにページのコンテンツにアクセスするには、オブジェクトを使用する必要があります。HTML 要素に id 属性が記述( id="target" )されている場合、と記述する事によって、HTML要素のオブジェクトを取得する事ができます。しかし、この記述方法は記述が長く大文字小文字も区別されるので、間違いやすく問題が多いのが実情です。そこで、jQuery を使用する事によって簡潔に記述が可能になり、他の言語との親和性の高い概念を学ぶ事ができます。

まず jQuery で HTML 要素を参照する為に、CSS で使用される3種類のを使用する事が多くなります。一つ目は id 属性の値( id="target" )を使用して、と記述するだけで jQueryの HTML 要素のオブジェクトを取得する事ができます。二つ目は、属性のの値を使用して $(".target") と記述するだけで同じ値を持つ HTML要素を複数取得する事ができます。また、3つ目は HTML要素そのものなので、$("input") と記述すればページ内の全ての INPUT 要素を保持する jQuery オブジェクトが取得されます。

Excel の操作は非常に多岐に渡ります。作成するドキュメントを自由自在に操れるように最低限のショートカットを知っておく必要があります。まず、SHIFT + でワークシート追加します。その後、キーで直前の処理を繰り返してたくさんワークシートを作成してください。画面上には最後のワークシートが表示されなくなるので、左下の右向き三角をを押しながらクリックすると最後のワークシートまで移動します。逆にその状態で左下の左向き三角に同様の処理を行うと先頭のワークシートに移動できます。

書式を作成する為に列幅を全て1にする為に CTRL + で全ての列と行を選択します。そして適当な列タイトルを右クリックして列の幅に1を入力します。その状態で右下のアイコンをクリックして標準に戻ると、現在の1ページの輪郭にが表示されます。

その範囲の一番右下に何でもいいので文字列( X にします )を入力し、名前ボックスにと入力するか CTRL + キーで最初のセルに移動します。そして CTRL + SHIFT + キーで1ページぶんが選択されるので、CTRL + SHIFT + キーで輪郭に罫線を引きます。最後にキーでデータを削除し、CTRL + キーで印刷プレピューを起動して罫線を確認して右下ので余白罫線も表示させてレイアウトを調整します。

ワークシートは、で最初に選択(シート名で)したワークシートから右へ選択されていきます。(または SHIFT キーを押しながらマウスで最後のシートのシート名をクリック)ので、上記の一連の処理を選択状態で行うと、全てのワークシートに反映されます。最初のシートのレイアウトをコピーしたい場合は、で全ての列と行を選択してからコピーし、ワークシートを複数選択(シート名で)した状態で貼り付けます。選択状態の解除は、非選択のワークシートのシート名をクリックするか、任意の選択中のシートのうちの一つをシート名で選択してからキーを押しながらそのワークシートのシート名をクリックします。

ホームタブで一般に行われるセルの処理は、セルの書式設定ダイアログを CTRL + キー で表示させる事で場合によっては素早い処理が可能になります。特に、表示形式タブのユーザ設定では多様なフォーマットがあり、記号は文字列として列データが扱われます。また、データ側の先頭に記号を入力すると、以降の値が数字でも文字列扱いとなります。

の最後まで移動するには、それぞれ、CTRL + キーとCTRL + キーを使いますが、Excel には END モードというものがあり、キーを押すとステータスバーに END モード と表示されるので、その状態で キーとキーを使用しても同じように最終位置まで移動できます。但し、途中に文字が入力されていると、最後にデータが存在する列まで移動する事になります。


posted by at 2022-07-03 12:46 | プログラマ用 | このブログの読者になる | 更新情報をチェックする

2022年06月28日

2022年前期 (3) : Chrome

WEBアプリケーションはサーバ側の処理を PHP とすると、クライアント側の処理はで構成され、クライアント側は Google Chrome で表示される事を前提として授業を行っています。クライアント側の情報は、Google Chrome のツールという機能によって容易に参照が可能ですが、機能は多岐に渡り複雑ですが、開発には欠かせない重要な機能です。

開始方法は、キーを使うか、ページ上で右クリックしてを選択しますが、表示位置は種類を選択可能で、目的によって下部か右側を選択すると良いでしょう ( このツールを表示中は、アイコンを右クリックして表示されるメニューから完全なの削除を実行できます  )。

機能毎にタブを選択するようになっていますが、主に使うのはの4つです。但しこれ以外にも、設定画面で JavaScriptのを設定可能なので覚えておいてください。

タブの一番最初にあるエリアでは、冒頭で説明した3種類の内容が表示されていますが、リアルタイムでが可能です。また、それはすぐにページ上の表示に反映されます。さらに、CTRL + SHIFT + キーによって切り替えられる機能でという意味の矢印のアイコンがタブの一番左にあります。これによってページ上のコンテンツをマウスで選択して対応するの記述を知る事ができます ( タブの順序はデフォルトの位置であり、ドラッグで変更できます )。

このエリア(1つ目)の右横(2つ目)に重要なタブが存在しますが、一番左のエリア(1つ目)を表示中キーでエリア下部に表示する事ができます。このエリアは、前者(1つ目)が表示中のページの状態を表示しているのに対して、ページ内のが実行した console コマンドの結果が表示されています。また、ここからリアルタイムに処理を実行可能なので、jQuery を使った処理の記述の練習が可能です ( それ以外にもページ内の特殊なエラーが多数表示される場合もあります ) 。処理の記述は、 + 改行で、複数行のエリアを確保して矢印キーで移動しながら式を完成させてから改行キーで実行可能です。

3つ目に重要なエリア( タブ )では、ブラウザとサーバ内容を確認する事ができます。ページから何らかの操作を行い、ここに何も表示されない場合はブラウザ側のみで処理が行われています。ブラウザからサーバに情報が到達した場合は、サーバからブラウザに必ず情報が返って来ます。ブラウザからの情報はと呼ばれ、サーバからの情報はと呼ばれています。サーバからの情報で、と呼ばれる部分にはブラウザへの指示が書き込まれていますが、このツールでしか詳細を見る事ができません。しかし、残りの部分は全て画面の構成データです。

最後のエリアでは、PC 側でのいろいろな保存データを見る事ができます。この中でWEBアプリで重要なものは二つあり、です。後者は古くから存在するサーバ側のデータを保存する為のエリアですが、前者はPC の使用者固有のデータを保存するのに用いられます。

これら以外にもという重要なエリアがあり、そこでは機能が実装されています。しかし、通常の WEBアプリケーション程度であれば console コマンドを使用して処理内容を確認したほうが容易でかつ解りやすいでしょう ( 但しここには {} アイコンをクリックして実行される機能があるのでうまく利用しましょう)。



posted by at 2022-06-28 15:27 | プログラマ用 | このブログの読者になる | 更新情報をチェックする

2021年12月29日

MySQL : 相関サブクエリ・非相関サブクエリ( IN 句 ) : 15

相関サブクエリは、外部クエリの値を使用するサブクエリです。
 

社員マスタ(左) の社員コードと得意先マスタ(右) の担当者が一致します。

社員が担当する得意先の件数を表示する SQL を記述してください。


社員マスタ(左) に 管理者名 VARCHAR(50)を追加したとして、UPDATE 構文で相関サブクエリを使用して管理者名列の全ての名前をセットしてください


取引データの取引先コードと金額を使用して売り上げが400万を超える担当者の社員情報の一覧を取得するSQLを記述してください( 二階層の IN を使用した非相関サブクエリ )



posted by at 2021-12-29 19:57 | プログラマ用 | このブログの読者になる | 更新情報をチェックする

2021年12月28日

MySQL : 結合によるデータ作成と調整 : 14

テスト時に何らかのテストデータを作成したい時には、結合を使用します。仕様的には、結合するテーブルの条件で両方共データが存在する場合の行の一覧を取得しますが、プログラミング的には特殊な目的に利用する事になります。

この結合は、条件を指定しなければ、いわゆるとなるので、50件の社員マスタを自己結合させれば、2500件のデータを作成する事ができます。以下に社員マスタ(50件)を自己結合させて、2500件の 片方の社員マスタの列を表示する SQL を記述してください。


しかし、このままでは主キーが無い(本来の社員コードは重複してしまう)ので、CREATE TABLE ... SELECT 構文を使用して社員マスタと同じ列定義を持った社員テーブルを作成する SQL を記述してください


このテーブルに自動採番列( SERIAL )の ROWKEY という列を先頭に追加するSQL を記述してください


この際、自動的に ROWKEY というユニークなインデックスが作成されてしまいますが、主キーを作成する為にこのインデックスを削除する必要があります。その際、ROWKEY 列が NOT NULL である必要があるので、NOT NULL 制約を付加する SQL を記述してください


ROWKEY インデックスを削除する SQL を記述してください


最後に、ROWKEY に主キーを付加する SQL を記述してください




posted by at 2021-12-28 19:58 | プログラマ用 | このブログの読者になる | 更新情報をチェックする

MySQL : 外部からのアクセス・結合( JOIN ) : 15

MySQL では設定しなれければ、接続できるホストはのみです。ユーザもしかありません。外部からの接続を可能にするには、MySQLから見たホスト名とユーザ名を組み合わせてアカウント管理ステートメントである GRANT 構文で実行します。以下に PC-00 に対して既存の前述のユーザでパスワードを mypass として すべての権限を付与するSQL を記述してください( 他のユーザに権限を与えれるように記述してください )( +5 )


上記定義を削除する SQL を以下に記述してください
( +1 )

二つ以上の表を結合する場合、プログラミングでは通常を指定して最初のテーブルデータを全て選択するようにします。この場合、二つ目のテーブルに最初のテーブルに該当するデータが無い場合、二つ目のテーブルに該当する列の内容はとなります。

結合の際の条件は句の後に記述され、最終的に結合後の行を絞るには句を使用し、ソートする為の句は、最後に記述します。

社員マスタでは、【管理者】という列があり、これは同じ社員マスタのデータとなります。つまり、管理者名を表示するには、社員マスタと社員マスタを結合する必要があります。このような結合を自己結合と言います。

この結合の記述のポイントは、二つの社員マスタに別名を与える事です。以下に管理者名を取得可能な自己結合の SQL を記述してください( +2 )





posted by at 2021-12-28 10:30 | プログラマ用 | このブログの読者になる | 更新情報をチェックする

2021年12月27日

MySQL : エクスポート・インポート : 16 ( 5x2 1x2 2x2 )

データ操作ステートメントで重要なSQLは、SELECTUPDATE INSERT です。これらで殆どのアプリケーションに必要な処理を実現できます。ただ、その中でもデータベースの中だけで完結しない SQL を知っておく事は開発や運用で重要になります。

MySQL では、SELECT を使用してテキストファイルにデータをエクスポートする事ができます。社員マスタの全ての列を C:/app/workspace/syain.932 へ出力する SQL を記述してください。

※ キャラクタセットは cp932
※ 列データの区切り文字は ,(カンマ)
※ 改行コードは \r\n
※ OPTIONALLY ENCLOSED BY '"' を使用する事

データをエクスポートするという事は、インポートを知っている必要があります。MySQL では上記処理で出力されたデータを LOAD DATA INFILE という SQL で実現します。(この SQL もデータ操作ステートメントです)
以下に、インポートする SQL を記述してください


社員マスタには、主キーが存在します。ですから、インポートする前にはデータを全て削除しておく必要がありますが、この場合はデータ操作ステートメントの構文では無く、データ定義ステートメントの構文を使用してください。前者はあくまで、アプリケーション内での削除に使われるもので、運用には後者を使用します。

バックアップ目的のエクスポートは、コマンドで行います。以下にコマンドプロンプトで行うエクスポートを記述してください。

※ localhost の lightbox データベース
※ ユーザは root で、パスワードは空文字
※ 出力ファイルは backup.sql

この内容は SQL となっていますので、インポートはSQL の実行を行うコマンドです。以下にその内容を記述してください






posted by at 2021-12-27 16:23 | プログラマ用 | このブログの読者になる | 更新情報をチェックする

2021年12月26日

SQL MySQL ベーシック : 15

データベースにはいろいろな種類があり、それぞれを管理するシステムと言う意味で一般的な通称としてと呼びます。その中で MySQL はSQLにおいて自由度の高いものとなるので、Oracel でできなかった事ができたりするので、MySQL で出来た事を【常識】と考えない事が必要です。

SQLには一般的に、データを操作するとデータを定義するに分かれますが、MySQL では、データベースを管理する SQL があります。その中でも SHOW 構文がプログロマにとっては有用なのでいくつか暗記しておく必要があります。

 : テーブル一覧
 : データベース一覧
 : 社員マスタのテーブル定義( CREATE 文 を表示 )
 : 社員マスタのテーブル情報
 : システム変数の値

また、MySQL には information_schema というデータベースが最初から存在し、MySQL のいろいろな情報を読み出す事ができます。特にの定義と列の情報は有用で、列の情報が格納されているのはというオプジォクトです。

データを定義する SQL は本来管理者が使用するものですが、最低限プログラマも知る必要があります
 : lightbox データベースを作成
 : 社員マスタに削除フラグを varchar(1)で追加
 : 社員マスタから削除フラグを削除
 : 社員マスタの性別のデータ型をvarchar(1)に変更
FieldTypeNullKeyDefaultExtra
社員コードvarchar(4)NOPRI
氏名varchar(50)YES
性別intYES
生年月日datetimeYES
上記定義で 社員というテーブルを定義するSQL を記述してください





posted by at 2021-12-26 10:15 | プログラマ用 | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します