天天看點

MySQL的存儲引擎與表的建立,鍵的定義,等等

1

2

3

4

5

<code>--select * from products</code>

<code>--select prod_name from products</code>

<code>/*limit 7 offset 2 */</code>

<code>--從第二行往下取7行資料,若不足7行,則取實際包含的行數 </code>

<code>--limit 2,7--等同</code>

手抖把寨闆弄翻過來了,吓得筆記本硬碟脫機,重新開機後隻剩下上面這點練習了,下面是今天練習Mysql關于表的

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

<code>select</code> <code>* </code><code>from</code> <code>orders</code>

<code>order</code> <code>by</code> <code>2,3</code>

<code>show engines</code>

<code>show variables </code><code>like</code> <code>'%innodb%'</code>

<code>show variables </code><code>like</code> <code>'%storage_engine%'</code> <code>--檢視mysql目前預設的存儲引擎:</code>

<code>show </code><code>table</code> <code>status </code><code>from</code> <code>test </code><code>where</code> <code>name</code> <code>=</code><code>'test'</code><code>--檢視test庫的test表的存儲引擎資訊</code>

<code>----建立表,并指定其存儲引擎為Innodb</code>

<code>USE TEST</code>

<code>create</code> <code>table</code> <code>test_engine (id </code><code>int</code> <code>not</code> <code>null</code> <code>auto_increment,</code>

<code> </code><code>temp</code> <code>varchar</code><code>(10),</code><code>--varchar類型需要指定長度,否則會報錯無法建立表</code>

<code> </code><code>primary</code> <code>key</code> <code>(id)</code>

<code> </code><code>) engine = innodb</code>

<code>--更改表的存儲引擎</code>

<code>alter</code> <code>table</code> <code>engine= myisam</code><code>--報錯,不知道為何</code>

<code>--小練習1</code>

<code>create</code> <code>table</code> <code>example0(id </code><code>int</code> <code>not</code> <code>null</code> <code>auto_increment </code><code>primary</code> <code>key</code><code>,</code>

<code>  </code><code>name</code> <code>varchar</code><code>(20),</code>

<code>  </code><code>sex  boolean           </code><code>--等同與tinyint(1)</code>

<code>  </code><code>)</code>

<code>--小練習2--組合主鍵</code>

<code>use test</code>

<code>create</code> <code>table</code> <code>sc(sNo </code><code>int</code> <code>not</code> <code>null</code><code>,</code>

<code>cNo </code><code>int</code> <code>not</code> <code>null</code><code>,</code>

<code>/*突然想起了</code><code>select</code> <code>2 </code><code>from</code> <code>table</code><code>的問題了,試驗一下</code>

<code>use world;</code>

<code>select</code> <code>2 </code><code>from</code> <code>world.city </code><code>--結果為選出一列n行的2,n為city表的行數</code>

<code>*/</code>

<code>grade </code><code>int</code> <code>default</code> <code>'0'</code><code>,</code><code>--不能少逗号,即使下面沒有屬性聲明隻有主鍵定義。。。</code>

<code>primary</code> <code>key</code> <code>(sNo,cNo)</code>

<code>)</code>

<code>use test;</code>

<code>create</code> <code>table</code> <code>sc(sNo </code><code>int</code> <code>,</code><code>--這裡之前有not null 然後建立的時候就一直出錯</code>

<code>cNo </code><code>int</code> <code>,</code><code>--同上(上面一個例子是不是也是這個原因?不明白為啥,實驗一下)</code>

<code>grade </code><code>int</code> <code>default</code> <code>'0'</code><code>,</code>

<code>create</code> <code>table</code> <code>example1(id </code><code>int</code> <code>not</code> <code>null</code> <code>auto_increment </code><code>primary</code> <code>key</code><code>,</code>

<code>  </code><code>name</code> <code>varchar</code><code>(20),</code><code>--果然不加(20)就會報錯,為什麼?</code>

<code>  </code><code>sex  boolean</code>

<code>/*子表的外鍵必須是父表的主鍵,且資料類型需一緻*/</code>

<code>create</code> <code>table</code> <code>example3(id </code><code>int</code> <code>primary</code> <code>key</code><code>,</code>

<code> </code><code>stu_id </code><code>int</code><code>,</code>

<code> </code><code>course_id </code><code>int</code><code>,</code>

<code> </code><code>constraint</code> <code>c_fk </code><code>foreign</code> <code>key</code><code>(stu_id,course_id) </code><code>references</code> <code>example2(stu_id,course_id) </code><code>--報錯,無法建立example3表。查詢書籍,可能是被依賴的example2表及其屬性不存在</code>

<code> </code><code>--先回來建立表example2</code>

<code> </code><code>)</code>

<code>create</code> <code>table</code> <code>example2(stu_id </code><code>int</code><code>,</code>

<code>  </code><code>course_id </code><code>int</code><code>,</code>

<code>  </code><code>grade </code><code>float</code><code>,</code>

<code>  </code><code>primary</code> <code>key</code><code>(stu_id,course_id)</code>

<code> </code><code>constraint</code> <code>c_fk </code><code>foreign</code> <code>key</code><code>(stu_id,course_id) </code><code>references</code> <code>example2(stu_id,course_id) </code>

<code> </code><code>) </code><code>--Command(s) completed successfully.</code>

<code>/*字段唯一性限制,字段自增屬性,字段預設值(之前的例子中,</code><code>int</code><code>預設值0不加‘’報錯,再預先實驗一下)*/</code>

<code> </code><code>--把小練習2複制過來,以後的例子都要編号,友善調用。。。</code>

<code>  </code><code>create</code> <code>table</code> <code>sc1(sNo </code><code>int</code> <code>not</code> <code>null</code><code>,</code>

<code>grade </code><code>int</code> <code>default</code> <code>0,</code>

<code>primary</code> <code>key</code> <code>(sNo,cNo))</code><code>--Command(s) completed successfully.看來是我自己弄錯了</code>

<code>  </code><code>--小練習3</code>

<code> </code><code>create</code> <code>table</code> <code>example7(id </code><code>int</code> <code>primary</code> <code>key</code> <code>auto_increment,</code>

<code>   </code><code>stu_id </code><code>int</code> <code>unique</code><code>,</code>

<code>   </code><code>name</code> <code>varchar</code><code>(20) </code><code>not</code> <code>null</code><code>,</code>

<code>   </code><code>English </code><code>varchar</code><code>(20) </code><code>default</code> <code>'zero'</code><code>,</code>

<code>   </code><code>Math </code><code>float</code> <code>default</code> <code>0,</code>

<code>   </code><code>Computer </code><code>Float</code> <code>default</code> <code>0</code>

<code>   </code><code>) </code><code>--Command(s) completed successfully.關于表的練習結束</code>

  本文轉自 angry_frog 51CTO部落格,原文連結:http://blog.51cto.com/l0vesql/1771020