使用數(shù)據(jù)庫
連接
連接數(shù)據(jù)庫時,如果僅僅輸入mysql,可能會出現(xiàn)錯誤信息,因為可能需要安全證書,或者是因為MYSQL沒有運行到本地或者默認(rèn)端口上。mysql接受你可以使用的一組命令行參數(shù)。
mysql -u 數(shù)據(jù)庫賬戶 -p 密碼
連接成功之后會出現(xiàn)以下歡迎信息
Welcome to the MySQL monitor...
...
mysql>
PS:
- 命令輸入在mysql>之后;
- 命令用;或者\g結(jié)束,換句話說,僅按Enter不執(zhí)行命令;
- 輸入help或者\h獲取幫助,也可以輸入更多的文本獲得特定命令的幫助(如,輸入help select獲得使用select語句的幫助)
- 輸入quit或exit退出命令行實用程序
選擇數(shù)據(jù)庫
最初鏈接到MYSQL時,沒有打開任何數(shù)據(jù)庫,需要選擇一個數(shù)據(jù)庫,可以使用USE關(guān)鍵字(key word)
例如,為了使用crashcourse數(shù)據(jù)庫,應(yīng)該輸入一下內(nèi)容:
USE crashcourse;
成功之后會返回
Database changed
PS:USE語句并不返回任何結(jié)果,依賴于使用的客戶機,顯示某種形式的通知。例如這里顯示的Database changed消息是mysql命令行實用程序在數(shù)據(jù)庫選擇成功后顯示的。
$必須先使用USE打開數(shù)據(jù)庫,才能讀取其中的數(shù)據(jù)$
- MYSQL數(shù)據(jù)庫使用show命令來顯示數(shù)據(jù)庫的名字
SHOW DATABASES;
+-------------+
| Database +
+-------------+
| 數(shù)據(jù)庫一 |
| 數(shù)據(jù)庫二 |
| 數(shù)據(jù)庫三 |
+-------------+
- 使用SHOW TABLES;命令可以獲取數(shù)據(jù)庫內(nèi)的表的列表,如下圖所示
SHOW TABLES;
+-----------------------+
| Tables_in_數(shù)據(jù)庫名 +
+-----------------------+
| 表一 |
| 表二 |
| 表三 |
+-----------------------+
- 當(dāng)然,SHOW命令也可以用來顯示表列
SHOW COLUMNS FROM customers;
+---------------+-----------+--------+
| Field | Type | ... |
+---------------+-----------+--------+
| cust_id |int(11) | ... |
| cust_name |char(50) | ... |
| cust_address |char(50) | ... |
| ... |... | ... |
+---------------+-----------+--------+
SHOW COLUMNS要求給出一個表名,(這個例子中的FORM customers),他對每個字段返回一行,行中包含字段名、數(shù)據(jù)類型、是否允許NULL、鍵信息...
PS:DESCRIBE語句,MYSQL支持用該命令作為SHOW COLUMNS FROM的一種快捷方式。換句話說,DESCRIBE customers是SHOW COLUMNS FROM customers;de 一種快捷方式。
- SHOW STATUS 用于顯示廣泛的服務(wù)器狀態(tài)信息
- SHOW CREATE DATBASE和SHOW CREATE TABLE,分別用來顯示創(chuàng)建特定數(shù)據(jù)庫或者表的mysql語句
- SHOW GRANTS,用來顯示授予用戶的安全權(quán)限
- SHOW ERRORS和SHOW WARNINGS用來顯示服務(wù)器錯誤或警告消息
檢索數(shù)據(jù)
SELECT語句 檢索單個列
SELECT name FROM student;
上述語句利用SELECT語句從student表中檢索一個名為name的列。
+------------+
| name |
+------------+
| 張一 |
| 張二 |
| 張三 |
+------------+
結(jié)束SQL語句: 多條SQL語句必須以;分隔。單條SQL語句后面可以不加;但是加上分號肯定沒有壞處。如果你使用mysql命令行,必須加上;來結(jié)束SQL語句。
SQL語句和大小寫:,SQL語句不區(qū)分大小寫,但是習(xí)慣上對于所有SQL關(guān)鍵字使用大寫,而對于所有列和表名使用小寫,這樣做使代碼更易于閱讀和調(diào)試。
檢索多列
檢索多列同樣使用SELECT語句,不同的是在SELECT關(guān)鍵字后給出多個列,列名之間必須以逗號分隔(當(dāng)選擇多個列時,一定要在列名之間加上逗號,最后一個列名后不加,如果最后一個列名后加了逗號,將出現(xiàn)錯誤)
SELECT id, name, age FROM student;
上述例子,表明從student表中檢索學(xué)號,姓名,年齡
檢索所有列
除了指定所需的列外,SELECT語句還可以檢索所有的列而不必逐個列出他們。我們可以通過在實際列名的位置使用星號(*)通配符來達到。
SELECT * FROM student;
檢索不同的行
SELECT 語句返回所有匹配的行。但是有時我們不想每個值每次都出現(xiàn),對于重復(fù)的值只出現(xiàn)一次就好。
解決辦法是使用DISTINCT(明顯的、清楚的、有區(qū)別的)關(guān)鍵字
SELECT DISTINCT id FROM student;
使用上述命令,是只返回不同(唯一)的id,如果使用該關(guān)鍵字,他必須直接放在列名的前面。
限制結(jié)果
使用LIMIT子句,可以指定表中的每個行
SELECT name
FROM student
LIMIT 5;
上述語句使用SELECT語句檢索單個列,LIMIT 5只是mysql返回不多于5行
SELECT name
FROM student
LIMIT 5, 5;
LIMIT 5,5 指示mysql返回從第5行開始返回5行,第一個數(shù)是開始位置,第二個為要檢索的行數(shù)。行數(shù)不夠時,mysql將只返回他能返回的那么多行。
排序檢索數(shù)據(jù)
單純的使用SELECT 子句檢索數(shù)據(jù),輸出并沒有特定的順序。 而有時我們需要返回有序的的數(shù)據(jù)。這時我們可以使用 ORDER BY語句來實現(xiàn)。
SELECT id
FROM student
ORDER BY id;
這條語句表明按id順序返回學(xué)生的學(xué)號信息
按多個列排序
經(jīng)常需要不止一個列進行數(shù)據(jù)排序。例如要顯示雇員清單,可能希望按姓和名排序(先按照姓排序,在按照名字排序)
為了按多個列排序,只要指定列名,列名之間用逗號分開即可
SELECT id, name, age
FROM student
ORDER BY id, name;
上述語句將先按照學(xué)生id排序,當(dāng)id相同時按照name排序。
指定排序方向
ORDER BY 默認(rèn)按照升序排序(關(guān)鍵字ASC),我們可以通過使用關(guān)鍵字DESC來實現(xiàn)降序排列
DESC關(guān)鍵字,只要應(yīng)用到直接位于其前面的列名
SELECT id, name, age
FROM student
ORDER BY id DESC, name;
上述語句將只對id降序排列,name列任然按照升序排列
$在給出ORDER BY 語句時,應(yīng)該只保證它位于FROM子句之后,如果使用LIMIT它必須位于ORDER BY 之后,使用的子句次序不對將會產(chǎn)生錯誤消息$