操作欄位
通常,當你從一個表格中取出欄位值時,該值與建立該表時所定義的欄位名稱連結在一起。如果你從表authors中選擇所有的作者名字,所有的值將會與欄位名稱au_lname相連結。但是在某些情況下,你需要對欄位名稱進行操作。在SELECT語句中,你可以在預設字段名後面只跟一個新名字來取代它。例如,可以用一個更直觀易讀的名字Author
Last Name來取代欄位名稱au_lname:
SELECT au_lname "Author Last Name" FROM
authors
當這個SELECT語句執行時,來自字段au_lname的值會與「Author Last
Name」相連結。查詢結果可能是:
Author Last Name
……………………………………………………………………..
White
Green
Carson
O’Leary
Straight
…
(23 row(s) affected)
注意字段標題不再是au_lname,而是被Author Last
Name取代。
你也可以透過執行運算,來操作從一個表格傳回的欄位值。例如,如果你想把表titles中的所有書的價格加倍,你可以使用下面的
SELECT語句:
SELECT
PRice*2 FROM titles
當這個查詢執行時,每本書的價格從表中取出時都會加倍。但是,透過這種途徑操作欄位不會改變儲存在表格中的書價。對欄位的運
算只會影響SELECT語句的輸出,而不會影響表格中的資料。為了同時顯示書籍的原始價格和漲價後的新價格,你可以使用下面的查詢:
SELECT
price "Original price", price*2 "New price" FROM
titles
當資料從表titles中取出時,原始價格顯示在標題Original price下面,加倍後的價格顯示在標題New
price下面。結果可能是這
樣:
original price new
price
……………………………………………………………….
39.98
11.95 23.90
5.98
39.98
…
(18 row(s)
affected)
你可以使用大多數標準的數學運算符來操作字段值,如加(+),減(-),乘(*)和除(/)。你也可以一次對多個欄位進行運
算,例如:
SELECT
price*ytd_sales "total revenue" FROM
titles
在這個例子中,透過把價格與銷售量相乘,計算出了每種書的總銷售額。這個SELECT語句的結果會是這樣的:
total
revenue
………………………………………..
81,859,05
46,318,20
55,978,78
81,
55,978,78
81,859,055,978,78
(18
row(s) affected)
最後,你也可以使用連接運算子(它看起來像個加號)來連接兩個字元型欄位:
SELECT
au_fname+" "+au_lname "author name" FROM
authors
在這個例子中,你把字段au_fname和字段au_lname貼在一起,中間用一個逗號 隔開,並把查詢結果的標題指定為author
name。這個語句的執行結果會是這樣的:
author
names
…………………………………………………………
Johnson White
Marjorie
Green
Cheryl Carson
Michael O’Leary
Dean
Straight
…
(23 row(s)
affected)
可以看到,SQL為你提供了許多對查詢結果的控制。你應該在asp程式設計過程中充分利用這些優點。使用SQL來操作查詢結果幾乎總是
比使用有相同作用的腳本效率更高。
排序查詢結果
本章的介紹中曾強調過,SQL表沒有內在的順序。例如,從一個表格中取第二個記錄是沒有意義的。從SQL的角度看來,沒有一個記錄
在任何其他記錄之前。
然而,你可以操縱一個SQL查詢結果的順序。在缺省情況下,當記錄從表中取出時,記錄不以特定的順序出現。例如,當從表
authors中取出字段au_lname時,查詢結果顯示成這樣:
au_lname
……………………………….
White
Green
Carson
White
Green
Carson O'Leary
Straight
…
(23
row(s) affected)
看一列沒有特定順序的名字是很不方便的。如果把這些名字按字母順序排列,讀起來就會容易得多。透過使用ORDER
BY子句,你可
以強制一個查詢結果按升序排列,就像這樣:
SELECT au_lname FROM authors ORDER BY
au_lname
🎜當這個SELECT語句執行時,作者名字的顯示將按字母順序排列。 ORDER
BY子句將作者名字依升序排列。 🎜🎜你也可以同時對多個欄位使用ORDER
BY子句。例如,如果你想同時按升序顯示欄位au_lname和欄位au_fname,你需要對兩個欄位都🎜進行排序:
SELECT
au_lname,au_fname FROM authors ORDER BY au_lname
,au_fname
這個查詢首先把結果按au_lname欄位排序,然後再按欄位au_fname排序。記錄將按如下的順序取出:
au_lname
au_fname
…………………………………………………………………….
Bennet Abraham
Ringer
Albert
Ringer Anne
Smith Meander
…
(23 row(s)
affected)
注意有兩個作者有相同的名字Ringer。名為Albert Ringer的作者出現名為Anne
Ringer的作者之前,這是因為姓Albert按字母順
序要排在姓Anne之前。
如果你想把查詢結果按相反的順序排列,你可以使用關鍵字DESC。關鍵字DESC把查詢結果依降序排列,如下例所示:
SELECT
au_lname,au_fname FROM authors
WHERE au_lname=”Ringer” ORDER BY au_lname
,au_fname DESC
這個查詢從表authors中取出所有名字為Ringer的作者記錄。 ORDER
BY子句依照作者的名字和姓,將查詢結果依降序排列。結果是
這樣的:
au_lname
au_fname
……………………………………………………………………………………….
Ringer
Anne
Ringer Albert
(2 row(s)
affectec)
注意在這個表中,姓Anne出現在姓Albert之前。作者名字依降序顯示。
你也可以依數值型欄位對一個查詢結果進行排序。例如,如果你想以降序取出所有書的價格,你可以使用以下的SQL查詢:
SELECT
price FROM titles ORDER BY price
DESC
這個SELECT語句從表格中取出所有書的價格,顯示結果時,價格低的書先顯示,價格高的書後顯示。
警告:
不是特別需要時,不要對查詢結果進行排序,因為服務器完成這項工作要費些力氣。這意味著帶有ORDER
BY
子句的SELECT語句執
行起來比一般的SELECT語句花的時間長。
取出互不相同的記錄
一個表有可能在同一列中有重複的值。例如,資料庫pubs的表authors中有兩個作者的名字是Ringer。如果你從這個表中取出所有
的名字,名字Ringer將會顯示兩次。
在特定情況下,你可能只有興趣從一個表中取出互不相同的值。如果一個欄位有重複的值,你也許希望每個值只被選取一次,你可
以使用關鍵字DISTINCT來做到這一點:
SELCET
DISTINCT au_lname FROM authors WHERE
au_lname="Ringer"
當這個SELECT語句執行時,只會回傳一個記錄。透過在SELECT語句中包含關鍵字DISTINCT,你可以刪除所有重複的值。例如,假設
有一個關於新聞群組資訊發布的表,你想取出所有曾在這個新聞群組中發布資訊的人的名字,那麼你可以使用關鍵字DISTINCT。每個用
戶的名字只取一次——儘管有的用戶發布了不止一篇資訊。
警告:
如同ORDER
BY子句一樣,強制伺服器傳回互不相同的值也會增加執行開銷。福氣不得不花費一些時間來完成這項工作。因此,不是
必須的時候不要使用關鍵字DISTINCT。
建立新表
前面說過,資料庫中的所有資料都儲存在表中。資料表包括行和列。列決定了表中資料的類型。行包含了實際的資料。
例如,資料庫pubs中的表authors有九個欄位。其中的一個欄位名為為au_lname,這個欄位被用來儲存作者的名字資訊。每次向這個表中添加新作者時,作者名字就會被添加到這個字段,產生一條新記錄。
透過定義字段,你可以建立一個新表。每個欄位有一個名字和一個特定的資料類型(資料類型在後面的「欄位類型」一節中講述),例如欄位au_lname儲存的是字元型資料。一個欄位也可以儲存其它類型的資料。
使用SQL
Sever,建立一個新表的方法是很多的。你可以執行一個SQL語句或使用SQL事務管理器(SQL Enterprise
Manager)來建立一個新表。在下一節裡,你將學會如何用SQL語句來建立一個新表。
以上就是SQL資料操作基礎(初級)3的內容,更多相關文章請關注PHP中文網(www.php.cn)!

在數據庫優化中,應根據查詢需求選擇索引策略:1.當查詢涉及多個列且條件順序固定時,使用複合索引;2.當查詢涉及多個列但條件順序不固定時,使用多個單列索引。複合索引適用於優化多列查詢,單列索引則適合單列查詢。

要優化MySQL慢查詢,需使用slowquerylog和performance_schema:1.啟用slowquerylog並設置閾值,記錄慢查詢;2.利用performance_schema分析查詢執行細節,找出性能瓶頸並優化。

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

MySQL異步主從復制通過binlog實現數據同步,提升讀性能和高可用性。 1)主服務器記錄變更到binlog;2)從服務器通過I/O線程讀取binlog;3)從服務器的SQL線程應用binlog同步數據。

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

MySQL的安裝和基本操作包括:1.下載並安裝MySQL,設置根用戶密碼;2.使用SQL命令創建數據庫和表,如CREATEDATABASE和CREATETABLE;3.執行CRUD操作,使用INSERT,SELECT,UPDATE,DELETE命令;4.創建索引和存儲過程以優化性能和實現複雜邏輯。通過這些步驟,你可以從零開始構建和管理MySQL數據庫。

InnoDBBufferPool通過將數據和索引頁加載到內存中來提升MySQL數據庫的性能。 1)數據頁加載到BufferPool中,減少磁盤I/O。 2)臟頁被標記並定期刷新到磁盤。 3)LRU算法管理數據頁淘汰。 4)預讀機制提前加載可能需要的數據頁。

MySQL適合初學者使用,因為它安裝簡單、功能強大且易於管理數據。 1.安裝和配置簡單,適用於多種操作系統。 2.支持基本操作如創建數據庫和表、插入、查詢、更新和刪除數據。 3.提供高級功能如JOIN操作和子查詢。 4.可以通過索引、查詢優化和分錶分區來提升性能。 5.支持備份、恢復和安全措施,確保數據的安全和一致性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3漢化版
中文版,非常好用

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1
強大的PHP整合開發環境