ïŒïŒã¯ããã«
- åã¯30幎以äžã®SE人çã§æ§ã ãªæ¥åã·ã¹ãã éçºã«ããŒã¿ããŒã¹ã¹ãã·ã£ãªã¹ããã·ã¹ãã ã¢ãŒããã¯ããšããŠåå ããŠããŸãã
- ãã®äžã§ ãDBèšèšã®å€±æã ãã©ãã»ã©åŸã
ãŸã§åœ±é¿ããããäœåºŠãèŠãŠããŸãã
ïŒå€ãã®å Žåãçµåãã¹ã以éã§ ããã©ãŒãã³ã¹ãåºãã«åé¡ãé²èŠð¥ð¥ ïŒ - æã®åã¯æ£èŠååç䞻矩ã§ããããä»ã¯æ£èŠåããããŠäžéšã§åŽ©ã ãæå³çã«æ£èŠåãç·©åã ããŠãŸã
ð æ¢åã®DBã®èãéãããšâŠ
â åœç¶ã®ããã« ERå³ãååšããªã
ããïŒ èšèšæžã®äžã§ æéèŠ ãšæã£ãŠãŸã ïŒ
â å
šç¶ åç
§æŽåæ§å¶çŽãç¡ãããããŒãã«éã®é¢é£ã¯èªåã§å
šéšèªã¿è§£ããããªã
â åç
§æŽåæ§å¶çŽãç¡ããããåç
§å
ã®ãã¹ã¿ã«å€ããããä¿èšŒã¯ç¡ã
ããïŒä¿èšŒãç¡ãããåžžã«left joinïŒ
â åé€ãã©ã°ã« 0,1 ã ãã§ãªã null ã 9 ãªã©å
¥ã£ãŠããŠãã©ãæ±ãã¹ããåãããªã
â ïŒã€ã®åã«è€æ°ã®æå³ãæãããŠãããïŒåé€ãã©ã°=9ã¯åŒ·å¶åé€ãªã©ïŒ
â åã®ååãäžååã§è¯ãåãããªã
ããïŒ äŸãã°ãè«æ±ãã©ã°ãã ãã§ã¯ "è«æ±æžã¿" ãªã®ã "è«æ±å¯Ÿè±¡" ãªã®ãåãããããïŒ
â ãããªåé¡ãåŒãèµ·ãããªãããã«
- æé«ã®èšèšããªã·ãŒãïŒã€ã ããã£ãŠãã®ä»ã¯ãã¡ããšããããšã§ã¯ãªãå®éã¯ã±ãŒã¹ãã€ã±ãŒã¹ãªããšãå€ãã§ã
- ãã ãããåãã£ãŠã¯ããããã©æ¢åããŒã¿ãããã ããããã¯åŠ¥åãããã®ãšãäœãèããŠããªãã®ã¯å šç¶éããŸã
ããªãã®è·å Žããããžã§ã¯ãã«åãããŠã«ã¹ã¿ãã€ãºããŠãã ãã
ïŒïŒïŒ€ïŒ¢èšèšã®åºæ¬
â DBã®å¯¿åœãšäŸ¡å€
- éçºããã¢ããªããDBã®æ§é ãšãã®äžã®ããŒã¿ã®å¯¿åœã®æ¹ãã¯ããã«é·ã
- äžæ£ãªããŒã¿ãæ··ãã£ãŠããŸããšããã®ããŒã¿ã¯äœ¿ããªã
ããªãã®éè¡æ®é«ãããå€åãªããšãªãæ£ããã¯ããã§ã¯å°ããŸããã
â äžæ£ãªããŒã¿ãæ··ãããªãããã«ã§ããããš
- DBã®åã¯ã§ããã ãnot nullã§èšèšãã
- ã§ããéãåãéå®ãã
- ON/OFFãããªããªãboolåã«ãã
- æ¥ä»ã¯ date åãå©çšãã
- å ¥åããŠè¯ãå€ãéå®ãããŠãããªãCHECKå¶çŽãä»ãã
ã€ãŸãå
¥ã£ãŠè¯ãããŒã¿ãã§ããã ãéå®ããã
æ§é çã«äžæ£ãªããŒã¿ãå
¥ããããªãããã«ãã
ãããâ åå®å
šæ§ãšããŒã¿æŽåæ§ã®ç¢ºä¿
â ãªãã§ããã ãnot nullã§èšèšããã®ãïŒ
- selectããæã«åžžã«nullã®å Žåã«é æ ®ããããšã¯åççãïŒ
select isnull(æ°å, 'æ°åäžæ') as æ°å
- ãããã null ã®ç¶æ
ã§ç»é²ããäºã¯å¥å
šãïŒ
ïŒå°ãªããšã瀟å¡ãã¹ã¿ã®ãæ°åããnullã®ããŒã¿ãç»é²ã§ããŠããã®ãïŒïŒ
åã®DBèšèšã®åž«å ã¯ãæ¥æ¬ã«RDBãåããŠå°å
¥æ®åãããšã³ãžãã¢ã®äžäººããšãããŠããæ¹ã§ãã
åž«å ã¯æãnull ã®å¯èœæ§ã®ããåã¯ååå¥ããŒãã«ã«åé¢ããïŒããšããè¶
éæ¿æŽŸã§ããã
â è¯ãCREATEæ
create table ç€Ÿå¡ (
ID int identity not null primary key
, 瀟å¡çªå· varchar(10) not null unique
constraint CK_瀟å¡_瀟å¡çªå· check (len(瀟å¡çªå·) = 10)
, æ°å nvarchar(50) not null
constraint CK_瀟å¡_æ°å check (len(æ°å) >= 2)
, çå¹Žææ¥ date not null
, è·çŽ int not null
constraint CK_瀟å¡_è·çŽ check (è·çŽ in (1, 2, 3))
)
ð è¯ãç¹
- 瀟å¡çªå·ã¯åšè·äžã«å€æŽãããã±ãŒã¹ãããïŒã客æ§ã®ç€Ÿå
ã«ãŒã«ã«äŸåïŒ
â Primary Keyã«ãã¹ãã§ã¯ãªã - 瀟å¡çªå·ã¯ Primary Key ã§ã¯ãªãã unique ã«ããããšã§éè€ã¯æé€ã§ãã
- 瀟å¡çªå·ãšæ°åã«é·ãã®å¶çŽãããã空æåãªã©ã¯ç»é²ã§ããªã
- æ°åãçå¹Žææ¥ãè·çŽãªã© not null å¶çŽã«ããå€ãä¿èšŒããã
- è·çŽã¯æ°å€ã®1,2,3ããåãããªãããšãä¿èšŒããã
â æªãCREATEæ
create table ç€Ÿå¡ (
瀟å¡çªå· nvarchar(10) primary key
, æ°å nvarchar(50)
, çå¹Žææ¥ varchar(10)
, è·çŽ char(1)
)
ð« æªãç¹
- 瀟å¡çªå·ãPrimary Key
- 瀟å¡çªå·ãæ°åã«é·ãã®å¶çŽãç¡ãã®ã§ã空æåãªã©ãããã
- æ°åãçå¹Žææ¥ãè·çŽãªã© nullããããã
- è·çŽã«ååšããªã 4 ã A ãªã©ããããã
â ãªãã§ããã ãæ¥ä»åãå©çšããã®ãïŒ
- æ¥ä»ãšããŠã®æå³ãä¿èšŒããã
- æŒç®ã»é¢æ°ã䜿ãã(dateadd, datediff ãªã©)
- ãœãŒããæ¯èŒãæ£ããã§ãã
- ã¹ãã¬ãŒãžå¹ç(date ã¯åºå®3ãã€ããvarchar(10) ã¯æå€§12ãã€ã)
â CREATEæãããã«æ¡åŒµ
å
ã»ã©ã®è¯ãCREATEæã®è·çŽã®å¶çŽã§
ãå°æ¥è·çŽãå¢ãããã©ãããã®ïŒããšæã£ãæ¹ã¯ã»ã³ã¹ãè¯ãã§ãã
constraint CK_瀟å¡_è·çŽ check (è·çŽ in (1, 2, 3))
å°æ¥å€æŽãããå¯èœæ§ãé«ãããžãã¹ã«ãŒã«ã¯ãããŒã¿æ§é ã§è¡šçŸããŸãã
create table è·çŽåºå (
è·çŽ int not null primary key
, è·çŽå nvarchar(20) not null
constraint CK_è·çŽåºå_è·çŽå check (len(è·çŽå) >= 2)
)
create table ç€Ÿå¡ (
ID int identity not null primary key
, 瀟å¡çªå· varchar(10) not null unique
constraint CK_瀟å¡_瀟å¡çªå· check (len(瀟å¡çªå·) = 10)
, æ°å nvarchar(50) not null
constraint CK_瀟å¡_æ°å check (len(æ°å) >= 2)
, çå¹Žææ¥ date not null
, è·çŽ int not null
, constraint FK_瀟å¡_è·çŽ foreign key (è·çŽ) references è·çŽåºå(è·çŽ)
)
ð è¯ãç¹
- è·çŽãå°çšã®ããŒãã«ã«åé¢
- å°æ¥çãªè·çŽã®è¿œå ã«ããŒã¿æ§é ã®å€æŽãªã察å¿ã§ãã
DBèšèšïŒããŒã¿æ§é ïŒã§ããžãã¹ã«ãŒã«ã衚ãã®ãæå
RDBãšã¯ãªã¬ãŒã·ã§ãã«DBããªã¬ãŒã·ã§ã³ã倧åã
â æªãæ¡åŒµã®äŸïŒå®åã§ã¯æã èŠãããïŒ
create table æ±çšåºå (
ID int identity not null primary key
, åºåçš®é¡ varchar(10)
, åºåã³ãŒã varchar(10) not null
, åºåå nvarchar(20) not null
)
create table ç€Ÿå¡ (
ID int identity not null primary key
, 瀟å¡çªå· varchar(10) not null unique
, æ°å nvarchar(50) not null
, çå¹Žææ¥ date not null
, è·çŽ int not null
)
- ããŒãšåç§°ã®çµã¿åãããæ±çšããŒãã«ã§ä¿æããèšèš
- äžèŠå¹ççã«èŠãããããããã瀟å¡ã®è·çŽãåããå€ãå¶éããç®çãå®çŸããŠãªã
DBã«ã§ããéãäžæ£ãªããŒã¿ãå ¥ããããªãè¶£æšãšåããŠãã
ð åç §æŽåæ§å¶çŽ(foreign key)ã®äŸ¡å€
â åç §æŽåæ§å¶çŽãããå Žåã®SELECTæ
select
s.瀟å¡çªå·
, s.æ°å
, c.è·çŽå
from ç€Ÿå¡ s
join è·çŽåºå c
on s.è·çŽ = c.è·çŽ
ð è¯ãç¹
- ççµåã§ãã
ïŒç€Ÿå¡ãã¹ã¿ã®è·çŽã¯ãå¿ ãè·çŽåºåã«ååšããããšã ãä¿èšŒã ãããŠããïŒ
â åç §æŽåæ§å¶çŽãããªããå Žåã®SELECTæ
select
s.瀟å¡çªå·
, s.æ°å
, isnull(c.è·çŽå, 'è·çŽäžæ') as è·çŽå
from ç€Ÿå¡ s
left join æ±çšåºå c
on s.è·çŽ = c.è·çŽ
and c.åºåçš®é¡ = 'è·çŽ'
ð« æªãç¹
- DBã«å¶çŽãç¡ã以äžãå€éšçµåãããããªã
- ä¿èšŒãããŠããªã以äžãjoinã§ããªãã£ãå Žåã®ããšãåžžã«èããå¿ èŠããã
- ãã¡ãã®SELECTæã®æ¹ãäžè¬çã«è² è·ãé«ãé ã
ïŒïŒå¹çããSELECTã§ããããåžžã«æèããŠïŒ€ïŒ¢èšèšãã
- ããŒã¿ã¯èªãã§å©çšããããã«ç»é²ããã
- ç»é²ãä¿®æ£ãããåæ°ãããèªã¿åãããåæ°ã®æ¹ãå§åçã«å€ã
- ã€ãŸãç»é²ïŒæŽæ°ããããæ§é ããããèªã¿åããããæ§é ãåªå ãã
ããã©ãŒãã³ã¹ã®éèŠåºŠ
ãããããSELECTããã>>>>>>>>ãããINSERT/UPDATE/DELETE
ïŒïŒSELECTå¹çãæªåãããã°ã¬ãŒã±ãŒã¹
3.1 â ã°ã¬ãŒã±ãŒã¹(1)ïŒ è«çåé€ãã©ã°
ð« æªãç¹
- çããŠããããŒã¿ãšå逿žã¿ã®ããŒã¿ãæ··åšããã®ã§ãKEYãéè€ãUNIQUEå¶çŽãå©çšã§ããªã
- ããŒã¿ã®å®å šãä¿éããåç §æŽåæ§å¶çŽã®æå³ãèããªã
- select æã«åžžã«è«çåé€ãã©ã°ãæèããå¿ èŠããã
- éå»ã®ç¶æ ãæ®ããããšããä¿éºã å šäœãžæªåœ±é¿ãäžããããã«æ¬æ«è»¢å
ð æ¹åçïŒè«çåé€çµæã¯å±¥æŽããŒãã«ãžç§»éãã
- éå»ã®ç¶æ ã¯å¥ããŒãã«ã«ãã
- 倿Žåãåé€åã®ç¶æ ãããªã¬ãŒããªããžããªã§å¥ããŒãã«ãžæžã蟌ã
3.2 â ã°ã¬ãŒã±ãŒã¹(2)ïŒ ãã¹ã¿ãŒã«æå¹æé
- å®åã§ã¯æã ã¿ãããããã©ãŒãã³ã¹æªåã«ã€ãªããæ¥µããŠå±éºãªèšèš
select
s.æ°å
, c.è·çŽå
from ç€Ÿå¡ s
left join è·çŽåºå c
on s.è·çŽ = c.è·çŽ
and GetDate() between c.æå¹éå§æ¥ and c.æå¹çµäºæ¥
ð« æªãç¹
- SELECTæã®è€éããå
šãŠãç©èªã£ãŠãããããã©ãŒãã³ã¹ãåºãããããªã
ïŒèšèšã¯ç©ã¿éããªã®ã§ããã®è€éããã·ã¹ãã å šäœãžæ³¢åããïŒ - ãã¯ãåç §æŽåæ§å¶çŽã匵ãæå³ããªã
ð æ¹åçâ ïŒéå»ããŒã¿ã¯å±¥æŽãžç§»éãã
- è«çåé€ãã©ã°ãšåæ§ å¥ããŒãã«ã§ç®¡çãã
ð æ¹åçâ¡ïŒæªæ¥ããŒã¿ã«ã€ããŠ
- æ¥æããååå䟡ã®å€äžããªã©ã圱é¿ã倧ããäºåã«å€æŽãããæ¥ä»ãšå€æŽå 容ãåãããã®ããã
- åºæ¬çã«æªæ¥ããŒã¿ã¯æ±ããé£ããã®ã§åå¥ã«èšèšãã
- æ¶è²»çšã«é¢ããŠã¯æ¬¡ç« åç §
3.3 â ã°ã¬ãŒã±ãŒã¹(3)ïŒ æªæ¥ããŒã¿ïŒæ¶è²»çšïŒã®æ±ã
æ¶è²»çšçãæ¹èšãããæ¥ã®æäžã«ãã·ã¹ãã èšå®ã®æ¶è²»çšçã倿ŽããŠãäžæãè¡ããªãããšãå€ãã§ãã
äŸïŒ
- 2019/10/1ã« æ¶è²»çšçã 8% â 10% ãžå€æŽããã
- 10/1ã®æäžã«ã·ã¹ãã èšå®ã®æ¶è²»çšçã 10% ãžå€æŽãã
- 10/1ã«10/1ã®å£²äžããŒã¿ãç»é²ããæ æ¶è²»çšç㯠10% ã§èšç®ããã â ããã¯æ£ãã
- 10/1ã«ãéå»ãã® 9/30 ã®å£²äžããŒã¿ãç»é²ãããšãã æ¶è²»çšç㯠10% ã§èšç®ããã â ããã¯ãã¡ 8%ãæ£ãã
ð ãå§ãã®ããŒã¿æ§é
- æ¶è²»çšçã«é¢ããŠã¯æéæ¯ã«æããããåŸãªã
- 売äžããŒã¿ãªã©ã«æ¡çšããæ¶è²»çšçãçŽæ¥ä¿åãã
(æ¶è²»çšçIDã¯ä¿æããŠãè¯ããã»ãšãã©æå³ã¯ãªã)
- 売äžã«ããŒã¿ãç»é²ãä¿®æ£ãããšããå£²äžæ¥ããããæ¶è²»çšçããååŸ
- 売äžã«ä¿æããããæ¶è²»çšé¡ããèšç®ããæ ¹æ ãšãªããæ¶è²»çšçãã売äžã«ãèšé²
- ä»ãæ¶è²»çšçIDã«é¢æ°åŸå±ããæ¶è²»çšçã売äžã«æã€ããšã§æ£èŠåãå€ããŸãã
- ãã¹ã¿ã®æ§é ã¯æ£èŠåãã¹ãã§ãã ãã©ã³ã¶ã¯ã·ã§ã³ã«é¢ããŠã¯ãã®éãã§ã¯ç¡ããšæã£ãŠããŸã
ð ãã®èãæ¹ãçºå±ããããšïŒ
â ãã©ã³ã¶ã¯ã·ã§ã³ãžãã¹ã¿æ å ±ãçŒãä»ãã
- ååŒå ã®ããã«ãã¿ãœããããšé·ãä»ãåãããã
- ããã«ãã¿ãœããã㯠2025/10/1 ããå±å·ã ããããããœããã ãžå€æŽãããšãããã»ã»ã»
â ååŒå ã®ç€Ÿå倿Žãžã®å¯Ÿå¿ç
| ãå§ã床 | 察å¿ç | ã¡ãªãã | ãã¡ãªãã |
|---|---|---|---|
| â ââ | 倿޿¥ã«è«æ±å ãã¹ã¿ã®è«æ±å åãå€æŽ | ç°¡å äœã³ã¹ã | éå»ã®è«æ±æžã¯éå»ã®å®åã§åçŸã§ããªã |
| â ââ | 倿ŽåŸã®è«æ±å åãè«æ±å ãã¹ã¿ã«è¿œå ãã | ç°¡å äœã³ã¹ã | è«æ±å IDã§ã®è«æ±é¡ã®æšç§»ç¢ºèªãé£ãã |
| âââ | è«æ±å ãæéããšã«ä¿æ | éå»ã®è«æ±æžã¯éå»ã®å®åã§åçŸã§ãã | ã·ã¹ãã ãæ¥µããŠè€éã«ãªã |
| â â â | å ã®æ¶è²»çšçãšåãããã«è«æ±ããŒã¿ã«è«æ±å åãèšé² | ç°¡å äœã³ã¹ã | ããŒã¿éãå¢ããïŒç¡èŠã§ããã¬ãã«ïŒ |
- ãã©ã³ã¶ã¯ã·ã§ã³ã¯çºçããã¿ã€ãã³ã°ã§ã®å±¥æŽã§ã
- å±¥æŽã«å¿ èŠååãªæ å ±ïŒãã¹ã¿ã®æ å ±å«ãïŒãèšé²ããã®ã¯èªç¶ãšæããŸã
â
ãã©ã³ã¶ã¯ã·ã§ã³ã«å¿
èŠãªãã¹ã¿æ
å ±ãçŒãä»ãã

ä»®ã«ãã¹ã¿ã倿ŽããŠããè«æ±æžãåçºè¡ãããååãšåãè«æ±æžãåºãã®ãèªç¶ãšæããŸã
æã¯ããŒã¿ã¹ãã¬ãŒãžã®ã³ã¹ããé«ããã§ããã ãããŒã¿ãçž®å°ããçºæ³ãéèŠã§ãããïŒè¥¿æŠã§ããåŸã2æ¡ããæããªããªã©ïŒ
ã§ããä»ã¯ã¹ãã¬ãŒãžã®ã³ã¹ããå§åçã«å®ãã®ã§ãå¿
èŠãªæ
å ±ã¯ã§ããã ããã®ãŸãŸä¿ç®¡ããã¡ãªããã®æ¹ã倧ãããšæããŸãã
ïŒïŒãã©ã³ã¶ã¯ã·ã§ã³ç®¡çã®éèŠæ§
â éè¡ã®å ¥éåŠçãäŸã«èããŸãã
â ååŒæçŽ°ã«å
¥éã®å®çžŸãèšé²ããã
â¡ å£åº§æ®é«ã«å
¥éé¡ã远å ããŠæŽæ°ããã
ãã®ïŒã€ã®åŠçã¯ã»ããã§ã
- äž¡æ¹ãæ£ããå®è¡ããã
- ã©ã¡ããäžæ¹ã倱æãããäž¡æ¹ç¡ãã£ãããšã«ãã
â æ£ãããã©ã³ã¶ã¯ã·ã§ã³ç®¡ç
begin try
/* ãã©ã³ã¶ã¯ã·ã§ã³ã®éå§ãå®£èš */
begin tran;
insert into ååŒæçŽ° (å£åº§çªå·, åŠç, å®è¡æ¥, éé¡)
values ('å£åº§123', 'å
¥é', '2025-09-03', 3000);
update å£åº§æ®é«
set æ®é« = æ®é« + 3000
where å£åº§çªå· = 'å£åº§123';
/* ããŒã¿æŽæ°ãç¢ºå® */
commit;
end try
begin catch
/* ãšã©ãŒçºçæã¯ããŒã«ããã¯ãæç€º */
rollback;
end catch
â ãã©ã³ã¶ã¯ã·ã§ã³ç®¡çãããŠããªãå Žå
insert into ååŒæçŽ° (å£åº§çªå·, åŠç, å®è¡æ¥, éé¡)
values ('å£åº§123', 'å
¥é', '2025-09-03', 3000);
update å£åº§æ®é«
set æ®é« = æ®é« + 3000
where å£åº§çªå· = 'å£åº§123';
å ¥éå®çžŸã®inserçŽåŸã«é害ãçºçïŒãããã¯ãŒã¯åç·ã®åæãªã©ïŒãããšãå ¥éå®çžŸã®ã¿ãèšé²ããæ®é«ãæŽæ°ãããŸããã
è€æ°ã®SQLããã»ããã§æåããããªãã£ãããšãã«ããå Žåãå¿ ããã©ã³ã¶ã¯ã·ã§ã³ç®¡çããŸã
ïŒïŒæä»å¶åŸ¡
â
ãããé販ã®åšåº«ç®¡çãèããŸã

æä»å¶åŸ¡ããªããã°ççŸãçºçããŠããŸã
â æ¹åæ¹æ³ïŒæ¥œèгçæä»å¶åŸ¡ã®å®è£
/* æåã«åšåº«æ°ã確èªãããšãã« Version ãååŸ */
select åšåº«æ°, Version from åååšåº«
where ååçªå· = 'ååA'
;
/* Updateæã«åã Version ã«å¯ŸããŠã®ã¿updateãå®è¡ */
update åååšåº«
set åšåº«æ° = åšåº«æ° - 1
where ååçªå· = 'ååA'
and Version = 1;
â ãã®updateæã®å®è¡çµæã
- 1è¡ãªãæŽæ°ã«æå
- 0è¡ãªãä»ã®æ¹ãåšåº«æ°ãæžãæããŠããïŒåãVersionã®ããŒã¿ãç¡ãïŒ
Bããã®è³Œå
¥ã¯åšåº«æ°ã®æŽæ°çµæ=0è¡ã«ãªãã®ã§å€±æã§ãã
ååŒæçŽ°ã®insertãããŒã«ããã¯ããŸãã
â æ²èгçæä»ããã¯ã«é¢ããŠ
- webãäžå¿ã«çŸä»£ã¯ã¹ããŒãã¬ã¹ãªèšèšãäž»æµã§ã
- ããããæå³ã§ãæ²èгçæä»ããã¯ããå¿ èŠãšããæ¥åã¯éãããã®ã§ããã§ã®èª¬æã¯å²æããŸã
ïŒïŒãŸãšã
- ð DBèšèšã¯ã¢ããªãã寿åœãé·ã
- ð äžæ£ããŒã¿ã¯æ§é ã§é²ã
- ð SELECTå¹çãæåªå
- ð å±¥æŽã¯å±¥æŽããŒãã«ã«ç§»ã
- ð ãã©ã³ã¶ã¯ã·ã§ã³ãšæä»å¶åŸ¡ã¯å¿ é













