· 8 years ago · Feb 06, 2018, 09:48 AM
1# MySQL基本æ“作
2
3## ユーザー・アカウント関連
4### SQLサーãƒãƒ¼ã¸ã®ãƒã‚°ã‚¤ãƒ³
5` mysql -u user -p `
6`password `
7
8### rootã®ãƒ‘スワード変更
9`SET PASSWORD FOR root@localhost=PASSWORDS('password');`
10
11→ã“ã®å¾Œã«MAMPã®`C:\MAMP\MAMP.exe.config`ã®9行目付近ã®ãƒ‘スワードも変更ã—ã¦ãŠã
12
13## ユーザー作æˆ
14`CREATE USER user IDENITFIED BY 'new-password';`
15
16## ユーザー権é™ã‚’è¨å®š
17`GRANT 権é™(å…¨ã¦ãªã‚‰ALL) ON db.table TO user;`
18
19----
20
21## 超基本æ“作
22
23### データベース作æˆ
24`CREATE DATABASE db;`
25
26### データベースã®ä¸€è¦§è¡¨ç¤º
27`SHOW DATABASE;`
28
29### ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®æŒ‡å®š
30`use db`
31
32### ç¾åœ¨ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ç¢ºèª
33`SELECT DATABASE();`
34
35### テーブルã®ä½œæˆ
36`CREATE TABLE table(column1 type1,column2 type2,.....);`
37
38### テーブルã®ä¸€è¦§è¡¨ç¤º
39`SHOW TABLES;`
40
41### テーブルã®ã‚«ãƒ©ãƒ æ§‹é€ ç¢ºèª
42`DESC table;`
43
44### ãƒ‡ãƒ¼ã‚¿ã®æŒ¿å…¥
45`INSERT INTO table VALUES(data1,data2,...);`
46
47### é †ç•ªé–¢ä¿‚ãªã„挿入
48`INSERT INTO table (column1,column2,....) VALUES(data1,data2,....);`
49
50### ãŸãã•ん入力
51`INSERT INTO table (column1,column2,....) VALUES(data1,data2,....),(data1,data2,....),(data1,data2,....),......;`
52
53### 特定ã®ã‚«ãƒ©ãƒ ã®ãƒ‡ãƒ¼ã‚¿ã®è¡¨ç¤º
54`SELECT column1,column2,.... FROM table;`
55
56### ã™ã¹ã¦ã®ãƒ‡ãƒ¼ã‚¿ã®è¡¨ç¤º
57`SELECT * FROM table;`
58
59### テーブルã®ã‚³ãƒ”ー
60`CREATE TABLE new-table SELECT * FROM table;`
61
62----
63
64## ãƒ†ãƒ¼ãƒ–ãƒ«ã®æ”¹é€
65### カラムã®å®šç¾©å¤‰æ›´
66`ALTER TABLE table MODIFY column type ;`
67
68### カラムã®è¿½åŠ
69`ALTER TABLE table ADD column type; `
70
71### カラムã®åå‰ã¨å®šç¾©å¤‰æ›´
72`ALTER TABLE table CHANGE before-column after-column after-type;`
73
74### カラムを削除
75`ALTER TABLE table DROP column;`
76
77### カラムã®ä½ç½®å¤‰æ›´
78#### カラムã®å…ˆé ã«è¿½åŠ
79`ALTER TABLE table ADD column type FIRST;`
80#### カラムã®è‡ªç”±ãªä½ç½®ã«è¿½åŠ
81`ALTER TABLE table ADD column1 type AFTER column2;`
82#### ã‚«ãƒ©ãƒ é †ã®å¤‰æ›´
83`ALTER TABLE table MODIFY column type FIRST;`
84
85----
86
87## 主ã‚ー・連続番å·
88
89### 主ã‚ー(被り&NULLãªã—)ã‚’è¨å®šã—ã¦ãƒ†ãƒ¼ãƒ–ル作æˆ
90`CREATE TABLE table (column type PRIMARY KEY,...);`
91
92### 一æ„ã‚ー(被りãªã—)ã‚’è¨å®šã—ã¦ãƒ†ãƒ¼ãƒ–ル作æˆ
93`CREATE TABLE table (column type UNIQUE,...);`
94
95### 自動的ã«é€£ç¶šç‰ˆç•ªå·
96`CREATE TABLE table (column1 INT AUTO_INCREMENT PRIMARY KEY,column2 type2...);`
97
98### 連続番å·ã®åˆæœŸåŒ–
99`ALTER TABLE table AUTO_INCREMENT = num;`
100
101----
102
103## デフォルト値
104
105### カラムã®ãƒ‡ãƒ•ォルト値
106#### 作るã¨ã
107`CREATE TABLE table column type DEFAULT default;`
108#### 変更ã™ã‚‹ã¨ã
109`ALTER TABLE table MODIFY column type DEFAULT default;`
110
111----
112
113## インデックス
114### インデックスã®ä½œæˆ
115`CREATE INDEX index ON table(column);`
116### インデックスã®ç¢ºèª
117`SHOW INDEX FROM table (; or \G)`
118### インデックスã®å‰Šé™¤
119`DROP INDEX index ON table;`
120
121----
122
123## テーブルやレコードã®ã‚³ãƒ”ー
124### テーブルã®ã‚«ãƒ©ãƒ æ§‹é€ ã¨ãƒ‡ãƒ¼ã‚¿ã‚’コピー
125** AUTO_INCREMENTãªã©ã®ä¸€éƒ¨ã®å±žæ€§ã¯ã‚³ãƒ”ーã•れãªã„(後ã§è¨å®šã™ã‚‹å¿…è¦ãŒã‚ã‚‹) **
126** DESCãªã©ã§ç¢ºèªã—ã¦ã‹ã‚‰ä½¿ã† **
127`CREATE TABLE new-table SELECT * FROM before-table;`
128`
129
130### テーブルã®ã‚«ãƒ©ãƒ æ§‹é€ ã‚’ã‚³ãƒ”ãƒ¼
131`CREATE TABLE new-table LIKE before-table;`
132
133### ä»–ã®ãƒ†ãƒ¼ãƒ–ルã®ãƒ‡ãƒ¼ã‚¿ã‚’コピー(åŒã˜ã‚«ãƒ©ãƒ æ§‹é€ ã®å ´åˆ)
134`INSERT INTO table SELECT * FROM before-table;`
135
136### 特定ã®ã‚«ãƒ©ãƒ ã‚’é¸æŠžã—ã¦ã‚³ãƒ”ー
137`INSERT INTO table (column) SELECT before-column FROM before-table;`
138
139----
140
141## テーブルやレコードã®å‰Šé™¤
142### テーブルã®å‰Šé™¤
143`DROP TABLE table;`
144
145#### 指定ã®ãƒ†ãƒ¼ãƒ–ルãŒã‚ã‚‹å ´åˆã«ã¯å‰Šé™¤ã™ã‚‹
146IF EXISTSã‚’ã¤ã‘ã‚‹ã¨ç›®çš„ã®ãƒ†ãƒ¼ãƒ–ルãŒå˜åœ¨ã—ãªã„状æ³ã§ã‚¨ãƒ©ãƒ¼ãŒå‡ºãªããªã‚‹â†’テーブルã®å˜åœ¨ã«ã‹ã‹ã‚らãšå‰Šé™¤ã§ãã‚‹
147`DROP TABLE IF EXISTS table;`
148
149### データベースã®å‰Šé™¤
150`DROP DATABASE db;`
151
152### テーブル内ã®ãƒ¬ã‚³ãƒ¼ãƒ‰(データ)ã®ã¿å‰Šé™¤
153`DELETE FROM table;`
154
155----
156
157## 抽出
158### カラム入れ替ãˆã¦è¡¨ç¤º
159` SELECT column2,column1 FROM table; `
160
161### エイリアスを指定ã—ã¦è¡¨ç¤º
162ã‚¨ã‚¤ãƒªã‚¢ã‚¹ã¯æ—¥æœ¬èªžok
163`()`ã¨ã‹ã‚’使ã†ã¨ãã¯`""`ã§ã‚¨ã‚¤ãƒªã‚¢ã‚¹ã‚’ããã‚‹ã¨ã„ã„
164` SELECT column AS alias FROM table; `
165#### 複数ã®å ´åˆ
166` SELECT column1 AS alias1,column2 AS alias2 FROM table; `
167
168### カラムã®å€¤ã‚’計算ã—ã¦è¡¨ç¤º
169` + - * / ` ã§å››å‰‡æ¼”ç®—
170`DIV`ã§çµæžœãŒæ•´æ•°ã®å‰²ã‚Šç®—
171`%`,`MOD`ã§ä½™ã‚Š
172
173`SELECT column * 100 FROM db`
174
175### カラムã®å€¤ã‚’関数ã§è¨ˆç®—ã—ã¦è¡¨ç¤º
176`AVG(column)` å¹³å‡å€¤
177`SUM(column)` åˆè¨ˆå€¤
178`COUNT(column)` 個数
179
180`SELECT AVG(column) FROM db;`
181### æƒ…å ±è¡¨ç¤ºã®é–¢æ•°
182`PI()` 円周率
183`VERSION()` MySQLã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³
184`DATABASE()` ç¾åœ¨ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹
185`USER()` ç¾åœ¨ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼
186`CHAESET('text')` å¼•æ•°ã§æŒ‡å®šã—ãŸæ–‡å—ã®æ–‡å—エンコーディング表示
187
188`SELECT PI();`
189
190## æ–‡å—列æ“作関数
191`text`ã‚’`column`ã«ã—ã¦`from db`ã‚’ã¤ã‘ã‚‹ã¨ã‚«ãƒ©ãƒ ã®ãƒ‡ãƒ¼ã‚¿ã‚’ã„ã„æ„Ÿã˜ã«ã—ã¦ãれる()
192
193`CONCAT(text1,text2,text3,...)` æ–‡å—列を連çµ
194`RIGHT(text,num)` å³ã‹ã‚‰numæ–‡å—å–ã‚‹
195`LEFT(text,num)` å·¦ã‹ã‚‰numæ–‡å—å–ã‚‹
196`SUBSTRING(text,x,y)` x番目ã‹ã‚‰yæ–‡å—å–ã‚‹
197`REPEAT(text,num)` textã‚’num回繰り返ã™
198`REVERSE(text)` textを逆å‘ãã«è¡¨ç¤º
199
200`SELECT CONCAT(column1,'+',column2,'=aa') FROM table;`
201> column1-1+column2-2=aa
202
203## æ—¥ä»˜ã€æ™‚刻ã®é–¢æ•°
204`NOW()` ç¾åœ¨ã®æ™‚刻
205
206## æ¡ä»¶æŒ‡å®š
207全部`FROM table`ã®å¾Œã«ä»˜ã‘åŠ ãˆã‚‹
208
209`LIMIT num` numä»¶ã ã‘表示
210`WHERE æ¡ä»¶` æ¡ä»¶ã‚’ã—ã¦ã—ã¦è¡¨ç¤º
211
212### ç‰ã—ã„
213`WHERE column = num`
214### ç•°ãªã‚‹
215`WHERE column <> num`
216### 比較
217`> < >= <=`
218### 指定
219`WHERE column IN (num1,num2)` num1,num2
220`WHERE column NOT IN (num1,num2)` num1,num2以外
221### 範囲指定
222`WHERE column BETWEEN num1 AND num2` num1<=x<=num2
223`WHERE column NOT BETWEEN num1 AND num2` num1>x , x>num2
224
225## æ–‡å—åˆ—ã§æ¡ä»¶æŒ‡å®š
226### 完全一致
227`WHERE column = 'text'` 完全一致
228### ã‚ã„ã¾ã„検索
229`WHERE column LIKE 'aiu'` aiuã‚’å«ã‚€ã‚‚ã®
230`WHERE column NOT LIKE 'aiu'` aiuã‚’å«ã¾ãªã„ã‚‚ã®
231#### LIKEã®ãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰
232`%` ä»»æ„ã®æ–‡å—列
233`_` ä»»æ„ã®ä¸€æ–‡å—
234
235### NULL検索
236`WHERE column IS NULL` NULLã®ã‚‚ã®
237`WHERE column IS NOT NULL` NULLã˜ã‚ƒãªã„ã‚‚ã®
238### é‡è¤‡ãªã—表示
239`SELECT DISTINCT column FROM table` é‡è¤‡ã—ã¦ã„ã‚‹é …ç›®ã‚’çœã„ã¦è¡¨ç¤º
240
241### AND OR
242`AND`ã¨`OR`ã§æ¡ä»¶ã‚’組ã¿åˆã‚ã›ã‚‰ã‚Œã‚‹
243※ANDã®ã»ã†ãŒå„ªå…ˆé †ä½é«˜ã„ã‹ã‚‰ãã†ã—ãŸããªã„ã¨ãã¯
244`WHERE (A OR B) AND C` ã¿ãŸã„ã«ã—ãŸã‚‰ok
245
246### CASE WHEN
247æ¡ä»¶1ã®ã¨ãã¯text1を表示ã—ã€æ¡ä»¶2ã®ã¨ãã¯text2を表示ã—ã€ãれ以外ã¯text3を表示
248```
249
250SELECT
251CASE
252 WHEN æ¡ä»¶1 THEN text1
253 WHEN æ¡ä»¶2 THEN text2
254 ELSE text3
255END
256FROM table;
257
258```
259
260#### AS使ã£ã¦åœ§å€’çš„æˆé•·()
261```
262
263SELECT column1,column2
264CASE
265 WHEN æ¡ä»¶1 THEN text1
266 WHEN æ¡ä»¶2 THEN text2
267 ELSE text3
268END AS column2-review
269FROM table;
270
271```
272
273例
274
275| column1 | column2 | column2-review |
276| :---| :--- |:--- |
277| 1-1 | 2-1 |text2 |
278| 1-2 | 2-1 |text1 |
279
280----
281
282## ä¸¦ã³æ›¿ãˆ
283`FROM table` ã®å¾Œã«ã¤ã‘ã‚‹
284### æ˜‡é †
285`ORDER BY column` or `ORDER BY column ASC`
286### é™é †
287`ORDER BY column DESC`
288
289### 上ä½ï¼“ã¤
290`LIMIT 3 OFFSET 4` ãªã‚‰ 5,6,7
291`LIMIT 3 OFFSET 0` ãªã‚‰ 1,2,3
292`SELECT * FROM table ORDER BY column LIMIT 3 OFFSET 0;`
293
294----
295
296## グループ
297ã‚るカラムã«åŒã˜å€¤ãŒå…¥ã£ã¦ã‚‹ãƒ¬ã‚³ãƒ¼ãƒ‰ãŒè¤‡æ•°ã‚ã‚‹å ´åˆã«ã€ãれらを**グループ**ã«ã™ã‚‹ã“ã¨ãŒã§ãる。
298### グループã”ã¨ã«è¡¨ç¤º
299`SELECT * FROM table GROPU BY column;`
300※グループ化ã•れãŸã‚‚ã®ã¯é©å½“ãªãƒ¬ã‚³ãƒ¼ãƒ‰ãŒé¸ã°ã‚Œã‚‹
301### グループã”ã¨ã®æ•°
302`SELECT COUNT(*) FROM table GROUP BY column`
303ã‚ã‹ã‚Šã‚„ã™ã↓
304`SELECT column,COUNT(*) FROM table GROUP BY column`
305
306`SUM()`ã‚„`AVG()`ã§ã‚°ãƒ«ãƒ¼ãƒ—ã®åˆè¨ˆå€¤ã‚„å¹³å‡å€¤ãŒã‚ã‹ã‚‹
307
308### æ¡ä»¶ã¤ãグループ
309グループ化ã—ãŸå¾Œã®æ¡ä»¶ `HAVING`
310グループ化å‰ã®æ¡ä»¶ `WHERE`
311
312#### グループ化ã—ã¦ã‹ã‚‰æŠ½å‡º
313例:`SELECT column1 SUM(column2) FROM table GROUP BY column1 HAVING SUM(column2) >= 200;`
314column2ã®åˆè¨ˆã‚’グループã”ã¨ã«å‡ºã—,åˆè¨ˆãŒ200以上ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®ã¿ã‚’表示
315#### 抽出ã—ã¦ã‹ã‚‰ã‚°ãƒ«ãƒ¼ãƒ—化
316例:`SELECT column1 SUM(column2) FROM table WHERE column2>=200 GROUP BY column1;`
317column2ã®200以上ã®ã‚‚ã®ã‚’抽出ã—ã€ãれらã®ä¸ã‹ã‚‰ã‚°ãƒ«ãƒ¼ãƒ—化を行ã†ã€‚
318
319#### グループ化ã—ã¦ã‹ã‚‰ä¸¦ã³æ›¿ãˆ
320`SELECT column1,AVG(column2) GROUP BY column1 ORDER BY AVG(column2)`
321
322----
323
324## ãƒ‡ãƒ¼ã‚¿ã®æ›´æ–°
325### カラム内ã®ã™ã¹ã¦ã®ãƒ‡ãƒ¼ã‚¿ã®æ›´æ–°
326`UPDATE table SET column = value;`
327※UPDATEã‚³ãƒžãƒ³ãƒ‰ã¯æ™®é€šã¯æ¡ä»¶ã‚’指定ã—ã¦è¡Œã†ã€‚MySQLモニタ起動時ã«`--safe-updates`を指定ã™ã‚‹ã¨ã€WHEREæ¡ä»¶ã®ãªã„UPDATEã‚„DELETEãŒã§ããªããªã‚‹ã€‚
328### æ¡ä»¶æŒ‡å®šã—ã¦ãƒ¬ã‚³ãƒ¼ãƒ‰ã®ã‚«ãƒ©ãƒ ä¿®æ£
329`UPDATE table SET column = value WHERE æ¡ä»¶`
330ORDERã—ã¦LIMITã—ãŸã‚‰ä¸Šã‹ã‚‰ä½•人ã®ãƒ‡ãƒ¼ã‚¿ã‚’ä¿®æ£ã¨ã‹ã§ãã‚‹()
331
332## æ¡ä»¶æŒ‡å®šã—ã¦ã‚³ãƒ”ー
333`CREATE TABLE new-table SELECT * FROM table WHERE column æ¡ä»¶`
334`INSERT INTO another-table SELECT * FROM table WHERE ~`
335
336## æ¡ä»¶æŒ‡å®šã—ã¦ãƒ¬ã‚³ãƒ¼ãƒ‰å‰Šé™¤
337`DELETE FROM table WHERE ~`
338
339----
340## 複数ã®ãƒ†ãƒ¼ãƒ–ルを並ã¹ã¦è¡¨ç¤º
341### åŒã˜ã‚«ãƒ©ãƒ æ§‹é€ ã®ãƒ†ãƒ¼ãƒ–ルをåˆã‚ã›ã¦è¡¨ç¤º
342`UNION`ã ã¨é‡è¤‡ã—ã¦ã‚‹é …ç›®ã¯çœã„ã¦ãれる
343`SELECT * FROM table1 UNION SELECT * FROM table2;`
344ã‚ã‹ã‚Šã‚„ã™ã„
345`(SELECT * FROM table1) UNION (SELECT * FROM table2);`
346
347`UNION ALL`ãªã‚‰çœã‹ãªããªã‚‹ã€‚大é‡ã®ãƒ‡ãƒ¼ã‚¿ãŒã‚ã‚‹ã¨ãã¯`ALL`ã‚’ã¤ã‘ãŸã»ã†ãŒå‡¦ç†ãŒæ—©ã„
348`(SELECT * FROM table1 WHERE ~) UNION ALL (SELECT * FROM table2 WHERE ~);`
349
350----
351
352### テーブルã®çµåˆ(内部çµåˆ)
353一致ã™ã‚‹ãƒ¬ã‚³ãƒ¼ãƒ‰**ã ã‘**ã‚’å–り出ã™â†’内部çµåˆ
354`SELECT * FROM table1 JOIN table2 ON table1.column1 = table2.column1`
355本当ã¯å†…部çµåˆã¯`INNER JOIN`ã ã‘ã©`INNER`ã¯çœç•¥å¯èƒ½
356`SELECT * FROM table1 INNER JOIN table2 ON table1.column1 = table2.column1`
357
358表示ã™ã‚‹ã‚«ãƒ©ãƒ を指定ã™ã‚‹ã¨ãã¯
359`SELECT table1.column1,table2.column2,.... ~`
360ã¿ãŸã„ã«`テーブルå.カラムå`ã§æŒ‡å®šã™ã‚‹
361
362### テーブルåã®ã‚¨ã‚¤ãƒªã‚¢ã‚¹
363`table AS alias`
364ã“ã‚“ãªã‹ã‚“ã˜ã§ä½¿ã†ï¼ˆIQ2)
365`SELECT t1.a t2.b FROM table1 AS t1 JOIN table2 AS t2 ON t1.num = t2.num;`
366
367### çµåˆã®ã‚ーã«ãªã‚‹ã‚«ãƒ©ãƒ åãŒåŒã˜ãªã‚‰
368`ON table1.column = table2.column`ã˜ã‚ƒãªãã¦
369`USING(column)`ã§ok
370
371### çµåˆå¾Œã®æŠ½å‡º
372`ON table1.a = table2.b WHERE table1.num > 200;`
373
374----
375
376### テーブルã®çµåˆ(外部çµåˆ)
377一致ã—ã¦ã„ãªãã¦ã‚‚一方ã®ãƒ¬ã‚³ãƒ¼ãƒ‰ã¯**å…¨ã¦**å–り出ã™â†’外部çµåˆ
378左外部çµåˆ:一致ã—ãŸãƒ¬ã‚³ãƒ¼ãƒ‰ã¨å·¦å´(çµåˆã™ã‚‹å´)ã®å…¨ãƒ‡ãƒ¼ã‚¿ã‚’表示
379å³å¤–部çµåˆ:一致ã—ãŸãƒ¬ã‚³ãƒ¼ãƒ‰ã¨å³å´(çµåˆã•れるå´)ã®å…¨ãƒ‡ãƒ¼ã‚¿ã‚’表示
380
381一致ã—ã¦ã„ãªã„ã¨ã“ã‚ã¯NULLã§è¡¨ç¤ºã•れる
382
383å·¦:`SELECT column FROM table1 LEFT JOIN table2 ON table1.a = table2.a;`
384å³:`SELECT column FROM table1 RIGHT JOIN table2 ON table1.a = table2.a;`
385
386※åŒã˜DB内ã§å·¦å¤–部çµåˆã¨å³å¤–部çµåˆã®æ··åœ¨ã¯é¿ã‘ã‚‹
387※`LEFT JOIN` = `LEFT OUTER JOIN`
388※`RIGHT JOIN` = `RIGHT OUTER JOIN`
389
390----
391### 自己çµåˆ
392ã™ã¹ã¦ã®çµ„ã¿åˆã‚ã›ãŒä½œã‚‰ã‚Œã‚‹
393`SELECT * FROM table AS a JOIN table AS b;`
394
395得点ã§é †ä½ã‚’決ã‚ã‚‹
396```
397SELECT a.name,a.score,COUNT(*)
398FROM table AS a
399JOIN table AS b
400WHERE a.score <= b.score
401GROUP BY a.name;
402```
403
404----
405
406## サブクエリ
407サブクエリã¯`()`ã§å›²ã‚€
408
409**該当ã™ã‚‹ãƒ¬ã‚³ãƒ¼ãƒ‰ãŒäºŒä»¶ä»¥ä¸Šã‚ã‚‹å ´åˆã«ã‚¨ãƒ©ãƒ¼ãŒå‡ºã‚‹ã®ã§`=` ã˜ã‚ƒãªãã¦`IN`を使ã†**
410### 最大値ã®ãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’表示
411サブクエリã¯å€¤ã‚’è¿”ã™
412`SELECT * FROM table WHERE num IN (SELECT MAX(num) FROM table);`
413
414
415### 別ã®ãƒ†ãƒ¼ãƒ–ルã‹ã‚‰numãŒ100以上ã®ãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’見ã¤ã‘ã¦ãれã¨nameãŒåŒã˜ã‚‚ã®ã‚’表示åŒã˜ã‚‚ã®ã‚’表示
416サブクエリã¯ã‚«ãƒ©ãƒ ã‚’è¿”ã™
417`SELECT * FROM table1 WHERE name IN (SELECT name FROM table2 WHERE num>=100);`
418
419### EXISTS
420tableã«table1ã«ã‚ã‚‹ã‚‚ã®ãŒå˜åœ¨ã™ã‚‹ãªã‚‰ã€å˜åœ¨ã™ã‚‹ã‚‚ã®ã‚’表示ã™ã‚‹
421`SELECT * FROM table1 WHERE EXISTS (SELECT * FROM table WHERE table.a=table1.a);`
422
423### NOT EXISTS
424tableã«table1ã«ã‚ã‚‹ã‚‚ã®ãŒå˜åœ¨ã—ãªã„ãªã‚‰ã€å˜åœ¨ã—ãªã„ã‚‚ã®ã‚’表示ã™ã‚‹
425`SELECT * FROM table1 WHERE NOT EXISTS (SELECT * FROM table WHERE table.a=table1.a);`
426
427----
428
429## ビュー
430ビューを変更ã™ã‚‹ã¨ãƒ†ãƒ¼ãƒ–ルã®å€¤ã‚‚変更ã•れる
431基本的ã«ãƒ†ãƒ¼ãƒ–ルã¨ä½¿ã„æ–¹åŒã˜
432片方を変更ã™ã‚‹ã¨ã‚‚ã†ç‰‡æ–¹ã‚‚自動的ã«å¤‰æ›´ã•れる
433### ビューã®ä½œæˆ
434`CREATE VIEW view AS SELECT column FROM table WHERE ~`
435
436### ビューã«INSERT
4371ã¤ã®ãƒ†ãƒ¼ãƒ–ルã‹ã‚‰ã‚«ãƒ©ãƒ を抜ã出ã—ã¦ä½œã£ãŸãƒ“ューãªã‚‰INSERTã‚‚UPDATEã‚‚ã§ãã‚‹
438UNIONã‚„JOINやサブクエリを使ã£ãŸã‚‚ã®ãªã‚‰INSERTã‚„JOINã¯ã§ããªã„
439
440### ビューã®WHEREæ¡ä»¶ã«åˆã‚ãªã„INSERT
441æˆåŠŸã™ã‚‹ã‘ã©ãƒ“ューã«ã¯è¡¨ç¤ºã•れãšãƒ†ãƒ¼ãƒ–ルã«è¿½åŠ ã•れる
442
443### ビューã®WHEREæ¡ä»¶ã«åˆã‚ãªã„INSERTをエラーã«ã™ã‚‹
444ビューを作るã¨ãã«`WITH CHECK OPTION`ã‚’ã¤ã‘ã‚‹
445`CREATE VIEW view AS SELECT column FROM tableWHERE æ¡ä»¶ WITH CHECK OPTION;`
446
447### ビューã®ä¸Šæ›¸ã
448åŒã˜åå‰ã®ãƒ“ューをæ¡ä»¶ã‚’変ãˆã¦ä½œã‚‹ã¨ããªã©ã¯`OR REPLACE`ã‚’ã¤ã‘ã‚‹ã¨ä¸Šæ›¸ãã«ãªã‚‹
449`CREATE OR REPLACE VIEW view AS ~~`
450
451### ビューã®å®šç¾©å¤‰æ›´
452`ALTER VIEW view AS SELECT column FROM table;`
453
454### ビューã®å‰Šé™¤
455`DROP VIEW view;`
456
457----
458
459## ストアドプãƒã‚·ãƒ¼ã‚¸ãƒ£
460一連ã®SQLコマンドã®å¡Šã«åå‰ã‚’ã¤ã‘る→関数ã¿ãŸã„
461### ストアドプãƒã‚·ãƒ¼ã‚¸ãƒ£ã®ä½œæˆ
462`;`を入力ã—ãŸæ™‚点ã§å®Ÿè¡Œã•れるã‹ã‚‰ãƒ‡ãƒªãƒŸã‚¿ã®å¤‰æ›´ã‚’ã™ã‚‹
463
464`delimiter //`
465ã“れã—ãŸå¾Œã¯ENDã®å¾Œã«`//`ã‚’ã¤ã‘ã‚‹ã¨oK
466ストアドプãƒã‚·ãƒ¼ã‚¸ãƒ£ã‚’作ã£ãŸå¾Œã¯ãƒ‡ãƒªãƒŸã‚¿ã‚’å…ƒã«æˆ»ã™
467`delimiter ;`
468
469
470```
471CREATE PROCEDURE procedure()
472
473BEGIN
474 処ç†;
475 処ç†;
476END
477```
478
479作ã£ãŸå¾Œã«å‘¼ã¶ã¨ã
480`CALL procedure;`
481
482### 引数ã‚りã®ã‚¹ãƒˆã‚¢ãƒ‰ãƒ—ãƒã‚·ãƒ¼ã‚¸ãƒ£
483`CREATE PROCEDURE procedure(parameter type);`
484`CALL procedure(value);`
485
486### ストアドプãƒã‚·ãƒ¼ã‚¸ãƒ£ã®å†…容ã®è¡¨ç¤º
487`SHOW CREATE PROCEDURE procedure;`
488
489### ストアドプãƒã‚·ãƒ¼ã‚¸ãƒ£ã®å‰Šé™¤
490`DROP PROCEDURE procedure;`
491
492----
493
494## ストアドファンクション
495返り値ãŒã‚るストアドプãƒã‚·ãƒ¼ã‚¸ãƒ£
496è¨å®šã§ä½¿ãˆã‚‹ã‚ˆã†ã«ã™ã‚‹
497`SET GLOBAL log_bin_trust_function_creators=1;`
498
499### ストアドファンクションã®ä½œæˆ
500```
501CREATE FUNCTION function(parameter type) RETURN return-type
502BEGIN
503 SQL-text;
504 RETURN value;
505
506END
507
508```
509
510変数ã«ä»£å…¥
511`value INTO parameter`
512
513### 表示
514`SHOW CREATE FUNCTION function;`
515### 削除
516`DROP FUNCTION function`
517
518----
519
520## トリガ
521DELETEã‚„INSERTã‚„UPDATEãŒè¡Œã‚れãŸã¨ãã«è‡ªå‹•çš„ã«å®Ÿè¡Œã™ã‚‹ã‚ˆã†ã«ã™ã‚‹ã®
522
523| コマンド | 実行å‰(OLD.カラム) | 実行後(NEW.カラム) |
524| :---| :--- |:--- |
525| INSERT | ✖ | 〇 |
526| DELETE | 〇 | ✖ |
527| UPDATE | 〇 | 〇 |
528
529### 作æˆ
530```
531CREATE TRIGGER trigger [BEFORE of AFTER] トリガã¨ãªã‚‹ã‚³ãƒžãƒ³ãƒ‰
532ON table FOR EACH ROW
533BEGIN
534 æ›´æ–°å‰ã®ãƒ†ãƒ¼ãƒ–ル→OLD.column
535 更新後ã®ãƒ†ãƒ¼ãƒ–ル→NEW.column
536 を使ã£ãŸå‡¦ç†
537END
538```
539
540### 削除ã—ãŸã‚‚ã®ã‚’別ã®ãƒ†ãƒ¼ãƒ–ルã«ç§»å‹•ã—ã¦ãŠã
541```
542delimiter //
543
544CREATE TRIGGER trigger BEFORE DELETE ON table FOR EACH ROW
545BEGIN
546 INSERT INTO table-deleted VALUES(OLD.column1,OLD.column2,...);
547END
548
549//
550delimiter ;
551
552```
553
554### 確èª
555`SHOW TRIGGERS`
556### 表示
557`DROP TRIGGERS triggers;`
558
559----
560## トランザクション
561複数ã®å‡¦ç†ã‚’ã¾ã¨ã‚る機能ã§ã€ãれãŒçµ‚ã‚ã£ãŸå¾Œã§çµæžœã‚’åçœã•ã›ã‚‹ã“ã¨ã‚’**コミット**ã€å‡¦ç†ã‚’åæ˜ ã—ãªã„ã§æˆ»ã™ã“ã¨ã‚’**ãƒãƒ¼ãƒ«ãƒãƒƒã‚¯**ã¨ã„ã†ã€‚
562
563**コミットã›ãšã«çµ‚ã‚ã‚‹ã¨è‡ªå‹•çš„ã«ãƒãƒ¼ãƒ«ãƒãƒƒã‚¯ã•れる**
564
565**ãƒãƒ¼ãƒ«ãƒãƒƒã‚¯ã§ããªã„ã‚‚ã®**
566・DROP [DATABASEやTABLEやVIEW]
567・ALTER TABLEãªã©
568
569### トランザクションã®ã‚¹ã‚¿ãƒ¼ãƒˆ
570`START TRANSACTION;`
571
572### ãƒãƒ¼ãƒ«ãƒãƒƒã‚¯
573`ROLLBACK;`
574
575### åæ˜
576`COMMIT;`
577
578----
579
580## ファイル
581
582### CSVファイル
583カンマã§åŒºåˆ‡ã‚‰ã‚ŒãŸã ã‘ã®ãƒ†ã‚スト
584
585### インãƒãƒ¼ãƒˆ/エクスãƒãƒ¼ãƒˆã‚’行ã†ãŸã‚ã«
586C:\MAMP\conf\mysql\my.iniã®41行目付近ã«è¿½åŠ ã™ã‚‹
587`secure-file-priv = ""`
588
589### インãƒãƒ¼ãƒˆ
590`LOAD DATA INFILE 'file-name' INTO TABLE table option`
591
592オプションã®ç¨®é¡ž
593・`FIELDS TERMINATED BY '区切り文å—'(デフォルトã¯'\t':タブ)`
594・`LINES TERMINATED BY '改行文å—(デフォルトã¯'\n')'`
595・`IGNORE '最åˆã«ã‚¹ã‚ップã™ã‚‹è¡Œ' LIENS (デフォルトã¯0)`
596
597### エクスãƒãƒ¼ãƒˆ
598`SELECT * INTO OUTFILE 'file-name option FROM table`
599
600オプションã®ç¨®é¡ž
601・`FIELDS TERMINATED BY '区切り文å—'(デフォルトã¯'\t':タブ)`
602・`LINES TERMINATED BY '改行文å—(デフォルトã¯'\n')'`
603・`IGNORE '最åˆã«ã‚¹ã‚ップã™ã‚‹è¡Œ' LIENS (デフォルトã¯0)`
604
605### ファイルã‹ã‚‰SQLコマンド実行
606`SOURCE ファイルå.txt(''ã§å›²ã‚ãªã„)`
607
608#### sqlモニタ開ã‹ãšã«å®Ÿè¡Œ
609`mysql dbname -u user -ppassword -e "SOURCE file.txt";`
610
611### å®Ÿè¡Œçµæžœã‚’ファイル出力
612é–‹å§‹
613`tee file.txt;`
614
615ä¸
616`notee;`
617
618----
619
620## データベース全体ã®ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã¨ãƒªã‚¹ãƒˆã‚¢
621
622### ダンプ
623データベースã®å†…å®¹ã‚’å…¨ã¦æ›¸ã出ã™â†’ダンプ
624SQLæ–‡ã§æ›¸ã出ã•れる
625`mysqldump -u user -ppassword db > file.txt;`
626
627### リストア
628```
629mysqladmin -u user -ppassword CREATE db;
630
631mysql -u user -ppassword db < file.txt;
632```
633
634
635----
636
637## テーブルã®ãƒãƒƒã‚¯
638ãƒãƒƒã‚¯ã®ç¨®é¡ž
639
640READ :èªã¿æ›¸ã専用 (InnoDBã ã¨READ LOCALã‚‚ã“れ。ã»ã‹ã ã¨READ LOCALã¯ãƒãƒƒã‚¯ã‚’ã‹ã‘ãŸã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã ã‘DELECT以外ã§ããªããªã‚‹)
641
642WRITE :ãƒãƒƒã‚¯ã‚’ã‹ã‘ãŸã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆä»¥å¤–ã§ã¯ã™ã¹ã¦æ“作ã§ããªããªã‚‹ã€‚ãƒãƒƒã‚¯ã‚’ã‹ã‘ãŸã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã§ã¯æ“作ã§ãる。
643### テーブルã®ãƒãƒƒã‚¯
644`LOCK TABLES table lock`
645### テーブルã®ã‚¢ãƒ³ãƒãƒƒã‚¯
646**å…¨ã¦ã®ãƒ†ãƒ¼ãƒ–ルã«å¯¾ã™ã‚‹ãƒãƒƒã‚¯è§£é™¤**
647`UNLOCK TABLES`