service MySQLd start:啟動數(shù)據(jù)庫服務(wù)
成都創(chuàng)新互聯(lián)公司主要從事網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)商都,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792
MYSQL * mysql_init(MYSQL *mysql);初始化mysql句柄.如果mysql為NULL, 則分配一個.
連接數(shù)據(jù)庫:
關(guān)閉連接:void STDCALL mysql_close(MYSQL *sock);
執(zhí)行sql語句:int mysql_query(MYSQL *connection ,const char *query);如果成功返回0,query為sql語句。
獲取結(jié)果:MYSQL_RES * STDCALL mysql_store_result(MYSQL *mysql);執(zhí)行此函數(shù)前必須調(diào)用sql:select* from stu
返回結(jié)果集中行的數(shù)目:int mysql_num_rows ( MYSQL_RES * result )
返回結(jié)果集中l(wèi)列的數(shù)目:int mysql_num_fields(MYSQL_RES * result )
注:要取得被 INSERT,UPDATE 或者 DELETE 查詢所影響到的行的數(shù)目,用 mysql_affected_rows()。
MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *result);
對于結(jié)果集,返回所有MYSQL_FIELD結(jié)構(gòu)的數(shù)組。每個結(jié)構(gòu)提供了結(jié)果集中1列的字段定義。關(guān)于結(jié)果列所有列的MYSQL_FIELD結(jié)構(gòu)的數(shù)組。
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
檢索一個結(jié)果集合的下一行。當(dāng)在mysql_store_result()之后使用時,如果沒有更多的行可檢索時,mysql_fetch_row()返回NULL。
注:在行中值的數(shù)量由mysql_num_fields(result)給出。如果row保存了從一個對用mysql_fetch_row()調(diào)用返回的值,指向該值的指針作為row[0]到row[mysql_num_fields(result)-1]來存取。在行中的NULL值由NULL指針指出。
在行中字段值的長度可以通過調(diào)用mysql_fetch_lengths()獲得??兆侄魏桶琋ULL的字段長度都是 0;你可以通過檢查該值的指針區(qū)分他們。如果指針是NULL,字段是NULL;否則字段是空的。
索引:是對數(shù)據(jù)庫表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu),使用索引可快速訪問數(shù)據(jù)庫表中的特定信息。
如果想按特定職員的姓來查找他,則與在表中搜索所有的行相比,索引有助于更快地獲取信息。
例如這樣一個查詢:select * from table1 where id=10000。如果沒有索引,必須遍歷整個表,直到ID等于10000的這一行被找到為止;有了索引之后(必須是在ID這一列上建立的索引),即可在索引中查找。由于索引是經(jīng)過某種算法優(yōu)化過的,因而查找次數(shù)要少的多??梢?,索引是用來定位的。
數(shù)據(jù)庫索引好比是一本書前面的目錄,能加快數(shù)據(jù)庫的查詢速度。
索引分為聚簇索引和非聚簇索引兩種。
聚簇索引:是按照數(shù)據(jù)存放的物理位置為順序的,而非聚簇索引就不一樣了;聚簇索引能提高多行檢索的速度,而非聚簇索引對于單行的檢索很快。
根據(jù)數(shù)據(jù)庫的功能,可以在數(shù)據(jù)庫設(shè)計(jì)器中創(chuàng)建三種索引:唯一索引、主鍵索引和聚簇索引。
注:盡管唯一索引有助于定位信息,但為獲得最佳性能結(jié)果,建議改用主鍵或唯一約束。
唯一索引 唯一索引是不允許其中任何兩行具有相同索引值的索引。
當(dāng)現(xiàn)有數(shù)據(jù)中存在重復(fù)的鍵值時,大多數(shù)數(shù)據(jù)庫不允許將新創(chuàng)建的唯一索引與表一起保存。數(shù)據(jù)庫還可能防止添加將在表中創(chuàng)建重復(fù)鍵值的新數(shù)據(jù)。例如,如果在employee表中職員的姓(lname)上創(chuàng)建了唯一索引,則任何兩個員工都不能同姓。
主鍵索引
注:主鍵是表中的一個或多個字段,它的值用于惟一地標(biāo)識表中的某一條記錄,使用索引可快速訪問數(shù)據(jù)庫表中的特定信息。
數(shù)據(jù)庫表經(jīng)常有一列或多列組合,其值唯一標(biāo)識表中的每一行。該列稱為表的主鍵。
主鍵列不允許空值。 唯一索引允許空值。
創(chuàng)建 PRIMARY KEY 或 UNIQUE 約束會自動為指定的列創(chuàng)建唯一索引。創(chuàng)建 UNIQUE 約束和創(chuàng)建獨(dú)立于約束的唯一索引沒有明顯的區(qū)別。數(shù)據(jù)驗(yàn)證的方式是相同的,而且查詢優(yōu)化器不會區(qū)分唯一索引是由約束創(chuàng)建的還是手動創(chuàng)建的。但是,如果您的目的是要實(shí)現(xiàn)數(shù)據(jù)完整性,則應(yīng)為列創(chuàng)建 UNIQUE 或 PRIMARY KEY 約束。這樣做才能使索引的目標(biāo)明確。
在數(shù)據(jù)庫關(guān)系圖中為表定義主鍵將自動創(chuàng)建主鍵索引,主鍵索引是唯一索引的特定類型。該索引要求主鍵中的每個值都唯一。當(dāng)在查詢中使用主鍵索引時,它還允許對數(shù)據(jù)的快速訪問。
聚簇索引
在聚集索引中,表中行的物理順序與鍵值的邏輯(索引)順序相同。一個表只能包含一個聚集索引。
如果某索引不是聚集索引,則表中行的物理順序與鍵值的邏輯順序不匹配。與非聚集索引相比,聚集索引通常提供更快的數(shù)據(jù)訪問速度。
索引列
可以基于數(shù)據(jù)庫表中的單列或多列創(chuàng)建索引。多列索引可以區(qū)分其中一列可能有相同值的行。
如果經(jīng)常同時搜索兩列或多列或按兩列或多列排序時,索引也很有幫助。例如,如果經(jīng)常在同一查詢中為姓和名兩列設(shè)置判據(jù),那么在這兩列上創(chuàng)建多列索引將很有意義。
確定索引的有效性:
檢查查詢的WHERE和JOIN子句。在任一子句中包括的每一列都是索引可以選擇的對象。
建立索引時需考慮:
注:對新索引進(jìn)行試驗(yàn)以檢查它對運(yùn)行查詢性能的影響。
考慮已在表上創(chuàng)建的索引數(shù)量。最好避免在單個表上有很多索引。
檢查已在表上創(chuàng)建的索引的定義。最好避免包含共享列的重疊索引。
檢查某列中唯一數(shù)據(jù)值的數(shù)量,并將該數(shù)量與表中的行數(shù)進(jìn)行比較。比較的結(jié)果就是該列的可選擇性,這有助于確定該列是否適合建立索引,如果適合,確定索引的類型。
觸發(fā)器(trigger)是SQL server 提供給程序員和數(shù)據(jù)分析員來保證數(shù)據(jù)完整性的一種方法,它是與表事件相關(guān)的特殊的存儲過程,它的執(zhí)行不是由程序調(diào)用,也不是手工啟動,而是由事件來觸發(fā),比如當(dāng)對一個表進(jìn)行操作( insert,delete, update)時就會激活它執(zhí)行。觸發(fā)器經(jīng)常用于加強(qiáng)數(shù)據(jù)的完整性約束和業(yè)務(wù)規(guī)則等。
(1)觸發(fā)器可以查詢其他表,而且可以包含復(fù)雜的SQL語句。它們主要用于強(qiáng)制服從復(fù)雜的業(yè)務(wù)規(guī)則或要求。例如:您可以根據(jù)客戶當(dāng)前的帳戶狀態(tài),控制是否允許插入新訂單。
(2)觸發(fā)器也可用于強(qiáng)制引用完整性,以便在多個表中添加、更新或刪除行時,保留在這些表之間所定義的關(guān)系。然而,強(qiáng)制引用完整性的最好方法是在相關(guān)表中定義主鍵和外鍵約束。如果使用數(shù)據(jù)庫關(guān)系圖,則可以在表之間創(chuàng)建關(guān)系以自動創(chuàng)建外鍵約束。
觸發(fā)器與存儲過程的唯一區(qū)別是觸發(fā)器不能執(zhí)行EXECUTE語句調(diào)用,而是在用戶執(zhí)行Transact-SQL語句時自動觸發(fā)執(zhí)行。
觸發(fā)器有如下作用:
可在寫入數(shù)據(jù)表前,強(qiáng)制檢驗(yàn)或轉(zhuǎn)換數(shù)據(jù)。
觸發(fā)器發(fā)生錯誤時,異動的結(jié)果會被撤銷。
部份數(shù)據(jù)庫管理系統(tǒng)可以針對數(shù)據(jù)定義語言(DDL)使用觸發(fā)器,稱為DDL觸發(fā)器。
可依照特定的情況,替換異動的指令 (INSTEAD OF)。
SQL Server 包括三種常規(guī)類型的觸發(fā)器:DML 觸發(fā)器、DDL 觸發(fā)器和登錄觸發(fā)器。
當(dāng)數(shù)據(jù)庫中表中的數(shù)據(jù)發(fā)生變化時,包括insert,update,delete任意操作,如果我們對該表寫了對應(yīng)的DML觸發(fā)器,那么該觸發(fā)器自動執(zhí)行。DML觸發(fā)器的主要作用在于強(qiáng)制執(zhí)行業(yè) 務(wù)規(guī)則,以及擴(kuò)展Sql Server約束,默認(rèn)值等。因?yàn)槲覀冎兰s束只能約束同一個表中的數(shù)據(jù),而觸發(fā)器中則可以執(zhí)行任意Sql命令。
它是Sql Server2005新增的觸發(fā)器,主要用于審核與規(guī)范對數(shù)據(jù)庫中表,觸發(fā)器,視圖等結(jié)構(gòu)上的操作。比如在修改表,修改列,新增表,新增列等。它在數(shù)據(jù)庫結(jié)構(gòu)發(fā)生變化時執(zhí)行,我們主要用它來記錄數(shù)據(jù)庫的修改過程,以及限制程序員對數(shù)據(jù)庫的修改,比如不允許刪除某些指定表等。
登錄觸發(fā)器將為響應(yīng) LOGIN 事件而激發(fā)存儲過程。與 SQL Server 實(shí)例建立用戶會話時將引發(fā)此事件。登錄觸發(fā)器將在登錄的身份驗(yàn)證階段完成之后且用戶會話實(shí)際建立之前激發(fā)。因此,來自觸發(fā)器內(nèi)部且通常將到達(dá)用戶的所有消息(例如錯誤消息和來自 PRINT 語句的消息)會傳送到 SQL Server 錯誤日志。如果身份驗(yàn)證失敗,將不激發(fā)登錄觸發(fā)器。
注:約束,是指對你的表,或表中的列等等,進(jìn)行某些條件的限制.重點(diǎn)是“限制”.
觸發(fā)器,是指在你進(jìn)行一些操作時,比如DELETE UPDATE等操作時,引起的一些另外的操作(是做了摸個動作之后,引起的反應(yīng)).
事務(wù)(Transaction)是訪問并可能更新數(shù)據(jù)庫中各種數(shù)據(jù)項(xiàng)的一個程序執(zhí)行單元(unit)。事務(wù)通常由高級數(shù)據(jù)庫操縱語言或編程語言(如SQL,C++或Java)書寫的用戶程序的執(zhí)行所引起,并用形如begin transaction和end transaction語句(或函數(shù)調(diào)用)來界定。事務(wù)由事務(wù)開始(begin transaction)和事務(wù)結(jié)束(end transaction)之間執(zhí)行的全體操作組成。
例如:在關(guān)系數(shù)據(jù)庫中,一個事務(wù)可以是一條SQL語句,一組SQL語句或整個程序。
事務(wù)是恢復(fù)和并發(fā)控制的基本單位。
事務(wù)應(yīng)該具有4個屬性:原子性、一致性、隔離性、持久性。這四個屬性通常稱為ACID特性。
原子性(atomicity):一個事務(wù)是一個不可分割的工作單位,事務(wù)中包括的諸操作要么都做,要么都不做。
一致性(consistency):事務(wù)必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。一致性與原子性是密切相關(guān)的。
隔離性(isolation):一個事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對并發(fā)的其他事務(wù)是隔離的,并發(fā)執(zhí)行的各個事務(wù)之間不能互相干擾。
持久性(durability):持久性也稱永久性(permanence),指一個事務(wù)一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應(yīng)該是永久性的。接下來的其他操作或故障不應(yīng)該對其有任何影響。
事務(wù)類型:
(1)手動事務(wù)
手動事務(wù)允許顯式處理若干過程,這些過程包括:開始事務(wù)、控制事務(wù)邊界內(nèi)的每個連接和資源登記、確定事務(wù)結(jié)果(提交或中止)以及結(jié)束事務(wù)。盡管此模型提供了對事務(wù)的標(biāo)準(zhǔn)控制,但它缺少一些內(nèi)置于自動事務(wù)模型的簡化操作。例如,在手動事務(wù)中數(shù)據(jù)存儲區(qū)之間沒有自動登記和協(xié)調(diào)。此外,與自動事務(wù)不同,手動事務(wù)中事務(wù)不在對象間流動。
如果選擇手動控制分布式事務(wù),則必須管理恢復(fù)、并發(fā)、安全性和完整性。也就是說,必須應(yīng)用維護(hù)與事務(wù)處理關(guān)聯(lián)的 ACID 屬性所需的所有編程方法。
(2)自動事務(wù)
.NET 頁、XML Web services方法或 .NET Framework 類一旦被標(biāo)記為參與事務(wù),它們將自動在事務(wù)范圍內(nèi)執(zhí)行。您可以通過在頁、XML Web services 方法或類中設(shè)置一個事務(wù)屬性值來控制對象的事務(wù)行為。特性值反過來確定實(shí)例化對象的事務(wù)性行為。因此,根據(jù)聲明特性值的不同,對象將自動參與現(xiàn)有事務(wù)或正在進(jìn)行的事務(wù),成為新事務(wù)的根或者根本不參與事務(wù)。聲明事務(wù)屬性的語法在 .NET Framework 類、.NET 頁和 XML Web services 方法中稍有不同。
注:一般來說,對于安全性要求比較高的業(yè)務(wù),建議使用事務(wù)。
存儲引擎
我們說數(shù)據(jù)庫是組織、存儲和管理數(shù)據(jù)的倉庫。那么,數(shù)據(jù)庫存儲數(shù)據(jù)的方式,就是存儲引擎。
在mysql中,存儲引擎是以插件的形式加載的。Mysql的存儲引擎種類繁多,對于我們來說,要熟悉兩種存儲引擎去,MyISAM和inonoDB。Myisam不支持事務(wù)?!nnodb支持事務(wù)。
拓展:例如,如果你在研究大量的臨時數(shù)據(jù),你也許需要使用內(nèi)存存儲引擎。內(nèi)存存儲引擎能夠在內(nèi)存中存儲所有的表格數(shù)據(jù)。又或者,你也許需要一個支持事務(wù)處理的數(shù)據(jù)庫(以確保事務(wù)處理不成功時數(shù)據(jù)的回退能力)。
這些不同的技術(shù)以及配套的相關(guān)功能在MySQL中被稱作存儲引擎(也稱作表類型)。MySQL默認(rèn)配置了許多不同的存儲引擎,可以預(yù)先設(shè)置或者在MySQL服務(wù)器中啟用。你可以選擇適用于服務(wù)器、數(shù)據(jù)庫和表格的存儲引擎,以便在選擇如何存儲你的信息、如何檢索這些信息以及你需要你的數(shù)據(jù)結(jié)合什么性能和功能的時候?yàn)槟闾峁┳畲蟮撵`活性。選擇如何存儲和檢索你的數(shù)據(jù)的這種靈活性是MySQL為什么如此受歡迎的主要原因。
各種存儲引擎特點(diǎn):
分享題目:數(shù)據(jù)庫重點(diǎn)概念
標(biāo)題鏈接:http://jinyejixie.com/article20/pgcpco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、響應(yīng)式網(wǎng)站、商城網(wǎng)站、定制網(wǎng)站、電子商務(wù)、網(wǎng)站設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)