更新記錄
要修改表中已經存在的一條或多筆記錄,應使用SQL
UPDATE語句。同DELETE語句一樣,UPDATE語句可以使用WHERE子句選擇更新特定的記錄。請看這個範例:
UPDATE mytable
SET first_column=’Updated!’ WHERE second_column=’Update Me!’
這個UPDATE
語句更新所有second_column欄位的值為’Update
Me!’的記錄。對所有被選取的記錄,欄位first_column的值被置為’Updated!’。
下面是UPDATE語句的完整句法:
UPDATE
{table_name|view_name} SET
[{table_name|view_name}]
{column_list|variable_list|variable_and_column_list}
[,{column_list2|variable_list2|variable_and_column_list2}>_list2>g ]
[WHERE
clause]
注意:
你可以對文字型欄位使用UPDATE語句。但是,如果你需要更新很長的字串,應使用UPDATETEXT語句。這部分內容對本書來說太高級了,因此不加討論。要了解更多的信息,請參考Microsoft
SQL Sever
的文檔。
如果你不提供WHERE子句,表中的所有記錄都會被更新。有時這是有用的。例如,如果你想把表titles中的所有書的價格加倍,你可以使用如下的UPDATE
語句:
你也可以同時更新多個欄位。例如,下面的UPDATE語句同時更新first_column,second_column,和third_column這三個欄位:
UPDATE
mytable SET
first_column=’Updated!’
Second_column=’Updated!’
Third_column=’Updated!’
WHERE
first_column=’Update
Me1’
技巧:
SQL忽略語句中多餘的空格。你可以把SQL語句寫成任何你最容易讀的格式。
用SELECT
創建記錄和表
你也許已經注意到,INSERT
語句與DELETE語句和UPDATE語句有一點不同,它一次只會操作一個記錄。然而,有一個方法可以使INSERT
語句一次新增多個記錄。要作到這一點,你需要把INSERT 語句與SELECT 語句結合起來,像這樣:
INSERT mytable
(first_column,second_column)
SELECT
another_first,another_second
FROM anothertable
WHERE
another_first=’Copy
Me!’
這個語句從anothertable拷貝記錄到mytable.只有表anothertable中字段another_first的值為’Copy
Me! ’的記錄才被拷貝。
當為一個表格中的記錄建立備份時,這種形式的INSERT
語句是非常有用的。在刪除一個表格中的記錄之前,你可以先用這個方法把它們拷貝到另一個表格中。
如果你需要拷貝整張表,你可以使用SELECT INTO
語句。例如,下面的語句建立了一個名為newtable的新表,該表包含表mytable的所有資料:
SELECT * INTO newtable
FROM
mytable
你也可以指定只有特定的欄位被用來建立這個新表。要做到這一點,只需在欄位清單中指定你想要拷貝的欄位。另外,你可以使用WHERE
子句來限制拷貝到新表中的記錄。下面的範例只拷貝欄位second_columnd的值等於’Copy
Me!’的記錄的first_column欄位。
SELECT first_column INTO newtable
FROM
mytable
WHERE second_column=’Copy
Me!’
使用SQL修改已經建立的表格是很困難的。例如,如果你向一個表中添加了一個字段,沒有容易的辦法來去除它。另外,如果你不小心把一個欄位的資料型別給錯了,你將沒有辦法改變它。但是,使用本節中講述的SQL語句,你可以繞過這兩個問題。
例如,假設你想要從一個表格中刪除一個欄位。使用SELECT
INTO
語句,你可以建立該表的一個拷貝,但不包含要刪除的欄位。這使你既刪除了該字段,又保留了不想刪除的資料。
如果你想改變一個欄位的資料類型,你可以建立一個包含正確資料類型欄位的新表。建立好該表後,就可以結合使用UPDATE語句和SELECT
語句,把原來表中的所有資料拷貝到新表中。透過這種方法,你既可以修改表格的結構,又能保存原有的資料。
集合函數
到現在為止,你只學習瞭如何根據特定的條件從表中取出一條或多條記錄。但是,假如你想對一個表格中的記錄進行資料統計。例如,如果你想統計儲存在表中的一次民意測驗的投票結果。或者你想知道一個訪客在你的網站上平均花了多少時間。要對錶中的任何類型的資料進行統計,都需要使用集合函數。
Microsoft
SQL
支援五種類型的集合函數。你可以統計記錄數目,平均值,最小值,最大值,或求和。當你使用一個集合函數時,它只會傳回一個數,該數值代表這幾個統計值之一。
注意:
要在你的asp網頁中使用集合函數的回傳值,你需要為該值取一個名字。要作到這一點,你可以在SELECT語句中,在集合函數後面緊跟著一個字段名,如下例所示:
SELECT
AVG(vote) ‘the_average’ FROM opinion
在這個例子中,vote的平均值被命名為
the_average。現在你可以在你的ASP網頁的資料庫方法中使用這個名字。
統計欄位值的數目
函數COUNT()也許是最有用的集合函數。你可以用這個函數來統計一個表格中有多少筆記錄。這裡有一個例子:
SELECT
COUNT(au_lname) FROM authors
這個例子計算表authors中名字(last
name)的數目。如果相同的名字出現了不只一次,該名字將會被計算多次。如果你想知道名字為某個特定值的作者有多少個,你可以使用WHERE子句,如下例所示:
SELECT
COUNT(au_lname) FROM authors WHERE
au_lname=’Ringer’
這個範例回傳名字為’Ringer’的作者的數目。如果這個名字在表authors中出現了兩次,則次函數的回傳值是2。
假如你想知道有不同名字的作者的數目。你可以透過使用關鍵字DISTINCT來得到該數目。如下例所示:
SELECT
COUNT(DISTINCT au_lname) FROM
authors
如果名字’Ringer’出現了不只一次,它將只被計算一次。關鍵字DISTINCT
決定了只有互不相同的值才被計算出來。
通常,當你使用COUNT()時,欄位中的空值將被忽略。一般來說,這正是你所希望的。但是,如果你只是想知道表中記錄的數目,那麼你需要計算表中所有的記錄─不管它是否包含空值。以下是如何做到這一點的例子:
SELECT
COUNT(*) FROM
authors
注意函數COUNT()沒有指定任何欄位。這個語句計算表中所有記錄所數目,包括有空值的記錄。因此,你不需要指定要被計算的特定欄位。
函數COUNT()在許多不同情況下是有用的。例如,假設有一個表格保存了對你網站的品質進行民意調查的結果。這個表有一個名為vote的字段,該字段的值要么是0,要么是1。0表示反對票,1表示贊成票。要確定贊成票的數量,你可以所有下面的SELECT
語句:
SELECT COUNT(vote) FROM opinion_table WHERE
vote=1
計算欄位的平均值
使用函數COUNT(),你可以統計一個欄位中有多少個值。但有時你需要計算這些數值的平均值。使用函數AVG(),你可以傳回一個欄位中所有值的平均值。
假如你對你的站點進行一次較為複雜的民意調查。訪客可以在1到10之間投票,表示他們喜歡你網站的程度。你把投票結果保存在名為vote的INT型欄位中。要計算你的使用者投票的平均值,你需要使用函數AVG():
SELECT
AVG(vote) FROM
opinion
這個SELECT語句的回傳值代表使用者對你網站的平均喜歡程度。函數AVG()只能對數值型欄位使用。這個函數在計算平均值時也忽略空值。
計算字段值的和
假設你的站點被用來出售卡片,已經運行了兩個月,是該計算賺了多少錢的時候了。假設有一個名為orders的表格用來記錄所有訪客的訂購資訊。要計算所有訂購量的總和,你可以使用函數SUM():
SELECT
SUM(purchase_amount) FROM
orders
函數SUM()的回傳值代表欄位purchase_amount中所有值的平均值。字段purchase_amount的資料類型也許是MONEY型,但你也可以對其它數值型字段使用函數SUM()。
回傳最大值或最小值
再一次假設你有一個表用來保存對你的站點進行民意調查的結果。訪客可以選擇從1到10
的值來表示他們對你網站的評價。如果你想知道訪客對你網站的最高評價,你可以使用以下的語句:
SELECT MAX(vote) FROM
opinion
你也許希望有人對你的站點給予了很高的評價。透過函數MAX(),你可以知道一個數值型欄位的所有值中的最大值。如果有人對你的網站投了數字10,函數MAX()將會回傳該值。
另一方面,假如你想知道訪客對你網站的最低評價,你可以使用函數MIN(),如下例所示:
SELECT
MIN(vote) FROM
opinion
函數MIN()傳回一個欄位的所有值中的最小值。如果欄位是空的,函數MIN()會傳回空值。
其它常用的SQL表達式,函數,和過程
這一節將介紹一些其它的SQL技術。你將學習如何從表中取出數據,其某個字段的值處在一定的範圍,你還將學習如何把字段值從一種類型轉換成另一種類型,如何操作字符串和日期時間數據。最後,你將學會一個發送郵件的簡單方法。
透過匹配一定範圍的值來取出資料
假設你有一個表用來保存對你的站點進行民意調查的結果。現在你想向所有對你的網站的評價在7到10之間的訪客發送書面的感謝信。要得到這些人的名字,你可以使用如下的SELECT
語句:
SELECT username FROM opinion WHERE vote>6 and
vote
這個SELECT 語句會實現你的要求。你使用下面的SELECT 語句也可以得到相同的結果:
SELECT
username FROM opinion WHERE vote BETWEEN 7 AND 10
這個SELECT
語句與上一個語句是等價的。使用哪一種語句是程式設計風格的問題,但你會發現使用表達式BETWEEN
的語句更易讀。
現在假設你只想取出對你的站點投了1或10的訪客的名字。要從表opinion中取出這些名字,你可以使用以下的SELECT
語句:
SELECT username FROM opinion WHERE vote=1 or
vote
這個SELECT語句會回傳正確的結果,沒有理由不使用它。但是,存在一種等價的方式。使用以下的SELECT可以得到相同的結果:
SELECT
username FROM opinion WHERE vote IN (1,10)
注意表達式IN 的使用。這個SELECT
語句只取出vote的值等於括號中的值之一的記錄。
你也可以使用IN來匹配字元資料。例如,假設你只想取出Bill Gates或PResident Clinton的投票值。你可以使用如下的SELECT
語句:
SELECT vote FROM opinion WHERE username IN (‘Bill Gates’,’President
Clinton’)
最後,你可以在使用BETWEEN或IN的同時使用表達式NOT。例如,要取出那些投票值不在7到10之間的人的名字,你可以使用以下的SELECT
語句:
SELECT username FROM opinion WHERE vote NOT BETWEEN 7 and
10
要選取那些某個欄位的值不在一列值之中的記錄,你可以同時使用NOT 和IN,如下例所示:
SELECT vote FROM
opinion
WHERE username NOT IN (‘Bill Gates’,’President
Clinton’)
你不是必須在SQL語句中使用BETWEEN或IN,但是,要讓你的查詢更接近自然語言,這兩個表達式是有幫助的。
以上就是SQL資料操作基礎(中級)8的內容,更多相關文章請關注PHP中文網(www.php.cn)!

存儲過程是MySQL中的預編譯SQL語句集合,用於提高性能和簡化複雜操作。 1.提高性能:首次編譯後,後續調用無需重新編譯。 2.提高安全性:通過權限控制限制數據表訪問。 3.簡化複雜操作:將多條SQL語句組合,簡化應用層邏輯。

MySQL查詢緩存的工作原理是通過存儲SELECT查詢的結果,當相同查詢再次執行時,直接返回緩存結果。 1)查詢緩存提高數據庫讀取性能,通過哈希值查找緩存結果。 2)配置簡單,在MySQL配置文件中設置query_cache_type和query_cache_size。 3)使用SQL_NO_CACHE關鍵字可以禁用特定查詢的緩存。 4)在高頻更新環境中,查詢緩存可能導致性能瓶頸,需通過監控和調整參數優化使用。

MySQL被廣泛應用於各種項目中的原因包括:1.高性能與可擴展性,支持多種存儲引擎;2.易於使用和維護,配置簡單且工具豐富;3.豐富的生態系統,吸引大量社區和第三方工具支持;4.跨平台支持,適用於多種操作系統。

MySQL數據庫升級的步驟包括:1.備份數據庫,2.停止當前MySQL服務,3.安裝新版本MySQL,4.啟動新版本MySQL服務,5.恢復數據庫。升級過程需注意兼容性問題,並可使用高級工具如PerconaToolkit進行測試和優化。

MySQL備份策略包括邏輯備份、物理備份、增量備份、基於復制的備份和雲備份。 1.邏輯備份使用mysqldump導出數據庫結構和數據,適合小型數據庫和版本遷移。 2.物理備份通過複製數據文件,速度快且全面,但需數據庫一致性。 3.增量備份利用二進制日誌記錄變化,適用於大型數據庫。 4.基於復制的備份通過從服務器備份,減少對生產系統的影響。 5.雲備份如AmazonRDS提供自動化解決方案,但成本和控制需考慮。選擇策略時應考慮數據庫大小、停機容忍度、恢復時間和恢復點目標。

MySQLclusteringenhancesdatabaserobustnessandscalabilitybydistributingdataacrossmultiplenodes.ItusestheNDBenginefordatareplicationandfaulttolerance,ensuringhighavailability.Setupinvolvesconfiguringmanagement,data,andSQLnodes,withcarefulmonitoringandpe

在MySQL中優化數據庫模式設計可通過以下步驟提升性能:1.索引優化:在常用查詢列上創建索引,平衡查詢和插入更新的開銷。 2.表結構優化:通過規範化或反規範化減少數據冗餘,提高訪問效率。 3.數據類型選擇:使用合適的數據類型,如INT替代VARCHAR,減少存儲空間。 4.分區和分錶:對於大數據量,使用分區和分錶分散數據,提升查詢和維護效率。

tooptimizemysqlperformance,lofterTheSeSteps:1)inasemproperIndexingTospeedUpqueries,2)使用ExplaintplaintoAnalyzeandoptimizequeryPerformance,3)ActiveServerConfigurationStersLikeTlikeTlikeTlikeIkeLikeIkeIkeLikeIkeLikeIkeLikeIkeLikeNodb_buffer_pool_sizizeandmax_connections,4)


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

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

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

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

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Atom編輯器mac版下載
最受歡迎的的開源編輯器