本篇Himi簡單介紹一些MySQL資料庫的基礎操作;
注:mysql 語句對大小寫不敏感,語句以分號“;”標識語句結束;
1. 首先使用兩個簡單的查詢語句;
查詢當前版本:select version();
查詢當前日期:select current_date;
查詢當前時間:select now();
兩句合併: select version() , current_date , now();
顯示結果如下:
|
mysql> select version() , current_date , now();
+—————–+———————+——————————–+
| version() | current_date | now() |
+—————–+———————+——————————–+
| 5.5.23 | 2012–04–17 | 2012–04–17 14:34:53 |
+—————–+———————+——————————–+
1 row in set (0.00 sec)
|
2. SQL語句可分多行來寫:
|
mysql> select version(),
–> current_date,
–> now(),
–> user();
+—————–+———————+——————————–+————————+
| version() | current_date | now() | user() |
+—————–+———————+——————————–+————————+
| 5.5.23 | 2012–04–17 | 2012–04–17 14:38:42 | root@localhost |
+—————–+———————+——————————–+————————+
1 row in set (0.00 sec)
|
3. 使用查詢語句來作為計算器,讓mysql 為我們計算結果,如下:
|
mysql> select 1*1,2*2,3*3;
+——–+——–+——–+
| 1*1 | 2*2 | 3*3 |
+——–+——–+——–+
| 1 | 4 | 9 |
+——–+——–+——–+
1 row in set (0.00 sec)
|
4. 使用 c 取消SQL語句的輸入;先看下MySQL的一些提示符:
提示符 |
含義 |
mysql> |
準備好接受新命令。 |
-> |
等待多行命令的下一行。 |
‘> |
等待下一行,等待以單引號(“’”)開始的字串的結束。 |
“> |
等待下一行,等待以雙引號(“””)開始的字串的結束。 |
> |
等待下一行,等待以反斜點(‘’)開始的識別符的結束。 |
/*> |
等待下一行,等待以/*開始的註釋的結束。 |
輸入c以後,它切換回到mysql>,提供反饋以表明mysql準備接受一個新命令。
4. 建立使用資料庫:
4.1 查詢當前已存在的資料庫:
|
mysql> show databases;
+——————————+
| Database |
+——————————+
| information_schema |
| mysql |
| performance_schema |
| test |
+——————————+
4 rows in set (0.17 sec)
|
4.2 使用已有的資料庫;例如使用已存在的 test 資料庫;
|
mysql> use test
Database changed
|
4.3 假設你在test 該資料庫建立的任何東西可以被訪問它的其它人刪除,因此,你應該詢問MySQL管理員許可你使用自己的一個資料庫。假定你想要呼叫你的menagerie,管理員需要執行這樣一條命令:
|
mysql> GRANT ALL ON menagerie.* TO `your_mysql_name`@`your_client_host`;
|
這裡your_mysql_name是分配給你的MySQL使用者名稱,your_client_host是所連線的伺服器所在的主機。
4.4 建立並選擇新的資料庫;
|
mysql> create database himiDB
–> ;
Query OK, 1 row affected (0.06 sec)
mysql> use himidb
Database changed
mysql>
|
5. 建立使用表;
5.1 新建立的資料庫中是沒有任何表的,如上面我新建的himiDB,如下我使用 show tables; 顯示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
mysql> show databases
–> ;
+——————————+
| Database |
+——————————+
| information_schema |
| himiDB |
| mysql |
| performance_schema |
| test |
+——————————+
5 rows in set (0.00 sec)
mysql> use himidb
Database changed
mysql> show tables
–> ;
Empty set (0.00 sec)
|
而關於表的建立比較麻煩,需要設計,較難的部分是決定你的資料庫結構應該是什麼:你需要什麼資料庫表,各資料庫表中有什麼樣的列。你將需要一個包含你每個寵物的記錄的表。它可稱為pet表,並且它應該包含,最少,每個動物的名字。因為名字本身不是很有趣,表應該包含另外的資訊。例如,如果在你豢養寵物的家庭有超過一個人,你可能想要列出每個動物的主人。你可能也想要記錄例如種類和性別的一些基本的描述資訊。
年齡呢?那可能有趣,但是儲存到一個資料庫中不是一件好事情。年齡隨著時間流逝而變化,這意味著你將要不斷地更新你的記錄。相反, 儲存一個固定值例如生日比較好,那麼,無論何時你需要年齡,可以以當前日期和出生日期之間的差來計算它。MySQL提供了日期運算函式,因此這並不困難。儲存出生日期而非年齡還有其它優點:· 你可以使用資料庫完成這樣的任務,例如生成即將到來的寵物生日的提示。(如果你認為這類查詢有點蠢,注意,這與從商務資料庫來識別出不久要發給生日祝賀的客戶是同一個問題,因為計算機幫助私人聯絡。)· 你可以相對於日期而不止是當前日期來計算年齡。例如,如果你在資料庫儲存死亡日期,你能很容易地計算出一隻寵物死時有多大。
這裡假設我們建立一個people 的表,其中包含人的 名字、名族(h/m 來表示漢族/滿族)、城市,性別(m/w man/woman)、出生和死亡日期。
|
mysql> create table people (
–> name varchar(20),
–> mz varchar(1),
–> city varchar(10),
–> sex varchar(1),
–> birthday varchar(20),
–> deathday varchar(20));
Query OK, 0 rows affected (0.37 sec)
|
建立表規則: create table xx(table Name) ( item的名字 item的型別 );
這裡 varchar 字元,varchar()小括號內的表示字元大小,根據情況自己定義,範圍是:1到65535的任何長度(如果選擇得不合適,後來證明你需要一個更長的欄位,MySQL提供一個ALTER TABLE語句。)
OK,我們來檢視這個新建立的表中的類目(具體每個記錄的檢視使用 select *from 語句):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
mysql> show tables;
+—————————+
| Tables_in_himidb |
+—————————+
| people |
+—————————+
1 row in set (0.00 sec)
mysql> describe people;
+—————+——————–+———+——–+————–+———–+
| Field | Type | Null | Key | Default | Extra |
+—————+——————–+———+——–+————–+———–+
| name | varchar(20) | YES | | NULL | |
| mz | varchar(1) | YES | | NULL | |
| city | varchar(10) | YES | | NULL | |
| sex | varchar(1) | YES | | NULL | |
| birthday | varchar(20) | YES | | NULL | |
| deathday | varchar(20) | YES | | NULL | |
+—————+——————–+———+——–+————–+———–+
6 rows in set (0.14 sec)
|
5.2 往表中插入資料:
5.2.1. 第一種使用讀取本地txt插入到表中,txt的每個value之間以tab空開,然後採用如下語句插入:
load data local infile ‘xxx路徑’ into table people;
如下:
|
mysql> load data local infile `/Users/Himi/Desktop/people.txt` into table people;
Query OK, 1 row affected (0.08 sec)
Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
mysql> SELECT * FROM people;
+———+———+————–+———+—————–+—————+
| name | mz | city | sex | birthday | deathday |
+———+———+————–+———+—————–+—————+
| himi | h | beijing | m | 1989–9–23 | NULL |
+———+———+————–+———+—————–+—————+
1 row in set (0.03 sec)
|
OK,沒有問題,txt每一行對應表單的每一行,如果需要插入多行可以直接回車就OK啦。
注意:
mysql> LOAD DATA LOCAL INFILE ‘/path/people.txt’ INTO TABLE people;
請注意如果用Windows中的編輯器(使用
做為行的結束符)建立檔案,應使用:
mysql> LOAD DATA LOCAL INFILE ‘/path/people.txt’ INTO TABLE people -> LINES TERMINATED BY ‘
’;
(在執行OS X的Apple機上,應使用行結束符’
’。)
如果你願意,你也能明確地在LOAD DATA語句中指出列值的分隔符和行尾標記,但是預設標記是定位符和換行符。
5.2.2. 使用INSERT語句手動直接插入
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
mysql> insert into people
–> values(`insertHimi`,`h`,`Anhui`,`m`,`1989-9-23`,NULL);
Query OK, 1 row affected (0.10 sec)
mysql> select *from people;
+——————+———+————–+———+—————–+—————+
| name | mz | city | sex | birthday | deathday |
+——————+———+————–+———+—————–+—————+
| himi | h | beijing | m | 1989–9–23 | NULL |
| himi | h | beijing | m | 1989–9–23 | NULL |
| himi3 | h | beijing | m | 1989–9–23 | NULL |
| insertHimi | h | Anhui | m | 1989–9–23 | NULL |
+——————+———+————–+———+—————–+—————+
4 rows in set (0.01 sec)
|
OK,本篇就到這裡,下篇繼續~