Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
2018-11-データベース / 2018-11 database
Search
Cybozu
PRO
July 17, 2018
Programming
6
40k
2018-11-データベース / 2018-11 database
データベースの概要を知る。
データベースに求められる特性を知る。
SQLの概要を把握する。
自分でSQLを書けるようになる。
Cybozu
PRO
July 17, 2018
Tweet
Share
More Decks by Cybozu
See All by Cybozu
サイボウズフロントエンドエキスパートチームについて / FrontendExpert Team
cybozuinsideout
PRO
5
38k
2024/11/25 ReDesigner Online Meetup 会社紹介
cybozuinsideout
PRO
0
270
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
9
46k
テクニカルライティング
cybozuinsideout
PRO
4
390
サイボウズのアジャイルクオリティ2024
cybozuinsideout
PRO
3
330
モブに早く慣れたい人のためのガイド2024
cybozuinsideout
PRO
3
460
モバイル
cybozuinsideout
PRO
3
230
ソフトウェアライセンス
cybozuinsideout
PRO
4
210
ソフトウェアテスト
cybozuinsideout
PRO
3
330
Other Decks in Programming
See All in Programming
競技プログラミングへのお誘い@阪大BOOSTセミナー
kotamanegi
0
360
Monixと常駐プログラムの勘どころ / Scalaわいわい勉強会 #4
stoneream
0
280
「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.
mkmk884
3
290
Symfony Mapper Component
soyuka
2
730
Jakarta EE meets AI
ivargrimstad
0
240
17年周年のWebアプリケーションにTanStack Queryを導入する / Implementing TanStack Query in a 17th Anniversary Web Application
saitolume
0
250
CQRS+ES の力を使って効果を感じる / Feel the effects of using the power of CQRS+ES
seike460
PRO
0
130
Effective Signals in Angular 19+: Rules and Helpers
manfredsteyer
PRO
0
100
モバイルアプリにおける自動テストの導入戦略
ostk0069
0
110
創造的活動から切り拓く新たなキャリア 好きから始めてみる夜勤オペレーターからSREへの転身
yjszk
1
130
わたしの星のままで一番星になる ~ 出産を機にSIerからEC事業会社に転職した話 ~
kimura_m_29
0
180
ドメインイベント増えすぎ問題
h0r15h0
2
300
Featured
See All Featured
Speed Design
sergeychernyshev
25
670
Building Applications with DynamoDB
mza
91
6.1k
Typedesign – Prime Four
hannesfritz
40
2.4k
Faster Mobile Websites
deanohume
305
30k
Testing 201, or: Great Expectations
jmmastey
40
7.1k
The Pragmatic Product Professional
lauravandoore
32
6.3k
RailsConf 2023
tenderlove
29
940
Producing Creativity
orderedlist
PRO
341
39k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.3k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.2k
Transcript
! !
%! $'" #( &
()
EL C l
X l C N D P l AQ S C I I I AQ
& %# ( "'"$ ! '
l l l
l l / l /
!%0 ! %0
l 75) +42 l # 1-&( l ' *3 $,6. / "
A C C l
l l D I
l
23 23 23 23 23 23 51 .
0 4
0 0 0 0 0 0 2.34 1 10
! = A l ( ) A )
1 B2 A B l 5 B
l 9 0 l 9 l 9 9 5 93
9 541 54 0 12 9 541 54
. 13 9 = 0 6 2 3 53 54 0 1 2
= l ) ) ) ) l
( I
- l ) ) ) l
l l ) ( l ( l (
V PfdcK S l CD B .)
,B 4 .) B B l 4G 4 OR G .) aMN , 4D D C l eQ , 4 Rb , 4D D C aMN L B D C l ( G D B l C 4 4 GB 4 C 4 D D B l 4
)( 3 4 1 2
- 0 7
)( 2 l 0 7 - 1 l
0 43 l 2
:- 3 0 1 l 47 2 0
D D I
n l o D1B l l a
o ( ) ( B R a R i e R B 1
)( (
C ) ( ) ) l l
L ) ) ) (/ ( l D (/ ( l
E C l E C L , ( R
l E C PS ), R l E C IN R l E C ( R E C D : A :
0/. -73394 l e atQ0/.
qL QF d S c i l 6 ## 9 73394 2 :# # 1 l k 0/. s Q q p ! ! ! ! n o ! ! fhm 7 4l belong_to organization employee
- l
SELECT [] FROM [ ]; SELECT name FROM employee;
- * l * SELECT * FROM employee;
- l SELECT [ 21 ] FROM [
0 ] WHERE []; SELECT * FROM employee WHERE joined_at >= '2010/1/1';
- ] a l [ _ d 1 ./
5 75 .7 :/05 6 /6 / :/ 276 1 5 joined_at > '2007/1/1' 726/. _ ' name = '' 6 5/ _ c e id <> 10001 2. _
- iNO f ( rL ) rL !=
ds ) nI K )( ( c , tvap . ul moh q eT ./ . ul moh q eT E6 < = > 5 : : 5 : : 6
name LIKE '%%'; % ' % l l
l l l l
) ) ( % l name LIKE
'%¥%%' ( '
- l id IN (10001, 10003) l
- 41 l l l 0 2
0 SELECT * FROM employee WHERE joined_at >= '2010/1/1' AND joined_at <= '2014/1/1';
1 1
- D E l E ) E l AE E
l C C( E D l SELECT [ ] FROM [ ] ORDER BY [ ] [ASC/DESC]; SELECT * FROM employee ORDER BY joined_at ASC;
l l 2 SELECT [ ] FROM [
ORDER BY [ ] [ASC/DESC] LIMIT []; SELECT * FROM employee ORDER BY joined_at ASC LIMIT 2; SELECT * FROM employee ORDER BY joined_at ASC LIMIT 1, 2;
#$ % ) l "
! SELECT [&'] FROM [(] GROUP BY []; SELECT organization_id, COUNT(*) FROM belong_to GROUP BY organization_id;
) * ( * ) * ( * ) *
( * 3 4 12 GROUP BY org_id SELECT org_id, COUNT(*) 0 0 2 3 4 1 ) *
l ) ( )
15 0 I a D l 678 047 2
a l 3 66 2 l 506837 d_ 9 : l _ l g d l ed l ced grade
SELECT class_id, COUNT(*), AVG(result), MAX(result), MIN(result) FROM grade GROUP BY
class_id;
B O RO l U H E l G
P
l SELECT * FROM [ ] GROUP BY
[ 2 ] HAVING []; SELECT organization_id, COUNT(*) AS num FROM belong_to GROUP BY organization_id HAVING num >= 2;
GROUP BY org_id SELECT org_id, COUNT(*) 0 1 3 HAVING num >= 2 2 4
" $ ! #%
- 3 4 1 2
- 0 7 - 0 3 - 0 4 7 1 2
- SELECT organization.name, employee.name FROM belong_to INNER JOIN organization ON
belong_to.organization_id = organization.id INNER JOIN employee ON belong_to.employee_id = employee.id;
-
belong_to organization " $%"!# … belong_to INNER JOIN organization ON belong_to.organization_id = organization.id …
- . . .
… belong_to INNER JOIN organization ON belong_to.organization_id = organization.id …
- . . . 143 2 0 … belong_to INNER
JOIN organization ON belong_to.organization_id = organization.id INNER JOIN employee ON belong_to.employee_id = employee.id;
-
SELECT organization.name, employee.name FROM belong_to INNER JOIN organization ON belong_to.organization_id = organization.id INNER JOIN employee ON belong_to.employee_id = employee.id;
- ( "!&%$ ' %#& l "!&%#&
l "!&%$ ' %#& SELECT MAX(result) FROM grade; SELECT AVG(result) FROM grade WHERE result <> [];
- 1 SELECT AVG(result) FROM grade WHERE result <>
(SELECT MAX(result) FROM grade);
- > l < l < l <
SELECT class_id, MAX(result) FROM grade GROUP BY class_id; SELECT class_id, AVG(result) FROM grade WHERE (class_id = 1 AND result <> [1 ]) OR (class_id = 2 AND result <> [2 ]) OR … GROUP BY class_id;
- 1 1 SELECT class_id, AVG(result) FROM grade
AS g1 WHERE g1.result <> ( SELECT MAX(result) FROM grade AS g2 WHERE g1.class_id = g2.class_id ) GROUP BY class_id;
SELECT class_id, AVG(result) FROM grade AS g1 WHERE [] GROUP BY class_id;
6 63
8 3 9 7 0 2 1 5 4 g1 SELECT class_id, AVG(result) FROM grade AS g1 WHERE [] GROUP BY class_id;
1 g1
WHERE g1.result <> ( SELECT MAX(result) FROM grade AS g2 WHERE g1.class_id = g2.class_id )
g1 g2 WHERE g1.result <> ( SELECT MAX(result) FROM grade AS g2 WHERE g1.class_id = g2.class_id )
.
g2 g1 WHERE g1.result <> ( SELECT MAX(result) FROM grade AS g2 WHERE g1.class_id = g2.class_id )
MAX(result)
g2 g1 WHERE g1.result <> ( SELECT MAX(result) FROM grade AS g2 WHERE g1.class_id = g2.class_id )
36 4215 0
g2 g1 WHERE g1.result <> 100
g1 1 89 B 4 3 0 2 6 753
& Q & E C L
& Q
INSERT INTO [
] ([ ]) VALUES ([]); INSERT INTO employee (id, name, joined_at) VALUES (10001, '', '2013/04/01'), (10002, '', '2014/04/01'), (10003, '', '2007/04/01');
$# " %
! & UPDATE [ ] SET [ ] = [ ] WHERE [ ]; UPDATE employee SET joined_at = '2007/4/2' WHERE id = 10003;
DELETE
FROM [] WHERE []; TRUNCATE []; DELETE FROM [];
! !
Q l e j
c i l D P E S IC A l PX A L N N N D j
3 L : 88
Q . 4 666 0 721 2 /
& h M 1 0 S d L Q
M c a .774 888 1 : 2 /4 4
U B Ca B JF 2 26
N S 3 : / / 0 4: 1: .
9Q S : a L c
d : h .55 4 0 721 2 /