搜尋
首頁資料庫mysql教程SQL資料運算基礎(中級)7
SQL資料運算基礎(中級)7Dec 17, 2016 pm 02:35 PM

用SQL建立索引

為了給一個表格建立索引,啟動工作列SQL Sever程式組中的ISQL/w程式。進入查詢視窗後,輸入下面的語句:

CREATE INDEX mycolumn_index ON mytable (myclumn)

這個語句建立了一個名為mycolumn_index的索引。你可以給一個索引起任何名字,但你應該在索引名中包含所索引的字段名,這對你將來弄清楚建立該索引的意圖是有幫助的。

注意:

在本書中你執行任何SQL語句,都會收到以下的訊息:

This command did not return data,and it did not return any rows

這表示該語句執行成功了。

索引mycolumn_index對錶mytable的mycolumn欄位進行。這是一個非聚集索引,也是個非唯一索引。 (這是一個索引的預設屬性)

如果你需要改變一個索引的類型,你必須刪除原來的索引並重建 一個。建立了一個索引後,你可以用下面的SQL語句刪除它:

DROP INDEX mytable.mycolumn_index

注意在DROP INDEX 語句中你要包含表格的名字。在這個例子中,你刪除的索引是mycolumn_index,它是表mytable的索引。

要建立一個聚集索引,可以使用關鍵字CLUSTERED。 )記住一個表格只能有一個聚集索引。 (這裡有一個如何對一個表建立聚簇索引的範例:

CREATE CLUSTERED INDEX mycolumn_clust_index ON mytable(mycolumn)

如果表中有重複的記錄,當你試圖用這個語句建立索引時,會出現錯誤。但是有重複記錄的表格也可以建立索引;你只要使用關鍵字ALLOW_DUP_ROW把這一點告訴SQL Sever即可:

CREATE CLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn)

WITH ALLOW_DUP_ROW

這個語句建立了一個允許重複記錄的叢集索引。你應該盡量避免在一個表格中出現重複記錄,但是,如果已經出現了,你可以使用這種方法。

要對一個表格建立唯一索引,可以使用關鍵字UNIQUE。對叢集索引和非叢集索引都可以使用這個關鍵字。這裡有一個例子:

CREATE UNIQUE COUSTERED INDEX myclumn_cindex ON mytable(mycolumn)

這是你將經常使用的索引建立語句。無論何時,只要可以,你應該盡量對一個對一個表建立唯一聚集索引來增強查詢操作。

最後,要建立一個多個欄位的索引-複合索引-在索引建立語句中同時包含多個欄位名稱。下面的範例對firstname和lastname兩個欄位建立索引:

CREATE INDEX name_index ON username(firstname,lastname)

這個範例對兩個欄位建立了單一索引。在一個複合索引中,你最多可以對16個欄位進行索引。

用事務管理器建立索引

用事務管理器建立索引比用SQL語句容易的多。使用事務管理器,你可以看到已經建立的索引的列表,並可以透過​​圖形介面選擇索引選項。

使用事務管理器你可以用兩種方式建立索引:使用Manage Tables視窗或使用Manage Indexes視窗。

要用Manage Tables 視窗建立一個新索引,點選按鈕Advanced Options(它看起來像是前面有一加號的表)。這樣就開啟了Advanced Options對話框。這個對話框有一部分標名為PRimary Key(見圖11.1)。

圖11。1

要建立一個新索引,從下拉清單中選擇你想對之建立索引的欄位名稱。如果你想建立一個多欄位的索引,你可以選擇多個欄位名稱。你也可以選擇索引是聚集的還是非聚集的。儲存表格資訊後,索引會自動建立。在Manage Tables視窗中的欄位名稱旁邊,會出現一把鑰匙。

你已經為你的表建立了「主索引」。主索引必須對不包含空值的欄位建立。另外,主索引強制一個欄位成為唯一值欄位。

要建立沒有這些限制的索引,你需要使用Manage Indexes視窗。從選單中選擇Manage|Indexes,開啟Manage Indexes 視窗。在Manage Indexes 視窗中,你可以透過下拉框選擇表格和特定的索引。 (見圖11.2)。若要建立一個新索引,請從Index下拉方塊中選擇New Index.,然後就可以選擇要對之建立索引的欄位。點選按鈕Add,把欄位加人到索引中。

圖11。2

你可以為你的索引選擇許多不同的選項。例如,你可以選擇該索引是聚集的還是非聚集的。你也可以指定該索引為唯一索引。設計好索引後,點選按鈕Build,建立該索引。

注意:

唯一索引是指該欄位不能有重複的值,而不是只能建立這一個索引。

SQL核心語句

在第十章,你學會如何用SQL SELECT 語句從一個表格中取資料。但是,到目前為止,還沒有討論如何添加,修改或刪除表中的資料。在這一節中,你將學習這些內容。

插入資料

在表格中新增一個新記錄,你要使用SQL INSERT 語句。這裡有一個如何使用這種語句的範例:

INSERT mytable (mycolumn) VALUES (‘some data’)

這個語句把字串’some data’插入表格mytable的mycolumn欄位中。將要被插入資料的欄位的名字在第一個括號中指定,實際的資料在第二個括號中給出。

INSERT 語句的完整句法如下:

INSERT [INTO] {table_name|view_name} [(column_list)] {DEFAULT VALUES |

Values_list | select_statement}

如果一個表有多個字段,透過把字段名和字段值用逗號隔開,你可以向所有的字段中插入資料。假設表格mytable有三個欄位first_column,second_column,和third_column。下面的INSERT語句增加了一條三個欄位都有值的完整記錄:

INSERT mytable (first_column,second_column,third_column)

VALUES (‘some data’,’some more data’,’yet more data’)

注意:

你可以使用INSERT語句向文字型欄位插入資料。但是,如果你需要輸入很長的字串,你應該使用WRITETEXT語句。這部分內容對本書來說太高級了,因此不加討論。要了解更多的信息,請參考Microsoft SQL Sever 的文檔。

如果你在INSERT 語句中只指定兩個欄位和資料會怎麼樣呢?換句話說,你在一個表格中插入一筆新記錄,但有一個欄位沒有提供資料。在這種情況下,有以下的四種可能:

如果該欄位有一個缺省值,則會使用該值。例如,假設你插入新記錄時沒有給字段third_column提供數據,而這個字段有一個缺省值’some value’。在這種情況下,當新記錄建立時會插入值’some value’。
如果該欄位可以接受空值,而且沒有缺省值,則會被插入空值。
如果該欄位不能接受空值,而且沒有缺省值,就會出現錯誤。你會收到錯誤訊息:
The column in table mytable may not be null.

最後,如果該字段是標識字段,那麼它會自動產生一個新值。當你在一個有標識字段的表中插入新記錄時,只要忽略該字段,標識字段會為自己賦一個新值。
注意:

插入新記錄到一個有識別欄位的表後,你可以用SQL變數@@identity來存取新記錄

的識別欄位的值。考慮如下的SQL語句:

INSERT mytable (first_column) VALUES(‘some value’)

INSERT anothertable(another_first,another_second)

VALUES(@@identity,’some value’)

如果表mytable有一個標識字段,則該字段的值會被插入表anothertable的another_first字段。這是因為變數@@identity總是保存最後一次插入識別欄位的值。

字段another_first應該與字段first_column有相同的資料類型。但是,字段another_first不能是應該標識字段。 Another_first欄位用來保存欄位first_column的值。

刪除記錄

要從表格中刪除一個或多個記錄,需要使用SQL DELETE語句。你可以提供DELETE 語句WHERE 子句。 WHERE子句用來選擇要刪除的記錄。例如,下面的這個DELETE語句只刪除欄位first_column的值等於’Delete Me’的紀錄:

DELETE mytable WHERE first_column=’Deltet Me’

DELETE 語句的完整句法如下:

DELETE [FROM] {table_name|view_name} [WHERE clause]

在SQL SELECT 語句中可以使用的任何條件都可以在DELECT 語句的WHERE子句 中使用。例如,下面的這個DELETE語句只刪除那些first_column欄位的值為’goodbye’或second_column欄位的值為’so 長’的記錄:

DELETE mytable WHERE first_column=’goodby’ OR second_column=’so 長’

如果你不給DELETE 語句提供WHERE 子句,表中的所有記錄將被刪除。你不應該有這種想法。如果你想刪除應該表中的所有記錄,應使用第十章所講的TRUNCATE TABLE語句。

注意:

為什麼要用TRUNCATE TABLE 語句來取代DELETE語句?當你使用TRUNCATE TABLE語句時,記錄的刪除是不作記錄的。也就是說,這意味著TRUNCATE TABLE 比DELETE快得多 

 以上就是SQL資料操作基礎(中級)7的內容,而更多相關文章請關注PHP中文網(www.php.cn)!


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询Aug 26, 2022 pm 02:07 PM

本篇文章给大家带来了关于SQL的相关知识,其中主要介绍了SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询的方法,文中通过示例代码介绍的非常详细,下面一起来看一下,希望对大家有帮助。

SQL Server解析/操作Json格式字段数据的方法实例SQL Server解析/操作Json格式字段数据的方法实例Aug 29, 2022 pm 12:00 PM

本篇文章给大家带来了关于SQL server的相关知识,其中主要介绍了SQL SERVER没有自带的解析json函数,需要自建一个函数(表值函数),下面介绍关于SQL Server解析/操作Json格式字段数据的相关资料,希望对大家有帮助。

聊聊优化sql中order By语句的方法聊聊优化sql中order By语句的方法Sep 27, 2022 pm 01:45 PM

如何优化sql中的orderBy语句?下面本篇文章给大家介绍一下优化sql中orderBy语句的方法,具有很好的参考价值,希望对大家有所帮助。

一文搞懂SQL中的开窗函数一文搞懂SQL中的开窗函数Sep 02, 2022 pm 04:55 PM

本篇文章给大家带来了关于SQL server的相关知识,开窗函数也叫分析函数有两类,一类是聚合开窗函数,一类是排序开窗函数,下面这篇文章主要给大家介绍了关于SQL中开窗函数的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下。

Monaco Editor如何实现SQL和Java代码提示?Monaco Editor如何实现SQL和Java代码提示?May 07, 2023 pm 10:13 PM

monacoeditor创建//创建和设置值if(!this.monacoEditor){this.monacoEditor=monaco.editor.create(this._node,{value:value||code,language:language,...options});this.monacoEditor.onDidChangeModelContent(e=>{constvalue=this.monacoEditor.getValue();//使value和其值保持一致i

Monaco Editor怎么实现SQL和Java代码提示Monaco Editor怎么实现SQL和Java代码提示May 11, 2023 pm 05:31 PM

monacoeditor创建//创建和设置值if(!this.monacoEditor){this.monacoEditor=monaco.editor.create(this._node,{value:value||code,language:language,...options});this.monacoEditor.onDidChangeModelContent(e=>{constvalue=this.monacoEditor.getValue();//使value和其值保持一致i

如何使用exp进行SQL报错注入如何使用exp进行SQL报错注入May 12, 2023 am 10:16 AM

0x01前言概述小编又在MySQL中发现了一个Double型数据溢出。当我们拿到MySQL里的函数时,小编比较感兴趣的是其中的数学函数,它们也应该包含一些数据类型来保存数值。所以小编就跑去测试看哪些函数会出现溢出错误。然后小编发现,当传递一个大于709的值时,函数exp()就会引起一个溢出错误。mysql>selectexp(709);+-----------------------+|exp(709)|+-----------------------+|8.218407461554972

springboot配置mybatis的sql执行超时时间怎么解决springboot配置mybatis的sql执行超时时间怎么解决May 15, 2023 pm 06:10 PM

当某些sql因为不知名原因堵塞时,为了不影响后台服务运行,想要给sql增加执行时间限制,超时后就抛异常,保证后台线程不会因为sql堵塞而堵塞。一、yml全局配置单数据源可以,多数据源时会失效二、java配置类配置成功抛出超时异常。importcom.alibaba.druid.pool.DruidDataSource;importcom.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;importorg.apache.

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

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