SQL学習記録

·

·

基礎知識

・RDB(リレーショナル(連携・結合)データベース)
・RDBS:RDSを管理する
⇒結合条件:何を軸として、何を結合させるか

複数組み合わせてDBとなる。番号を指定する。

[用語]

主キー内容が重複することはない。外←主
外部キー他のDB(テーブル)と連携
エイリアス列に対し、別途名前を付けられる(DEPT NO→部署番号)
UnicodeUTF8 国際規定(3バイトで表現)
Sjis日本用(2バイトで表現)。Sjisで作成した文章はUTF8で表示できない
サプレス抑圧、抑制
リレーションテーブルを結びつける

SQL について

・SQL:問い合わせ言語
アプリ上からの指示、Actionが多い。(例:Google 検索指示)
(定期的)自動更新される。

1:テーブルを作成
2:コマンドで指定

結果(テーブル)挿入される

[SQL コンソール画面]

->入力が続いている状態
;最後、必ずつけて締める

[JSON 構文]
⇒複数のテーブルを連結させるために、Fromで複数のテーブルを指定
⇒(,)でテーブルを区切る
JOINでも可能だが、JOINとUsingで結合条件を指定する。

[コマンド]

\cエラーを出さずにコマンドの終了
*テーブル全体を表示する。(列名に使用する)
!=ノットイコール
and , or , not
ワイルドカード「_」、「%」
use “テーブル名”テーブルをひらく
-u ユーザ名 -p-p 入力後、パスワード
~ order by 列1 列2列1を優先に列1,列2共に並び変えられる
%A%:検索Aから始まる
between範囲指定

Select 文

※LIKE演算子:検索系

単一関数

※select文は2つの表を対象にできる

select CEIL(-14.8)-14
select floor(-14.8)-15
select mod(8,3)2
select power(4,3)4の3乗
select ROUND ( m , n )戻り値
select TRUNCATE切り捨て値
select SQRT(16);4 平方根

文字関数
select LENGTH(‘文字列’);char の長さ(文字列)をバイト数に戻す(空白を含めて何バイトか)
※win = shift JIS:1文字に対するデータ量
select INSTR(‘char1′,’char2’);char1に対してchar2を調べる。
霊:INSTR(‘田中 一’,’中’)→2
select SUBSTR(‘文字列’,n,m);n番目からm文字の長さを抜き出す。
例:SUBSTR(‘char’,2,3);→har
select UPPER小文字→大文字
select LOWER大文字→小文字
select CONCAT(‘char1′,’char2’);文を合体。
例:CONCAT(‘TOM’,’CAT’);→TOMCAT
select RPAD(‘char1′,n,’char2’);char1にn桁になるようにchar2を右に追加
RPAD(‘12345′,’8′,’$’)→12345$$$
select LPAD(‘char1′,n,’char2’);char1にn桁になるようにchar2を左に追加
LPAD(‘12345′,’8′,’$’)→$$$12345
select TRIM(both from ‘ KEN ‘)ブランクが消える。
LEADING:左、TRAIRING:右、BOTH:両方
select REPLACE(‘char1′,’n’,’char2′);char1内のnをchar2に変換する
> ANY(select 列 from 表 where 条件);※ANY いづれかよりも大きい(最も小さなものより大きい)
後者の答えを前者に返す

LIKE演算子

where:グループ関数と併用不可
※Having:グループしたものに条件付け

select ~where 列 between A and BA以上B以下
select ~where 列 not between A and B[A以上B以下]以外
select ~ where 列 in (‘A’,’B’,’C’,’D’)A,B,C,Dを取り出す
select ~ where 列 LIKE ‘J%’;列内のJから始まるもの
select ~ where 列 LIKE ‘____s’;列から最後「s」で終わるもの
select ~ where 列 LIKE ‘%K%’;Kを含むもの検索
select ~ where 列 not LIKE ‘%K%’;
select ~ where 列 LIKE ‘%K%’;

日付関数
select date_format (列,’%d日%m月%y年’)from テーブル;年月日の表示(~日、~月、~年)
select now現在の日時
select CURDATE日程のみ
select DATE_ADD(CURDATE(),Interval 2 MONTH)DATE_ADD:2カ月後を表示
DATE_SUB:2か月前を表示
Interval ‘3 2’ YEAR_MONTH3年2か月
select 列, IFNULL (列,0) from テーブル;指定した列内のNULLを0にする
select NULL IF (列,0) from テーブル;指定した列内の0はNULLになる

グループ関数

平均や合計などの集計時に使用。

select AVG(列) from テーブル;平均
select COUNT(列) from テーブル;列内の行数を数える。
select COUNT (distinct 列)~重複するものを除く
select MAX (列)~列内で一番高い(低い)値。MAX or MIN
select sum (列)~合計
select 列,列, MAX(列) from emp group by 列,列group by:列内の~ごとに
1つのグループとして反映させられる。
集合演算子

UNION ALL:重複を含む
UNION:重複を除く

例:select deptno from dept union all select deptno from emp;

表の結合:等価結合

・自然結合:重複する列を除く
・列内の細分化(?):group by

select 列名 from 表1,表2
where 表1.列名 = 表2.列名
※表1,2=別名
select 列名 from 表1 JOIN 表2 USING(列);列:共通
select 列 from 表 1 Natural JOIN 表2;自然結合
select 列 from 表 1 cross JOIN 表2;直積結合
select 列 from 表 1 JOIN 表2 ON 結合条件ON句
select 列 from 表 1 Left outer JOIN 表2 on 結合条件;外部結合。(※Left or Right)
(,)Where とJOIN ON について

select e.ename , d, dname ,d.deptno …(★1)

★1:以下、同じ結果
・from dept D join emp E where e.deptno = d.deptno;
・from dept D ,empE

select e.ename , e.sal, d.dname , g.grade …(★2)

★2
・from emp E, dept D ,salagradeG where 条件1 and 条件2
・from emp E, join dept D on 条件1 join salagradeG on 条件2

⇒「テーブル名」指定、「結合条件1」「結合条件2」
⇒「テーブル名」「結合条件1」、「テーブル名」「結合条件2」
※読み、追加しやすい


(,)区切り⇒古い書き方
JOIN:標準⇒結合条件:ON句
OK句の後にwhere可能

テーブル上操作

[テーブル作成例]

Create table SALESMAN (empno integer(4),name char(10)~);
※integer:数字数
Desc テーブル名:テーブルの状況確認

[データの変更(行の削除)]

DELETE from 表名 where 削除対象の行の抽出する条件
sal = 600 ;など

・まとめて項目削除
→~where 項目名 in (項目1,項目2,項目3);

※表の削除
DROP TABLE:やり直し可
TRUNCATE TABLE:やり直し不可

[副問い合わせ]

後文の応えを前文に出力
・select DNAME from dept where Deptno = (select Deptno from emp where ENAME = “ADAMS”)
・select ename , sal from emp where sal > (select AVG(sal) from emp);
※where が sal を指定

select ename , job from emp where job = (select job from emp where ename = ‘ALLEN’);
⇒JOBを絞ってenameを導く

DEPT表からEMP表のADAMSが所属するDNAMEを表示
⇒ADAMのDNAMEが知りたい
select dname from dept
where deptno =
(select deptno from emp where ename = ‘ADAMS’); ※条件

※deptno:何と関連付けるか

[データ操作(指定して変更)言語]

・INSERT:行の追加
・VALUES:値の指定

例:
INSERT INTO 表名(列名1,列名2…)values(値1,値2,…);
⇒どの列に何を追加するか
→Insert into 表名 values (追加内容);
⇒行の追加。指定されていない列はNULLが入る

[UPDATE文 + where 句]

例:UPDATE EMP SET JOB = ‘SAKESMAN’ where ENAM = ‘GRANT’;
⇒’ENAME’がGRANTはJOBをSALESMANに変える

UPDATE 表名 SET 列名1=値1 , 列名2=値2
where 対象とする行の条件

例:update EMP set sal = sal *1,5 where ENAME = ‘KENNEDAY’;

[トランザクション関係]

・自動コミット:トランザクション処理を自動的に行う

START TRANSACTION:トランザクション開始(実行しないと反映されない)

Set Autocommit=0:自動コミット無効
Set Autocommit=1:自動コミット有効

※トランザクション確定:COMMIT
※トランザクション取り消し:ROLL BACK
⇒COMMIT後にROLLBACKはできない

「セーブポイント」を作成してt戻れるように
savepoint 命名⇒Roll back 命名



ABOUT DIRECTOR
Yumi Suto

人生最初のダッツは抹茶

【取得資格】
・2020/07:ITパスポート
・2021/02:ITIL ver.3
・2021/09:AWS SAA-C02
・2022/06:AWS DVA-C01
・2024/04:AWS SOA-C02
・2025/07:AWS SAP-C02
・2025/08:PL-900
・2025/09:AWS DOP-C02
・2025/11:MLA-C01

error: Content is protected !!