【Git】Gitでリモートでpushしてしまったコミットを打ち消すrevert

git revertコマンドでリモートにpushしてしまったコミットを打ち消すことが出来る

リモートにpushする前でローカルブランチの変更を取り消したい場合はresetなどでHEADを取り消したり、リモートから強制pullで上書きで対処できる。
※git reset --hard origin/masterでローカルブランチを強制的にリモートで書き換える。


リモートにもうpushしてしまった時に取り消すことが出来るのがrevert。


指定したコミットを取り消した内容の新しいコミットを作成してくれます。


ポイントは取り消しのコミットを作成するというところ。Gitの記録には新しいrevertコミットのログが残ります。

git revertをするまえにgit logでコミットログを確認する


下記のようにgit logコマンドを実行してコミットログから取り消ししたいコミットのコミットIDを確認する。

[root@xxx-xxx]git log
commit x12345xxxxxxxxxxxxxx
Author: root <root@example.com>
Date:   Fri Jun 25 11:25:00 2023 -0926

    定常作業

commit x678910xxxxxxxxxxxxxx
Author: root <root@example.com>
Date:   Fri Jun 24 11:25:00 2023 -0926

    定常作業事前作業

今回は例として定常作業の"x12345xxxxxxxxxxxxxx"を取り消すものとする。

コミットIDを引数にgit revertコマンドを叩く


先にgit branchで向いている先のブランチが正しいことを確認しておく。

[root@xxx-xxx]git branch


実際にgit revertを実行する。

[root@xxx-xxx]git revert x12345xxxxxxxxxxxxxx

git revertを実行するとコミットが作成されるのでコメントを入力するviエディタが起動します。


メッセージを入力して保存すればコミットが行われます。


そのあとリモートにpushすることでリモートに取り消しコミットが反映されます。

[root@xxx-xxx]git push origin master

【Linux】通信が出来ていない!!tcpdumpでパケットを見て通信が出来ているか確認する流れ


サーバー間でテスト等を行うときに目的のサーバーにリクエストを送っても応答が無かったりして、テストが進まない時に通信が出来ていないケースがあった。


「繋がらない」と伝えるだけではなくパケットを確認するようにということですので、やり方を備忘録として残す。

使用しているインターフェースの確認

[root@xxx-xxx]route -vn
Kernel IP routing table
Destination  Gateway Genmask Flags Metric Ref Use Iface
x.x.x.x           x.x.x.x      x.x.x.x       xx      x          x    x      ethxx   

tcpdumpコマンドで条件を絞りたいため、通信を確認したいホストのIPとインターフェースを確認しておく。

tcpdumpコマンドをホストと出力ファイル名とインターフェースを指定して実行

上記手順で確認したインターフェースとホスト名を元にtcpdumpコマンドを実行する。

tcpdumpの構文は下記の通り。

tcpdump [ オプション ] [ EXPRESSION ]

tcpdumpを実行する。

■コマンド例

tcpdump -i ethX host XXX.XXX.XXX.XXX -w /tmp/XXX.pcap
tcpdump -nn -i any port 80 and not host XXX.XXX.XXX.XXX and not host XXX.XXX.XXX.XXX

80portで2つのipを除いてパケットを確認

tcpdump -i ethX host 127.0.0.1 -w /tmp/XXX.pcap
tcpdump -i ethX host 127.0.0.1 -w /tmp/XXX.pcap
  • iオプションでインターフェースを指定

host ○○で指定したホストにかかわるパケットをすべて表示

  • w で出力したパケットをファイルに出力

※この例のようにXXX.pcapと出力することでWireSharkツールで確認できる。

tcpdump -i any -n port 1813

1813ポートの全てのインターフェースをキャプチャする。IPアドレスの名前解決をしない。

tcpdumpのオプション例

1.rオプション
tcpdumpで指定したキャプチャを結果を読み込む

2.Aオプション
キャプチャデータをASCII表示

3.pオプション
自ホスト宛以外のデータをキャプチャしない

4.nnオプション
ホストアドレスに加えてポート番号等も名前に変換しない(sshと表示されるところが22と表示される)

5.nオプション
IPアドレスの名前解決をしない

6.not host XXX.XXX.XXX.XXX
※XXXのhostを含まずパケットを取る

tcpdumpの条件を指定した使い方

・送信元ipアドレスを指定

tcpdump src host[src_ip]

送信先ipアドレスを指定

tcpdump dst host[dst_ip]

送信先ipアドレスを指定

tcpdump dst host[dst_ip]

・送信元のポート番号を指定

tcpdump src port [port_num]

anyで複数指定

tcpdump -i any -nn port 1812
  • i any 複数インターフェースでキャプチャを指定したい場合のオプション

tcpdumpで取得したパケットの読み取り方

tcpdumpコマンドを実行するとコンソールに沢山情報が出るが読み取り方を知っておく必要がある。

18.40.17.200000 IP 127.0.0.1.9999 > 127.0.0.1.xxxx-acct: RADIUS, XXXXXXXX-Request (X), id: 0x11 length: 55
18.40.17.211111 IP 127.0.0.1.xxxx-acct > 127.0.0.1.9999: RADIUS, XXXXXXXX-Response (X), id: 0x11 length: 20
  • 読み方

1. まず時間が表示される。
 箇所:18.40.17.200000

2. IPヘッダが表示される
 箇所:18.40.17.200000

3. 送信元IP,送信元TCPポート,宛先IP、宛先TCPポートが表示される。[ipアドレス.ポート]
 箇所:IP 127.0.0.1.9999 > 127.0.0.1.xxxx-acct:
127.0.0.1の9999ポートから127.0.0.1.xxx-acct:にリクエストが来ているということ
※その下の"127.0.0.1.xxxx-acct > 127.0.0.1.9999:"は127.0.0.1.xxx-acctから返答しているということ

4. TCPヘッダ情報が表示される。
 箇所:XXXXXXXX-Request, id: 0x11 length: 55

さいご

最後まで読んでいただき、ありがとうございました。


もし、記載している内容が間違えていれば遠慮なくコメントしてください!


私自身の勉強になりますし、他の人がこの記事を見た時に間違えた情報を見ることになってしまうので💦

【Linux】radclientコマンドの使い方

仕事でradius認証に関する試験を行うことになり、radius認証リクエストを送れるradclientコマンドの使い方を1から調べて作業をしているので備忘録を残します。


radiusの理解がかなり薄いため誤っている情報があればご教示いただけると嬉しいです。


※この記事は更新する可能性があります。

radclientコマンドの構文

/XXX/XXX/radclient [オプション] [IPアドレス]:[ポート番号] [コマンド] [シークレット]

※オプションでアトリビュートファイル等を引数に出来る
※コマンドはauth、acct、status、coa、disconnectのどれか
※シークレットはclientファイルで定義しているクライアント:シークレットの組み合わせ

実行例

/usr/local/radclient -x 127.0.0.1:1111 auth testting123 -f /attrbuteファイル

auth認証を送る例。testing123はデフォルトのシークレット

attrbuteファイルについて

attrbuteファイルではPacket-Type = "○○"でパケットタイプを指定したり
Packet-Src-IP-Address = "○,○,○,○"で宛先IPを指定したり、Packet-Dst-Port = "○○"でポート番号を指定することが出来る。


アトリビュートファイルで指定した場合はradclientコマンドの引数に指定しているポート番号や宛先IP、認証種別は無視される。
アトリビュートファイルが優先される

attrbuteファイルでは実施するユーザのユーザ名とパスワードも指定できる。

アトリビュートファイルを作成せずともradclientでリクエストを送る方法

echoコマンド | radclientの形式で実行できる。

実行例

echo "User-Name=freeRadiusTest",User-Password=freeRadiusTestPass" | /usr/bin/radclient/ -x localhost:1812 auth testing123

【Linux】cronの設定ファイル

仕事でLinuxサーバーをCentOS7に変更し、新たにサーバーの設定をするという作業があり
先に新サーバーの設定値を検討する必要がありました。


cronの設定をどうするかということでまずはcronの設定ファイルはどれかや設定ファイルの設定の仕方などを1から調査したので備忘録として残します。

cronとは

cronは定期的に自動実行するためのツールと考えるとよい。


crondプロセスが常駐してジョブを実行する。


cronを利用することで「毎日○時」や「毎週○曜日の○時に」と時間を指定したらタスクを実行してくれる。


cronはLinuxで定期的にログを取ったりする時に利用される。

cronの設定ファイル

cronの設定ファイルは「/etc/crontab」です。


基本的にはこのファイルを直接編集することは推奨されておらず「/etc/cron.d/」配下にファイルを作成することが推奨されている。

  • /etc/crontabの初期状態
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

何が違う?anacronとcron

cronについて調べているanacronという物がちょいちょい出てきました。


CentOS7でジョブを定期的に実行するときに利用されるのが「anacron」のようです。


CentOS5までは「cron」が採用されていたが、CentOS6以降からは「anacron」が採用されているとのこと。


anacronとcronの違いは実行タイミングが違うそうです。

cron→指定した日時に実行される。
anacron→指定した実行可能範囲の間で実行される。


anacronの場合はいつ実行されるかはだいたいの範囲でしかわからないというのが特徴。


cronはいつの何時何分に実行して!という感じに対して、anacronは出来そうな時間によろしく!という感じでしょうか。

さいご

最後まで読んでいただき、ありがとうございました。


もし、記載している内容が間違えていれば遠慮なくコメントしてください!


私自身の勉強になりますし、他の人がこの記事を見た時に間違えた情報を見ることになってしまうので💦

関連記事・オススメ記事

wataru55120.hatenablog.jp


wataru55120.hatenablog.jp

【Linux】ネットワーク・インターフェース関連の設定ファイル

仕事でLinuxサーバーのネットワーク・インターフェース周りの設定を調査してまとめるという作業を行ったので、ネットワーク・インターフェース周りの設定ファイルについて備忘録として残します。

/etc/sysconfig/network

このファイルには、システム上のすべてのネットワーク・インターフェースに有効な追加情報が指定されています。


IPv4ネットワーキングが有効化されること、IPv6ネットワーキングが有効化されないこと、システムのホスト名、およびデフォルト・ネットワーク・ゲートウェイIPアドレスが定義されている。


ここでIPv6を利用しないのにマシン上で有効にしたままにしているとDNS絡みで余計な問い合わせが増えて通信速度の低下がありえる。

■書式

NETWORKING=yes        #ネットワークを有効にするという設定
HOSTNAME=hoge         #マシンのホスト名
GATEWAY=192.168.1.1   #デフォルト・ゲートウェイ(ルータ)のIPアドレス

/etc/sysconfig/network-script/ifcfg-eth0

システム内の最初のイーサネット、ネットワークインターフェースカード(NIC)を制御する。

■書式

DEVICE=eth0            #ネットワークインターフェース名
BOOTPROTO=static #システム起動時にIPアドレス等を割り当てられるしくみを利用するか否かの設定(BOOTP/DHCP/NONE/Static)
BROADCAST=            #ブロードキャストアドレス
IPADDR=                   #そのシステムのIPアドレス
NETMASK=               #ネットマスク
NETWORK=             #そのシステムが属するネットワーク
HWADDR=             #MACアドレス
ONBOOT=              #起動時に有効にするかどうか

/etc/sysconfig/network-script/route-eth0

■書式

宛先 Via ゲートウェイ

静的ルートの追加を行う。


ルーティングテーブルの設定が出来る。

さいご

最後まで読んでいただき、ありがとうございました。


もし、記載している内容が間違えていれば遠慮なくコメントしてください!


私自身の勉強になりますし、他の人がこの記事を見た時に間違えた情報を見ることになってしまうので💦

【基本情報技術者試験】受験して合格してきました!受験までの流れや合格証書の名前修正したので流れをまとめます


EngineerWataruです。


4月に【基本情報技術者試験】を受験してきました。


この試験は学生時代に1度受けたものの全然歯が立たずに、諦めていたのですがこの業界で働いていると取っておかないとなぁ・・・という気持ちに駆られるので勉強し直して受験することにしました。

試験の予約から受験までの流れ

基本情報技術者試験】はコロナ禍の影響か前のように試験会場が決まってて、筆記で受けるのではなく試験会場をプロメトリックというアカウントから自分で予約してCBT形式で受験するようにルールが変わりました。


つまり【基本情報技術者試験】を受験するにはプロメトリックのアカウントを作成する必要があり、試験会場を自分で予約して受験することになります。


試験会場の予約は午前試験と午後試験は別々で予約します。


そのため、これまでのように午前試験を受けて休憩した後に午後試験という流れではなく別の日に午後試験を受けるということも出来るようになりました。


受験料は午前試験の予約をする時に支払います。


会社に受験料を申請する方はプロメトリックの試験予約詳細からWEB領収書を発行できます。

試験当日は身分証明と予約内容が確認できるPDFを忘れずに

試験当日は試験を予約している本人を確認できる身分証明書は必須です。


受験中も身分証明書はテーブルに置かなければなりません。


緊張しながら試験会場に向かいます。

午前試験を受験してから1週間後に午後試験を受験しました

午前試験を受験してから1週間後に午後試験を受験しました。


それまでの1週間は午後試験の勉強に集中できました。

試験結果はスコアレポートですぐに確認できる

基本情報技術者試験】はCBT形式に変わってから試験結果を即時に確認することができるようになりました。


プロメトリックからスコアレポートがすぐにメールで来ます。


スコアレポートの右上にある【得点】がそのまま点数になるようです。


午前試験は80点と余裕がありました。



午後試験は60.5という60点ちょうどというギリギリ。


過去に60点ちょうどで不合格になったという事例があるらしくてめちゃくちゃ不安になりました。


いくら調べてもキリが無いので、IPAの合格発表を待ちます。


試験結果は翌月末にIPAのページに合格者のプロメトリックIDが掲載されます。

試験結果は合格

試験の結果は、受験した4月から一月後の5月末に発表されました。


結果は無事合格でした。本当に嬉しい!


これまでなんども勉強してきましたが無理だと諦めていましたから・・・

合格お祝いに寿司

今回試験を受けるのを最後にしようと思っていたので、合格祝いにお寿司を食べました♪


合格証書の名前が誤っている場合

プロメトリックアカウントで自分の名前が間違えていたり、名前が環境依存文字で入力できない場合は誤った名前で合格証書が送付されてきます。


プロメトリックアカウントで修正することはできないので、対応としては合格証書を受け取った後に再送してもらうことになります。


私の場合は環境依存文字だったのですが、プロメテックに直接問い合わせたところ合格証書が届いてから案内があるため、その通りにしてくださいとのこと


合格証書が届くと、こんな案内があります。


合格証書を修正するには、
1.合格証書に正しい名前を直接書き込む
2.住民票の写し
3.再送用の連絡先電話番号と住所を記入したメモ
4.480円分の切手を用意
を一緒に案内に記載されている住所に送ります。

3営業日ほどで下記の通知と共に修正された合格書が届きました

パスワードの安全な保存

パスワードを安全に保存する方法について学んだ議事録を残します。

パスワードをハッシュ化して保存する

ユーザのパスワードを保存する時にパスワードを平文(そのまま)保存しておくと漏洩してしまった時に不正にアクセスされるリスクが高まります。


そのためパスワードはハッシュ関数を利用して、ハッシュ化して保存することが好ましいです。

ハッシュ関数の特徴

ハッシュ関数の特徴を解説します。

ハッシュ関数【SHA-256】

ハッシュ関数で代表的なSHA-256は256ビットのハッシュ値を出力するハッシュ関数です。

今回のまとめ


パスワードは平文のまま保存していると漏洩リスクが高まる

パスワードはハッシュ関数を使ってハッシュ化するのが好ましい

ハッシュ関数【SHA-256】は256ビットのハッシュ値を出力する代表的なハッシュ関数


さいご

最後まで読んでいただき、ありがとうございました。

もし、記載している内容が間違えていれば遠慮なくコメントしてください!
私自身の勉強になりますし、他の人がこの記事を見た時に間違えた情報を見ることになってしまうので💦

IEEE754の浮動小数点数の表現


コンピュータで少数点を含む数値を表現するときに浮動小数点数という表現の仕方があります。


その中でも、IEEE(米国電気電子学会)により規格されたIEEE754の浮動小数点数について解説していきます。

基本の浮動小数点数の表現

まず、基本の浮動小数点数の表現の仕方から見てみましょう。


浮動小数点数は「符号」「指数部」「仮数部」の形式で表現します。


32ビットで表現する場合は下記の通りです。

【符号】 【指数部】 【仮数部】
1ビット     7ビット      24ビット
  • 符号は正の場合は0、負の場合は1とする
  • 指数部は【2^n】で表記する指数nを7ビットの2進数にした値

負の数の場合は2の補数で表現

  • 仮数部は正規化した小数点以下の値


仮数部は少数点以下(0.101なら101以降)が入り、指数部は2^-6の-6を7ビットの二進数にした値が入ります。

   0    .  10101010 × 2^-6
符号   仮数部        指数部



浮動小数点数形式における正規化とは?

浮動小数点数仮数部には正規化した値が入りますが、そもそも正規化とは何のことかという話です。


浮動小数点数形式における正規化とは少数点の位置を移動し、最上位の桁を0以外の値にすることを言います。


正規化の例を見てみましょう。

0.016×10^-2」、「0.00016×10^0」、「0.0016×2^-1 」の数値はどれも同じ数値です。


この数字から小数点の最上位を「0.16^10-3」のように0以外に変えることが正規化です。

0.016 × 2^-2    ⇒
0.00016 × 2^00.36 × 10^-3
0.016 × 2^3   ⇒       正規化された形式

2進数の場合の浮動小数点数を表現してみる

上記では10進数でしたので2進数の「0.001」を32ビットの浮動小数点数の形式にします。

まずは仮数部を求める

0.001は小数点数の最上位桁が0なので0以外になるようにまずは正規化を行います。

0.001
   ↓ 正規化
0.1 × 2^-2


仮数部には正規化した0.1の小数点以下の値を入れます。
24ビットあるので足りない部分は全て0で生めます。

【符号】 【指数部】 【仮数部】
1ビット     7ビット      1000000000000000000000000.1124ビットの枠に入れる()
次に指数部を求める

次に指数部を求めます。

指数部は2^nのnを2進数にした値です。


今回の例だと「0.1 × 2^-2」ですのでnは「-2」と負の数ですね。


なので2の補数を使って7ビットの2進数にします。

0000010

   ↓

1111101

   ↓1を加算する

1111110(10進数: -2)
  • 2の負の補数にした2進数にすると1111110が求まりました。


指数部にはこの「1111110」を入れます。

【符号】 【指数部】                                                                          【仮数部】
1ビット     11111102の補数表現をした2^-2の【1111110】を入れる。  100000000000000000000000  
最後は符号を設定する

最後は符号を設定すれば浮動小数点数の形式が完成します。


符号部は正の数なら0、負の数なら1を設定します。


今回の例の2進数の「0.001」はの正の数なので0を設定します。

【符号】 【指数部】 【仮数部】
0ビット     1111110    100000000000000000000000


完成。

011111101000000000000000000000000.001」を浮動小数点数の形式にしたもの




IEEE754の浮動小数点数

次に「IEEE754」の浮動小数点数形式のやり方をご紹介します。


IEEE754は32ビットの場合、下記のように表現します。

【符号】 【指数部】 【仮数部】
1ビット     8ビット      23ビット


IEEE754が、基本の浮動小数点数形式と違う点は正規化を「1.xx」の形式で正規化します。


2進数の「0.0011」を正規化すると「0.11 × 2^-2」になるところ、IEEE754だと「1.1 × 2^-3」と正規化します。


これで1ビット多く保持できます。


符号、指数部、仮数部は下記のように求めます。

  • 符号は正の場合は0、負の場合は1とする
  • 指数部は【2^n】で表記する指数nに対して127を足して、2進数表記にした値

負の数の場合は2の補数で表現

  • 仮数部は1.XXの形で正規化した小数点以下の値

IEEE754の浮動小数点数に表現してみる

先ほどと同じ「0.001」をIEE754の浮動小数点数にしてみます。

仮数部を求める

まずは仮数部を求めます。


IEEE754の場合は仮数部は1.XXに正規化した値が入ります。

0.001を正規化します。

0.001

    ↓ 正規化

1.1 × 2^-3


仮数部には正規化した「1.1」の小数点以下の1が入ります。


足りない部分は全て0で埋めます。

【符号】 【指数部】 【仮数部】
1ビット     8ビット      10000000000000000000000

次に指数部を求める

次に指数部を求めます。

指数部には2^nのnの部分に127のバイアスと呼ばれる値を加算した結果を2進数にした値を入れます。

今回の例だと「1.1 × 2^-3」なので-3に127を加算した値を2進数に変換します。

-3 + 127 = 12401111011


127を加算した結果の「124」を2進数に変換した「01111011」が指数部になります。

【符号】 【指数部】 【仮数部】
1ビット     01111011      10000000000000000000000

最後に符号を求める

最後に符号部を求めます。

2進数の「0.001」は正の数なので0を設定します。

【符号】 【指数部】 【仮数部】
0     01111011      10000000000000000000000

完成です。

00111101110000000000000000000000

IEEE754で正規化した「0.001



浮動小数点数における"誤差"

浮動小数点数では表現できる数の範囲が決まっていて、32ビット形式なら仮数部は24ビット、IEEE754なら23ビットです。


割り切れないような2進数の少数などはこの範囲に収まらないため、それと近い値で表現しますが、その弊害に実際の値と誤差が出てしまいます。


誤差には4種類あります。

種類 内容
丸め誤差 表現できる値の範囲を超えた時に有効桁を切り捨てることによって発生する誤差
打ち切り誤差 コンピュータの計算途中で打ち切ることによって発生する誤差
桁落ち 値がほぼ等しい値の差を求めた時に発生する誤差
情報落ち 大きい値と小さい値の数値の和もしくは差を求めた時に発生する誤差


丸め誤差は「0.11001100...」と続く無限小数に対して、24ビットで収まるように有効桁以降を捨てることで、正しい結果との間に誤差が発生することです。



打ち切り誤差は「1/3=0.3333333」と続く計算を行う時に、コンピュータが途中で計算を打ち切ることで正しい結果との間に誤差が発生することです。


桁落ちは値がほぼ等しい値と計算することで有効桁数が減少しておきる誤差です。


例えば、「1.2345−1.2344 」を計算すると0.0001となり有効数字が5から1桁に減少することで発生する誤差です。



情報落ちは大きな値と小さい値の加減算を行う際に、小さい値の情報が無視されてしまうことによって生じる誤差です。


例えば、有効桁数が4桁だと、下記の計算を行うと0.12341234となるところ

0.1234
     +
0.00001234 

有効桁数が4桁なので0.1234となってしまい、値の小さい0.00001234が無視されてしまいます。




さいご

最後まで読んでいただき、ありがとうございました。

もし、記載している内容が間違えていれば遠慮なくコメントしてください!


私自身の勉強になりますし、他の人がこの記事を見た時に間違えた情報を見ることになってしまうので💦

関連記事・オススメ記事

www.engineer-wataru.com


wataru55120.hatenablog.jp


wataru55120.hatenablog.jp




↓オススメ書籍↓

スッキリわかるJava入門第3版 [ 中山清喬 ]

価格:2,860円
(2022/1/17 17:09時点)
感想(7件)


JavaプログラマGold SE 8 試験番号:1Z0-809 (オラクル認定資格教科書) [ 山本道子(プログラミング) ]

価格:4,620円
(2022/1/17 17:10時点)
感想(0件)


新人エンジニアのための データベースのしくみと運用がわかる本【電子書籍】[ 五十嵐貴之 ]

価格:2,178円
(2022/1/17 17:11時点)
感想(0件)





【SQL】LIKE句の使い方|完全一致と部分一致の検索のやり方


LIKE句を使うとSQLで文字列検索を行うことができます。

完全一致で検索する場合

SELECT 列名 FROM テーブル名 WHERE 列名 LIKE '検索文字';

LIKE'検索文字'となっている箇所に検索したい文字を入れることで文字列で完全に一致する物を検索ができます。


〇〇を含むという部分一致で検索を行いたい場合はワイルドカードで検索を行います。

ワイルドカード検索(部分一致)

ワイルドカード 意味
% 0文字以上の任意の文字列
_ 任意の1文字


下記のテーブルがあったとします。

id brand market price
1 AAPL 160
2 MSFT 290
3 AMZN 3000
4 GOOGL 2200
5 FB 220


barand名が任意の文字で始まり、'L'で終わる項目をワイルドカードで検索してみます。

SELECT 列名 FROM テーブル名 brand WHERE  LIKE '%L';

/*
AAPLのレコードがヒット


----------------------------
id | brand | market price|
1  | AAPL  | 160
----------------------------

/*


barand名が'A'始まる項目をワイルドカードで検索してみます。

SELECT 列名 FROM テーブル名 brand WHERE  LIKE 'A_';

/*
AAPLとAMZNのレコードがヒット


----------------------------
id | brand | market price|
1  | AAPL  | 160
3  | AMZN  | 3000
----------------------------

/*

さいご

最後まで読んでいただき、ありがとうございました。

もし、記載している内容が間違えていれば遠慮なくコメントしてください!
私自身の勉強になりますし、他の人がこの記事を見た時に間違えた情報を見ることになってしまうので💦

【DB】SQLのCASE句について


SQLにもプログラムのようにif~else文のような条件式を使う事ができるのはご存知でしょうか?

SQLのCASE句についてまとめてみます。

CASE句で条件式に一致するかどうかで返す値を変えることができる

SQLのCASE句を使う事で条件分岐をSQL文で行うことができます。

CASE句は下記の構文です。

CASE
 WHEN {条件式} THEN {真の場合の値}
 WHEN {条件式} THEN {真の場合の値}
  :
  ELSE {偽の場合の値}
END


例えば、列名性別があったとして、'0'なら男、'1'なら女を返す。


どちらにも一致しない場合は'-'を返すというイメージです。

性別
0
1
CASE 性別
 WHEN 0 THEN '男'
 WHEN 1 THEN '女'
 ELSE '-'
 END


CASE句はWHEN句を必ず記載しなければならないので構文には注意しましょう。



↓オススメ書籍↓

スッキリわかるJava入門第3版 [ 中山清喬 ]

価格:2,860円
(2022/1/17 17:09時点)
感想(7件)


JavaプログラマGold SE 8 試験番号:1Z0-809 (オラクル認定資格教科書) [ 山本道子(プログラミング) ]

価格:4,620円
(2022/1/17 17:10時点)
感想(0件)


新人エンジニアのための データベースのしくみと運用がわかる本【電子書籍】[ 五十嵐貴之 ]

価格:2,178円
(2022/1/17 17:11時点)
感想(0件)

【DB】MySQLの日付の関数について

MySQLの関数で職場で使用している関数について調査しつつ、関数の使い方について同時に勉強しています。


MySQLの日付の関数について記録を残します。

DATE_FORMAT関数

DATE_FORMAT関数は日付を表す値を指定したフォーマットに整形してくれるコマンドです。


引数に日付と整形するフォーマットを指定して使用します。

DATE_FORM(date,format)

第一引数(date)に日付を表す文字列、整形するフォーマットを第二引数(format)に指定します。


使用できるフォーマットはこちらで確認できます。
dev.mysql.com

  • 使い方の例

2022/2/17を「4桁の年」、「英語の月名」、「数字の日」に整形してみると下記のようになります。

select date_format('2022-02-17'), %Y %M %d');
2022  February 17 

CURRENT_DATE関数

CURRENT_DATE();

現在の日付を取得することができる関数

DATE関数

DATE(date)

引数で指定した日付時刻形式or日付形式の値から日にち(1~31)の数値で返す関数

DATE_SUB関数

指定した時刻から減算して値を返す関数

DATE_SUB('2022-02-17 23:59:59',INTERVAL 1 DAY)
2022-02-18 23:59:59

NOW関数

now()

現在の日付と時刻を'YYYY-MM-DD hh:mm:ss'またはYYYYMMDDhhmmss形式で取得できる関数

さいご

最後まで読んでいただき、ありがとうございました。

もし、記載している内容が間違えていれば遠慮なくコメントしてください!
私自身の勉強になりますし、他の人がこの記事を見た時に間違えた情報を見ることになってしまうので💦