SQL數(shù)據(jù)庫(kù)語(yǔ)句大全大全完全版_第1頁(yè)
SQL數(shù)據(jù)庫(kù)語(yǔ)句大全大全完全版_第2頁(yè)
SQL數(shù)據(jù)庫(kù)語(yǔ)句大全大全完全版_第3頁(yè)
SQL數(shù)據(jù)庫(kù)語(yǔ)句大全大全完全版_第4頁(yè)
SQL數(shù)據(jù)庫(kù)語(yǔ)句大全大全完全版_第5頁(yè)
已閱讀5頁(yè),還剩56頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

SQL語(yǔ)句大全

一語(yǔ)句功能

■?數(shù)據(jù)操作

SELECT-從數(shù)據(jù)庫(kù)表中檢索數(shù)據(jù)行和列

INSERT--向數(shù)據(jù)庫(kù)表添加新數(shù)據(jù)行

DELETE--從數(shù)據(jù)庫(kù)表中刪除數(shù)據(jù)行

UPDATE--更新數(shù)據(jù)庫(kù)表中的數(shù)據(jù)

-數(shù)據(jù)定義

CREATETABLE--創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)表

DROPTABLE―從數(shù)據(jù)庫(kù)中刪除表

ALTERTABLE一修改數(shù)據(jù)庫(kù)表結(jié)構(gòu)

CREATEVIEW一創(chuàng)建一個(gè)視圖

DROPVIEW―從數(shù)據(jù)庫(kù)中刪除視圖

CREATEINDEX一為數(shù)據(jù)庫(kù)表創(chuàng)建一個(gè)索引

DROPINDEX一從數(shù)據(jù)庫(kù)中刪除索引

CREATEPROCEDURE--創(chuàng)建一個(gè)存儲(chǔ)過(guò)程

DROPPROCEDURE一從數(shù)據(jù)庫(kù)中刪除存儲(chǔ)過(guò)程

CREATETRIGGER--創(chuàng)建一個(gè)觸發(fā)器

DROPTRIGGER一從數(shù)據(jù)庫(kù)中刪除觸發(fā)器

CREATESCHEMA一向數(shù)據(jù)庫(kù)添加一個(gè)新模式

DROPSCHEMA--從數(shù)據(jù)庫(kù)中刪除一個(gè)模式

CREATEDOMAIN一創(chuàng)建一個(gè)數(shù)據(jù)值域

ALTERDOMAIN--變更域定義

DROPDOMAIN―從數(shù)據(jù)庫(kù)中刪除一個(gè)域

一數(shù)據(jù)限制

GRANT一授予用戶訪問(wèn)權(quán)限

DENY--拒絕用戶訪問(wèn)

REVOKE--解除用戶訪問(wèn)權(quán)限

--事務(wù)限制

COMMIT--結(jié)束當(dāng)前事務(wù)

ROLLBACK一中止當(dāng)前事務(wù)

SETTRANSACTION一定義當(dāng)前事務(wù)數(shù)據(jù)訪問(wèn)特征

--程序化SQL

DECLARE一為查詢?cè)O(shè)定游標(biāo)

EXPLAN一為查詢描述數(shù)據(jù)訪問(wèn)支配

OPEN--檢索查詢結(jié)果打開(kāi)一個(gè)游標(biāo)

FETCH-檢索一行查詢結(jié)果

CLOSE一關(guān)閉游標(biāo)

PREPARE--為動(dòng)態(tài)執(zhí)行準(zhǔn)備SQL語(yǔ)句

EXECUTE--動(dòng)態(tài)地執(zhí)行SQL語(yǔ)句

DESCRIBE一描述準(zhǔn)備好的查詢

—局部變量

declare@idchar(10)

-set@id=110010001,

select@id='10010001,

--全局變量

?一必需以@@開(kāi)頭

-IFELSE

declare@xint@yint@zint

select@x=1@y=2@z=3

if@x>@y

print'x>y'--打印字符串'x>y'

elseif@y>@z

print'y>z'

elseprintz>y'

begin

select@c=100*@x+@y

print@c一打印變量c的值

select@y=@y+1

end

select@x=@x+1

select@y=1

end

-WAITFOR

--例等待1小時(shí)2分零3秒后才執(zhí)行SELECT語(yǔ)句

waitfordelay)01:02:03)

select*fromemployee

一例等到晚上11點(diǎn)零8分后才執(zhí)行SELECT語(yǔ)句

waitfortime)23:08:00'

select*fromemployee

***SELECT***

select*例名)fromtable_name(表名)wherecolumn_nameoperator

value

ex:(宿主)

select*fromstock_informationwherestockid=str(nid)

stockname='str_name'

stocknamelike'%findthis%'

stocknamelike'[a-zA-Z]%'(。指定值的范圍)

stocknamelike'[AF-M]%'(八解除指定范圍)

只能在運(yùn)用like關(guān)鍵字的where子句中運(yùn)用通配符)

orstockpath='stock_path'

orstocknumber<1000

andstockindex=24

notstock***='man'

stocknumberbetween20and100

stocknumberin(10,20,30)

orderbystockiddesc(asc)排序,desc-降序,asc-升序

orderby1,2by列號(hào)

stockname=(selectstocknamefromstock_informationwhere

stockid=4)

子查詢

除非能確保內(nèi)層select只返回一個(gè)行的值,

否則應(yīng)在外層where子句中用一個(gè)in限定符

selectdistinctcolumn_nameformtable_namedistinct指

定檢索獨(dú)有的列值,不重復(fù)

selectstocknumber/'stocknumber+10'=stocknumber+10

fromtable_name

selectstockname,"stocknumber"=count(*)fromtable_name

groupbystockname

groupby將表按行分組,指定列中有相同的值

havingcount(*)=2having選定指定的組

select

fromtable1,table2

wheretable1.id*=table2.id左外部連接,table1中有的而

table2中沒(méi)有得以null表示

table1.id=*table2.id右外部連接

selectstocknamefromtable1

union[all]union合并查詢結(jié)果集,all-保留重復(fù)行

selectstocknamefromtable2

insertintotable_name(Stock_name,Stock_number)value

(,,xxx"/'xxxxn)

value(selectStockname,Stocknumberfrom

Stock_tab1e2)--value為select語(yǔ)句

***update***

updatetable_namesetStockname="xxx"[whereStockid=3]

Stockname=default

Stockname=null

Stocknumber=Stockname+4

***delete***

deletefromtablenamewhereStockid=3

truncatetablename刪除表中全部行,仍保持表的完整性

droptabletable_name完全刪除表

***altertable***--修改數(shù)據(jù)庫(kù)表結(jié)構(gòu)

altertabledatabase.owner.table_nameaddcolumn_namechar(2)

null….

sp_helptable_name——顯示表已有特征

createtabletable_name(namechar(20),agesmallint,Iname

varchar(30))

insertintotable_nameselect實(shí)現(xiàn)刪除列的方法(創(chuàng)建新

表)

altertabletable_namedropconstraintStockname_default——?jiǎng)h

除Stockname的default約束

***function(/*常用函數(shù)*/)***

——統(tǒng)計(jì)函數(shù)——

AVG一求平均值

COUNT--統(tǒng)計(jì)數(shù)目

MAX一求最大值

MIN一求最小值

SUM一求和

-AVG

usepangu

selectavg(e_wage)asdept_avgWage

fromemployee

groupbydept_id

-MAX

--求工資最高的員工姓名

usepangu

selecte_name

fromemployee

wheree_wage=

(selectmax(e_wage)

fromemployee)

-STDEVQ

--STDEV()函數(shù)返回表達(dá)式中全部數(shù)據(jù)的標(biāo)準(zhǔn)差

-STDEVPO

—STDEVPO函數(shù)返回總體標(biāo)準(zhǔn)差

-VAR()

一VAR()函數(shù)返回表達(dá)式中全部值的統(tǒng)計(jì)變異數(shù)

-VARPO

VARP()函數(shù)返回總體變異數(shù)

算術(shù)函數(shù)

/***三角函數(shù)***/

SIN(float_expression)--返回以弧度表示的角的正弦

COS(float_expression)--返回以弧度表示的角的余弦

TAN(float_expression)一返回以弧度表示的角的正切

COT(float_expression)--返回以弧度表示的角的余切

/***反三角函數(shù)***/

ASIN(float_expression)一返回正弦是FLOAT值的以弧度表示的角

ACOS(float_expression)--返回余弦是FLOAT值的以弧度表示的角

ATAN(float_expression)--返回正切是FLOAT值的以弧度表示的角

ATAN2(float_expressionl,float_expression2)

―返回正切是float_expressionl/float_expres-sion2的以弧度表示的

DEGREES(numeric_expression)

―把弧度轉(zhuǎn)換為角度返回與表達(dá)式相同的數(shù)據(jù)類型可為

-INTEGER/MONEY/REAL/FLOAT類型

RAD[ANS(numeric_expression)一把角度轉(zhuǎn)換為弧度返回與表達(dá)式相

同的數(shù)據(jù)類型可為

-INTEGER/MONEY/REAL/FLOAT類型

EXP(float_expression)-返回表達(dá)式的指數(shù)值

LOG(float_expression)一返回表達(dá)式的自然對(duì)數(shù)值

LOG10(float_expression)—返回表達(dá)式的以1。為底的對(duì)數(shù)值

SQRT(float_expression)--返回表達(dá)式的平方根

/***取近似值函數(shù)*叱/

CEILING(numeric_expression)--返回>=表達(dá)式的最小整數(shù)返回的數(shù)據(jù)

類型與表達(dá)式相同可為

-INTEGER/MONEY/REAL/FLOAT類型

FLOOR(numeric_expression)--返回<=表達(dá)式的最小整數(shù)返回的數(shù)據(jù)

類型與表達(dá)式相同可為

-INTEGER/MONEY/REAL/FLOAT類型

ROUND(numeric_expression)--返回以integejexpression為精度

的四舍五入值返回的數(shù)據(jù)

一類型與表達(dá)式相同可為INTEGER/MONEY/REAL/FLOAT類型

ABS(numeric_expresskm)—返回表達(dá)式的確定值返回的數(shù)據(jù)類型與表

達(dá)式相同可為

-INTEGER/MONEY/REAL/FLOAT類型

SIGN(numeric_expression)一測(cè)試參數(shù)的正負(fù)號(hào)返回。零值1正數(shù)或

-1負(fù)數(shù)返回的數(shù)據(jù)類型

一與表達(dá)式相同可為INTEGER/MONEY/REAL/FLOAT類型

PI()一返回值為兀即3.14936

RAND([integer_expression|)―用任選的[integer_expression]做種子

值得出。-1間的隨機(jī)浮點(diǎn)數(shù)

字符串函數(shù)

ASCIIO一函數(shù)返回字符表達(dá)式最左端字符的ASCII碼值

CHARQ--函數(shù)用于將ASCII碼轉(zhuǎn)換為字符

一假如沒(méi)有輸入。~255之間的ASCII碼值CHAR函數(shù)會(huì)返回一個(gè)

NULL值

LOWERQ一函數(shù)把字符串全部轉(zhuǎn)換為小寫(xiě)

UPPER。一函數(shù)把字符串全部轉(zhuǎn)換為大寫(xiě)

STRQ-函數(shù)把數(shù)值型數(shù)據(jù)轉(zhuǎn)換為字符型數(shù)據(jù)

LTRIM。一函數(shù)把字符串頭部的空格去掉

RTRIM。一函數(shù)把字符串尾部的空格去掉

LEFTQ,RIGHTO,SUBSTRINGO--函數(shù)返回部分字符串

CHARINDEX(),PATINDEX()―函數(shù)返回字符串中某個(gè)指定的子串出現(xiàn)

的起先位置

SOUNDEX0--函數(shù)返回一個(gè)四位字符碼

-SOUNDEX函數(shù)可用來(lái)查找聲音相像的字符串但SOUNDEX函數(shù)對(duì)數(shù)

字和漢字均只返回0值

DIFFERENCE。--函數(shù)返回由SOUNDEX函數(shù)返回的兩個(gè)字符表達(dá)式

的值的差異

-0兩個(gè)SOUNDEX函數(shù)返回值的第一個(gè)字符不同

--1兩個(gè)SOUNDEX函數(shù)返回值的第一個(gè)字符相同

-2兩個(gè)SOUNDEX函數(shù)返回值的第一二個(gè)字符相同

--3兩個(gè)SOUNDEX函數(shù)返回值的第一二三個(gè)字符相同

-4兩個(gè)SOUNDEX函數(shù)返回值完全相同

QUOTENAMEQ一函數(shù)返回被特定字符括起來(lái)的字符串

"selectquotename('abc,,'{')quotenamel'abc')

運(yùn)行結(jié)果如下

{abc}[abc]*/

REPLICATEf)--函數(shù)返回一個(gè)重復(fù)charactejexpression指定次數(shù)的

字符串

/*selectreplicate('abc',3)replicate('abc',-2)

運(yùn)行結(jié)果如下

abcabcabcNULL*/

REVERSE。一函數(shù)將指定的字符串的字符排歹ij依次顛倒

REPLACE。一函數(shù)返回被替換了指定子串的字符串

/*selectreplace('abcl23g','123','def)

運(yùn)行結(jié)果如下

abcdefg*/

SPACEO--函數(shù)返回一個(gè)有指定長(zhǎng)度的空白字符串

STUFF。--函數(shù)用另一子串替換字符串指定位置長(zhǎng)度的子串

數(shù)據(jù)類型轉(zhuǎn)換函數(shù)一一

CASTO函數(shù)語(yǔ)法如下

CAST()(<expression>AS<data_type>[length])

CONVERTO函數(shù)語(yǔ)法如下

CONVERT()(<data_type>[length],<expression>[,style])

selectcast(100+99aschar)convert(varchar(12),getdatef))

運(yùn)行結(jié)果如下

199Jan152000

—日期函數(shù)—

DAY()—函數(shù)返回date_expression中的日期值

MONTHQ—函數(shù)返回date_expression中的月份值

YEAR。一函數(shù)返回date_expression中的年份值

DATEADD(<datepart>,<number>,<date>)

--函數(shù)返回指定日期date加上指定的額外日期間隔number產(chǎn)生的新

日期

DATEDIFF(<datepart>,<number>,<date>)

一函數(shù)返回兩個(gè)指定日期在datepart方面的不同之處

DATENAME(<datepart>,<date>)一函數(shù)以字符串的形式返回日期的

指定部分

DATEPART(<datepart>,<date>)一函數(shù)以整數(shù)值的形式返回日期的指

定部分

GETDATE0一函數(shù)以DATETIME的缺省格式返回系統(tǒng)當(dāng)前的日期和時(shí)

一_系統(tǒng)函數(shù)__

APP_NAME()--函數(shù)返回當(dāng)前執(zhí)行的應(yīng)用程序的名稱

COALESCE。--函數(shù)返回眾多表達(dá)式中第一個(gè)非NULL表達(dá)式的值

COL_LENGTH(<'table_name'>,<'column_name'>)一函數(shù)返回表中指

定字段的長(zhǎng)度值

COL_NAME(<table_id>,<column_id>)--函數(shù)返回表中指定字段的名

稱即列名

DATALENGTHO--函數(shù)返回?cái)?shù)據(jù)表達(dá)式的數(shù)據(jù)的實(shí)際長(zhǎng)度

DB_ID(['database_name'])--函數(shù)返回?cái)?shù)據(jù)庫(kù)的編號(hào)

DB_NAME(database_id)--函數(shù)返回?cái)?shù)據(jù)庫(kù)的名稱

HOST」D()--函數(shù)返回服務(wù)器端計(jì)算機(jī)的名稱

HOST_NAME()一函數(shù)返回服務(wù)器端計(jì)算機(jī)的名稱

IDENTITY(<data_type>[,seedincrement])[AScolumn_name])

-IDENTITY!)函數(shù)只在SELECTINTO語(yǔ)句中運(yùn)用用于插入一個(gè)

identitycolumn列到新表中

/*selectidentity(int,1,1)ascolumn_name

intonewtable

fromoldtable*/

ISDATEO--函數(shù)推斷所給定的表達(dá)式是否為合理日期

ISNULL(<check_expression>,<replacement_value>)--函數(shù)將表達(dá)

式中的NULL值用指定值替換

ISNUMERICQ--函數(shù)推斷所給定的表達(dá)式是否為合理的數(shù)值

NEWID。一函數(shù)返回一個(gè)UNIQUEIDENTIFIER類型的數(shù)值

NULLIF(<expression1>,<expression2>)

—NULLIF函數(shù)在expression1與expression2相等時(shí)返回NULL值

若不相等時(shí)則返回expression1的值

sql中的保留字

actionaddaggregateall

alterafterandas

ascavgavg_row_lengthauto_increment

betweenbigintbitbinary

blobboolbothby

cascadecasecharcharacter

changecheckchecksumcolumn

columnscommentconstraintcreate

crosscurrent_datecurrent_timecurrent_timestamp

datadatabasedatabasesdate

datetimedayday_hourday_minute

day_seconddayofmonthdayofweekdayofyear

decdecimaldefaultdelayed

delay_key_writedeletedescdescribe

distinctdistinctrowdoubledrop

endelseescapeescaped

enclosedenumexplainexists

fieldsfloat

float4floatsflushforeign

fromforfullfunction

globalgrantgrantsgroup

havingheaphigh_priorityhour

hour_minutehour_secondhostsidentified

ignoreinindexinfile

innerinsertinsert_idint

integerintervalintiint2

int3int4int8into

ifisisamjoin

keykeyskilllast_insert_id

leadingleftlengthlike

lineslimitloadlocal

locklogslonglongblob

longtextlow_prioritymaxmax_rows

matchmediumblobmediumtextmediumint

middleintmin_rowsminuteminute_second

modifymonthmonthnamemyisam

naturalnumericnonot

nullonoptimizeoption

optionallyororderouter

outpartialpassword

precisionprimaryprocedureprocess

processlistprivilegesreadreal

referencesreloadregexprename

replacerestrictreturnsrevoke

rlikerowrowssecond

selectsetshowshutdown

smallintsonamesql_big_tablessql_big_selects

sql_low_priority_updatessql_log_offsql_log_update

sql_select_limit

sql_small_resultsql_big_resultsql_warningsstraight_join

startingstatusstringtable

tablestemporaryterminatedtext

thentimetimestamptinyblob

tinytexttinyinttrailingto

typeuseusingunique

unlockunsignedupdateusage

valuesvarcharvariablesvarying

varbinarywithwritewhen

whereyearyear_monthzerofill

查看全文

常用SQL吩咐和ASP編程

在進(jìn)行數(shù)據(jù)庫(kù)操作時(shí),無(wú)非就是添加、刪除、修改,這得設(shè)計(jì)到一些常用

的SQL語(yǔ)句,如下:

SQL常用吩咐運(yùn)用方法:

(1)數(shù)據(jù)記錄篩選:

sql="select*from數(shù)據(jù)表where字段名=字段值orderby字段名

[desc]"

sql="select*from數(shù)據(jù)表where字段名like%字段值%orderby字

段名[desc]"

sql="selecttop10*from數(shù)據(jù)表where字段名orderby字段名

[desc]"

sql="select*from數(shù)據(jù)表where字段名in(值1,值2,值3)”

sql="select*from數(shù)據(jù)表where字段名between值1and值2"

(2)更新數(shù)據(jù)記錄:

sql="update數(shù)據(jù)表set字段名=字段值where條件表達(dá)式”

sql="update數(shù)據(jù)表set字段1=值1,字段2=值2字段口二值n

where條件表達(dá)式”

(3)刪除數(shù)據(jù)記錄:

sql="deletefrom數(shù)據(jù)表where條件表達(dá)式"

sql="deletefrom數(shù)據(jù)表”(將數(shù)據(jù)表全部記錄刪除)

(4)添加數(shù)據(jù)記錄:

sql="insertinto數(shù)據(jù)表(字段1,字段2,字段3???)valuess(值1,值2,

值3…)”

sql="insertinto目標(biāo)數(shù)據(jù)表select*from源數(shù)據(jù)表”(把源數(shù)據(jù)表的記

錄添加到目標(biāo)數(shù)據(jù)表)

(5)數(shù)據(jù)記錄統(tǒng)計(jì)函數(shù):

AVG(字段名)得出一個(gè)表格欄平均值

COUNTf*|字段名)對(duì)數(shù)據(jù)行數(shù)的統(tǒng)計(jì)或?qū)δ骋粰谟兄档臄?shù)據(jù)行數(shù)統(tǒng)計(jì)

MAX(字段名)取得一個(gè)表格欄最大的值

MIN(字段名)取得一個(gè)表格欄最小的值

SUM(字段名)把數(shù)據(jù)欄的值相加

引用以上函數(shù)的方法:

sql="selectsum(字段名)as別名from數(shù)據(jù)表where條件表達(dá)式”

setrs=conn.excute(sql)

用rs(”別名”)獲得統(tǒng)的計(jì)值,其它函數(shù)運(yùn)用同上。

(5)數(shù)據(jù)表的建立和刪除:

CREATETABLE數(shù)據(jù)表名稱(字段1類型1(長(zhǎng)度),字段2類型2(長(zhǎng)

度)……)

例:CREATETABLEtabOl(namevarchar(50),datetimedefault

now())

DROPTABLE數(shù)據(jù)表名稱(永久性刪除一個(gè)數(shù)據(jù)表)

在ASP編程時(shí),下面這些語(yǔ)句是必需知道的:

1.連接數(shù)據(jù)庫(kù)

a.ASP與Access數(shù)據(jù)庫(kù)連接:

<%@language=VBscript%>

<%

dimconn,mdb(”數(shù)據(jù)庫(kù)名稱.mdb")

setconn=server.createobject("adodb.connection")

conn.open"driver={microsoftaccessdriver

(*.mdb)};uid=admin;pwd=數(shù)據(jù)庫(kù)密碼;dbq="&mdbfile

%>

b.ASP與SQL數(shù)據(jù)庫(kù)連接:

<%@language=VBscript%>

<%

dimconn

setconn=server.createobject("ADODB.connection")

con.open"PROVIDER=SQLOLEDB;DATASOURCE=SQL服務(wù)器名

稱或IP地址;UID=sa;PWD=數(shù)據(jù)庫(kù)密碼;DATABASE:數(shù)據(jù)庫(kù)名稱

%>

建立記錄集對(duì)象:

setrs=server.createobject("adodb.recordset")

rs.openSQL語(yǔ)句,conn,3,2

2.記錄集對(duì)象的方法:

rs.movenext將記錄指針從當(dāng)前的位置向下移一行

rs.moveprevious將記錄指針從當(dāng)前的位置向上移一行

rs.movefirst將記錄指針移到數(shù)據(jù)表第一行

rs.movelast將記錄指針移到數(shù)據(jù)表最終一行

rs.absoluteposition=N將記錄指針移到數(shù)據(jù)表第N行

rs.absolutepage=N將記錄指針移到第N頁(yè)的第一行

rs.pagesize=N設(shè)置每頁(yè)為N條記錄

rs.pagecount依據(jù)pagesize的設(shè)置返回總頁(yè)數(shù)

rs.recordcount返回記錄總數(shù)

rs.bof返回記錄指針是否超出數(shù)據(jù)表首端,true表示是,false為否

rs.eof返ID記錄指針是否超出數(shù)據(jù)表末端,true表示是,false為否

rs.delete刪除當(dāng)前記錄,但記錄指針不會(huì)向下移動(dòng)

rs.addnew添加記錄到數(shù)據(jù)表末端

rs.update更新數(shù)據(jù)表記錄

附:

常數(shù)常數(shù)值說(shuō)明

adLockReadOnly1缺省值,Recordset對(duì)象以只讀方式啟動(dòng),無(wú)法運(yùn)

行AddNew>Update與Delete等方法

adLockPrssimistic2當(dāng)數(shù)據(jù)源正在更新時(shí),系統(tǒng)會(huì)短暫鎖住其他用戶的

動(dòng)作,以保持?jǐn)?shù)據(jù)一樣性。

adLockOptimistic3當(dāng)數(shù)據(jù)源正在更新時(shí),系統(tǒng)并不會(huì)鎖住其他用戶的

動(dòng)作,其他用戶可以對(duì)數(shù)據(jù)進(jìn)行增、刪、改的操作。

adLockBatchOptimistic4當(dāng)數(shù)據(jù)源正在更新時(shí),其他用戶必需將

CursorLocation屬性改為adUdeClientBatch才能對(duì)數(shù)據(jù)進(jìn)行增、刪、

改的操作。

分類:(一般分類)::評(píng)論(。)::靜態(tài)鏈接網(wǎng)址::引用(。)

<!>

SQLSERVER2000功略(4)自動(dòng)化管理

發(fā)表人:kendy517|發(fā)表時(shí)間:2007年二月09日,11:56

面對(duì)大量反復(fù)的工作,即使一個(gè)優(yōu)秀的管理員也會(huì)感到很大的負(fù)擔(dān)。但為

了保持服務(wù)器維持在最佳運(yùn)行狀態(tài),這些又時(shí)不得不作的工作。這時(shí),

SQLSERVER想你所想,供應(yīng)了自動(dòng)化的管理措施。在我們工作之前,

我們須要了解自動(dòng)化背后的好助手一SQLSERVERAgent,這個(gè)就是

SQLSERVER的代理程序,他是運(yùn)行在后臺(tái)的服務(wù),可謂是幕后英雄!

那他有什么功能呢,如下:

①作業(yè)調(diào)度。

②執(zhí)行作業(yè)。

③產(chǎn)生報(bào)警。

④在指定的事務(wù)發(fā)生時(shí),通知指定的管理員或操作員。

說(shuō)到這里,我們就談?wù)勛詣?dòng)化中的角色:操作員,作業(yè),警報(bào)。

操作員:所謂的操作員只是人名與其通信方式(可有電子郵件地址,呼叫

器或NETSEND的目的地三種)的設(shè)置而已。只要將服務(wù)器管理人員的

聯(lián)絡(luò)方式都以操作員設(shè)置妥當(dāng)時(shí),當(dāng)SQLSERVER遇到各種須要處理的

狀況,SQLSERVERAgent就會(huì)通過(guò)指定的方式通知管理人員前來(lái)完成,

以達(dá)到與時(shí)的解除各種問(wèn)題。

作業(yè):作業(yè)是SQLSERVERAgent諸多功能中最常用的。所謂作業(yè)就是

可讓SQLSERVERAgent自動(dòng)執(zhí)行的一組操作,它既可以自動(dòng)執(zhí)行(這

個(gè)就涉與到調(diào)度),也可以手動(dòng)執(zhí)行。在定義作業(yè)必需留意以下內(nèi)容:作

業(yè)的名稱,作業(yè)的種類,作業(yè)的全部者,作業(yè)的說(shuō)明文字。

警報(bào):就是指針對(duì)特殊的事務(wù),要發(fā)信給操作員的設(shè)置。在作業(yè)的設(shè)置中

的“通知”頁(yè)面中指定了要將作業(yè)執(zhí)行狀態(tài)通知操作員時(shí),其實(shí)就是在設(shè)

置警報(bào)(如下圖)

L__lscreen.width-333)this.width=screen.width-333',border="0"

galleryimg="no"/>

在定義警報(bào)時(shí),可有兩種設(shè)置事務(wù)的方式,一種是指明白針對(duì)某特定事務(wù),

也就是只要在服務(wù)器發(fā)生該事務(wù)。另一種是指定事務(wù)的嚴(yán)峻度(Serverity),

只要是達(dá)到指定嚴(yán)峻程度的全部事務(wù),SQLSERVERAgent就會(huì)發(fā)信通

知操作員。

了解了概念,就是動(dòng)手的時(shí)候了,這些我們就以圖片給與說(shuō)明,第一個(gè)我

們新建“操作員“,過(guò)程如下:

n,

I__________Lcreen.width-333)this.width=sc】een.width-333,t

boidei="0"galleryimg="no"/>

接著新建“作業(yè)“過(guò)程如下:

screen.width-333)this.width=screen.width-333”

borde尸“0"galleryimg="no"/>

borde尸“0"galleryimg="no'/>

再來(lái)看看“警報(bào)”的創(chuàng)建過(guò)程:

screen.width-333)this.width=screen.width-333"border="0"

galleryimg="iio”/>

(留意在建立警報(bào)的“響應(yīng)”欄目里,對(duì)應(yīng)著相應(yīng)的作業(yè)和操作員)

談過(guò)了這些功能,是不是覺(jué)得真是很便利呀,當(dāng)然了良好的運(yùn)用不僅僅就

這簡(jiǎn)潔的幾步,這須要大家在應(yīng)用中適時(shí)的總結(jié)以適應(yīng)我們的須要?,F(xiàn)在,

我們?cè)僬務(wù)撘粋€(gè)SQLSERVER

的另一項(xiàng)不錯(cuò)的功能一腳本。

所謂的利用腳本,就是可以將數(shù)據(jù)庫(kù)對(duì)象或服務(wù)器中的其他對(duì)象以腳本

(Script)方式存入文件,也就是存成SQL程序以供我們接著利用。

同樣腳本也可以用于這里的自動(dòng)化管理。例如:我們可以將操作員,作業(yè)

和警報(bào)等對(duì)象存成Script文件后,再拿到別的服務(wù)器上加以利用。這是不

是在不同的服務(wù)器上創(chuàng)建相同的操作員等重復(fù)的工作了。這就是腳本的效

率所在。

假如須要存為腳本文件,可以在企業(yè)管理器中右擊相應(yīng)的對(duì)象在“全部任

務(wù)”/"生成SQL腳本”吩咐,設(shè)置確定即可。

談了上面的自動(dòng)化管理的方式是很好用的,但好像是不是缺乏全面性,要

為自己的服務(wù)器構(gòu)建一套完善的自動(dòng)化維護(hù)機(jī)制,可能須要花費(fèi)不少心

力,但是將大部分的日常維護(hù)工作適度的自動(dòng)化,多少可以減輕管理上的

負(fù)擔(dān),為此SQLSERVER還供應(yīng)了一項(xiàng)可以將整套數(shù)據(jù)庫(kù)維護(hù)工作自動(dòng)

化的功能,這就是數(shù)據(jù)庫(kù)的維護(hù)支配。

我們可以在企業(yè)管理器中執(zhí)行“工具"/數(shù)據(jù)庫(kù)維護(hù)支配器,這樣就見(jiàn)到

了如F界面,依次設(shè)置即可。

這次的探討就說(shuō)到這里,關(guān)于自動(dòng)化管理,我不用說(shuō)大家都明白,合理的

設(shè)置會(huì)給你的工作帶來(lái)什么樣的影響,好好體會(huì),讓工作更加輕松!

分類:(一般分類)::評(píng)論(0)::靜態(tài)鏈接網(wǎng)址::引用(0)

<!>

SQLSERVER2000功略⑶一數(shù)據(jù)庫(kù)的登陸與其用戶權(quán)限

發(fā)表人:kendy517|發(fā)表時(shí)間:2007年二月09日,11:54

SQLSERVER2000功略⑶一數(shù)據(jù)庫(kù)的登陸與其用戶權(quán)限

SQLSERVER2000功略一數(shù)據(jù)庫(kù)的登陸與其用戶權(quán)限

說(shuō)過(guò)了兩章純粹的理論,是不是有乏味的感覺(jué),好,我們從這一講就進(jìn)入

實(shí)質(zhì)的管理階段。首先,我們探討的是SQLSERVER平安管理中的登陸

和權(quán)限問(wèn)題。

SQLSERVER的登陸是平安管理的第一關(guān)。這個(gè)確定了那些人可以運(yùn)用

SQLSERVER(就像進(jìn)屋時(shí)的房門(mén)鑰匙)。關(guān)于登陸限制,SQLSERVER

則采納了兩種不同的檢查方式:windows驗(yàn)證和windows,sqlserver

混合驗(yàn)證。前者就是我們登陸windows時(shí)的用戶帳號(hào),而后者則是在保

留前者的前提下也允許SQLSERVER中建立的登陸帳號(hào)。這也是為用戶

供應(yīng)便利的選擇。

我們擁有了登陸的帳號(hào),就可以進(jìn)入SQLSERVER的限制中心,那我們

可以做些什么哪?這個(gè)確定是有限制的進(jìn)行的。SQLSERVER中的訪問(wèn)

權(quán)限分為兩方面,分別是:服務(wù)器本身的操作權(quán)限和數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限。

我們分別加以簡(jiǎn)介:

服務(wù)器的操作權(quán)限是從真?zhèn)€服務(wù)器來(lái)說(shuō)的,是面對(duì)全部數(shù)據(jù)庫(kù)的定義。例

如:是否有權(quán)創(chuàng)建或者刪除登陸帳號(hào),是否可以建立數(shù)據(jù)庫(kù)等等。這些也

就是通過(guò)設(shè)置服務(wù)器角色(serverrole)來(lái)實(shí)現(xiàn)的。SQLSERVER內(nèi)建

了七個(gè)服務(wù)器角色,分別代表七種服務(wù)器工作的操作權(quán)。

數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限就是針對(duì)某一個(gè)數(shù)據(jù)庫(kù)而言的。他可以分為兩層,第一

層是限制何人訪問(wèn)數(shù)據(jù)庫(kù),其次層限制可訪問(wèn)數(shù)據(jù)庫(kù)中的那些表,視圖和

存儲(chǔ)過(guò)程,以與是否可以用select,insert,update等等。這個(gè)權(quán)限往往是

通過(guò)數(shù)據(jù)庫(kù)角色得以實(shí)現(xiàn)的。

(服務(wù)器角色不行以自定義,數(shù)據(jù)庫(kù)角色可以自定義)

僅僅知道上面這些概念是不行的,因?yàn)镾QLSERVER中的權(quán)限是比較困

難的,因?yàn)楸舜酥g可能存在某些權(quán)鏈。所以僅僅概念是不簡(jiǎn)潔說(shuō)清的,

我們探討的就是基礎(chǔ)的東西,懂得了這些在真正工作中才可以更好的駕馭

管理技能。我們簡(jiǎn)潔的談?wù)剻?quán)鏈的問(wèn)題吧!

由于每個(gè)對(duì)象都有他自己的擁有權(quán)信息,這個(gè)對(duì)象可能和其他對(duì)象存在確

定的依存關(guān)系,比如:一個(gè)視圖是從另外一個(gè)視圖建立過(guò)來(lái)的。這些相互

依存的對(duì)象關(guān)系可能拉的很長(zhǎng),因此相依存的對(duì)象的擁有權(quán)就形成一個(gè)由

上而下的鏈結(jié),這在SQLSERVER中就稱作擁有權(quán)鏈(Ownership

Chain)o正是由于這樣,可能所產(chǎn)生的訪問(wèn)權(quán)限變得特別困難。所以,

我們?cè)谶@里提出以視圖和存儲(chǔ)過(guò)程來(lái)限制訪問(wèn)范圍。通過(guò)視圖確定用戶可

以訪問(wèn)的內(nèi)容,然后把視圖的相關(guān)權(quán)限給予詳細(xì)的用戶,這樣可以有效的

減輕權(quán)限設(shè)置的工作量(特殊是用戶訪問(wèn)范圍跨度較大的狀況F)。除了

視圖,我們也可以自定義存儲(chǔ)過(guò)程來(lái)對(duì)數(shù)據(jù)的訪問(wèn)加以限制,即把一組可

查詢某特定數(shù)據(jù)的語(yǔ)句存成存儲(chǔ)過(guò)程,然后將其execute權(quán)限設(shè)置給用

戶,用戶就可以執(zhí)行他來(lái)取得數(shù)據(jù)了。這樣省去了許多困難的授權(quán)過(guò)程,

是不是很便利呀!

簡(jiǎn)潔的說(shuō)了說(shuō)這些,我們?cè)賮?lái)談?wù)凷QLSERVER中特殊的東西:sa帳號(hào),

public數(shù)據(jù)庫(kù)角色,guest數(shù)據(jù)庫(kù)用戶。

Sa是SQLSERVER默認(rèn)的管理員帳號(hào),主要是為了向下兼容而設(shè)置的。

這個(gè)也就是安裝好SQLSERVER時(shí)就有的帳號(hào),而且權(quán)限極大,所以在

安裝過(guò)程中最好把他的密碼進(jìn)行設(shè)置,不要為空。這個(gè)帳號(hào)相當(dāng)于服務(wù)器

角色中的systemadministrator,而且不行以刪除。

Public數(shù)據(jù)庫(kù)角色是一個(gè)公共的數(shù)據(jù)庫(kù)角色,也就是說(shuō)當(dāng)你新建一個(gè)數(shù)據(jù)

庫(kù)角色的時(shí)候,默認(rèn)的就屬于這個(gè)角色。這個(gè)也是不行刪除的。所以為了

平安期間,我們對(duì)public數(shù)據(jù)庫(kù)對(duì)象不要給予過(guò)多的權(quán)限(除非有這個(gè)

須要)。

Guest是一個(gè)特殊的數(shù)據(jù)庫(kù)用戶,類似于windowsNT/2000下的guest

帳號(hào),都是給未經(jīng)授權(quán)的用戶供應(yīng)某種程度的訪問(wèn)權(quán)限。假如不須要這個(gè)

用戶可以將其刪除。

說(shuō)了這些概念,其實(shí)現(xiàn)都是通過(guò)“企業(yè)管理器”實(shí)現(xiàn)的,我們就這些談?wù)?/p>

用相應(yīng)的系統(tǒng)存儲(chǔ)過(guò)程:

登陸管理:sp_addlogin新增帳號(hào)

sp_droplogin刪除帳號(hào)

sp_grantlogins允許某windows帳號(hào)訪問(wèn)

sp_denylogins禁止某windows帳號(hào)訪問(wèn)

sp_revokelogins刪除某windows帳號(hào)訪問(wèn)

sp_helplogin查看帳號(hào)信息

sp_addsrvrolemember將某用戶添力口至ij服務(wù)器角色

sp_dropsrvrolemember將某用戶從數(shù)據(jù)庫(kù)角色中刪除

sp_helpsrvrole查看服務(wù)器角色的信息

數(shù)據(jù)庫(kù)用戶管理:sp_grantaccess建立數(shù)據(jù)庫(kù)用戶

sp_revokedbaccess刪除數(shù)據(jù)庫(kù)用戶

sp_helpuser查看用戶信息

數(shù)據(jù)庫(kù)角色管理:sp_addrole建立數(shù)據(jù)庫(kù)角色

sp_addrolemember將用戶加入數(shù)據(jù)庫(kù)角色

sp_helprole查看數(shù)據(jù)庫(kù)角色信息

sp_helprolemember查看某數(shù)據(jù)庫(kù)角色的全部成員

sp_droprole刪除角色

sp_droprolemember刪除角色中的某一成員

好了,看了上面的不要感覺(jué)麻煩呀,這可是讓你高效工作的珍寶呀,熟能

生巧,我們一起聯(lián)系多了,其實(shí)駕馭就覺(jué)得很輕松了!接著努力?。海?/p>

分類:(一般分類)::評(píng)論(0)::靜態(tài)鏈接網(wǎng)址::引用(0)

<!>

SQLSERVER2000攻略⑴一工作流程篇

發(fā)表人:kendy517|發(fā)表時(shí)間:2007年一月09日,11:51

SQLSERVER2000是windows平臺(tái)上一個(gè)重要的數(shù)據(jù)管理工具。了解

數(shù)據(jù)庫(kù)的摯友對(duì)他確定很熟識(shí)。我們就此在這里作一系列的探討,希望通

過(guò)這次的溝通我們對(duì)SQLSERVER200。有個(gè)深刻的理解。首先,我們探

討一卜他的工作流程,這可是工作的基礎(chǔ)呀,好,我們起先了!

簡(jiǎn)潔的說(shuō),SQLSERVER2000是個(gè)采納主從結(jié)構(gòu)的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。哈,

是不是太簡(jiǎn)潔,終歸現(xiàn)在市面上的數(shù)據(jù)庫(kù)產(chǎn)品幾乎都是這個(gè)結(jié)構(gòu)。我們來(lái)

深化一點(diǎn),所謂SQLSERVER的主從結(jié)構(gòu)(Client/Server),就是由

SQLSERVER扮演存放數(shù)據(jù)和供應(yīng)數(shù)據(jù)給客戶端的角色,當(dāng)用戶要取用

數(shù)據(jù)時(shí),則可調(diào)用各種不同的客戶端應(yīng)用程序,通過(guò)SQLSERVER所支

持的接口,向SQLSERVER供應(yīng)懇求,然后取得數(shù)據(jù)庫(kù)中的數(shù)據(jù)并返回

給用戶。這個(gè)過(guò)程應(yīng)當(dāng)好理解吧。

看了這個(gè)是不是覺(jué)得很easy呀!其實(shí),這只是比較傳統(tǒng)的雙層式

Client/Server結(jié)構(gòu),近年來(lái)三層式或者多層式主從結(jié)構(gòu)的應(yīng)用正在流行。

例如:協(xié)作微軟的BackOffice中的其他服務(wù)器產(chǎn)品,即可建立多層主從

運(yùn)算模式。

了解了基本的數(shù)據(jù)流程,那是不是要問(wèn)是什么實(shí)現(xiàn)客戶端與服務(wù)器之間的

溝通哪?這個(gè)是個(gè)比較有意義的問(wèn)題。我們知道了作什么,就應(yīng)改知道他

是怎么做的。所謂,打破沙鍋問(wèn)究竟!我們說(shuō)一下工作原理:SQLSERVER

供應(yīng)了多種不同的接口讓客戶端(應(yīng)用程序)順當(dāng)與服務(wù)器進(jìn)行溝通,在

此接口的基礎(chǔ)上,由NET-Library(網(wǎng)絡(luò)函數(shù)庫(kù))建立兩邊IPC

(InterprocessCommication)通訊管道來(lái)進(jìn)行工作。詳細(xì)的說(shuō)就是:

當(dāng)客戶端程序運(yùn)用某種接口向服務(wù)器提出查詢懇求時(shí),數(shù)據(jù)庫(kù)接口驅(qū)動(dòng)程

序調(diào)用客戶端的Net-library,而Net-library則調(diào)用IPC應(yīng)用程序接口產(chǎn)

生IPC,通過(guò)IPC送達(dá)服務(wù)端,服務(wù)端接受懇求后經(jīng)SQLSERVER處理,

以同樣的方式將結(jié)果送回客戶端。(這個(gè)過(guò)程有兩個(gè)狀況,Client和Server

在同一臺(tái)計(jì)算機(jī)上,Net-library會(huì)運(yùn)用localIPC,假如是網(wǎng)絡(luò)存取,則會(huì)

有雙方所運(yùn)用的網(wǎng)絡(luò)協(xié)議產(chǎn)生RemoteIPC)圖示如下:

了解了外部工作機(jī)制,咱們看看服務(wù)端是怎么分工的,終歸多數(shù)的數(shù)據(jù)工

作是由服務(wù)器完成的。整體上說(shuō),整個(gè)SQLSERVER的數(shù)據(jù)管理系統(tǒng)分

為如下幾個(gè)組件:

AOpenDataService(ODS):負(fù)責(zé)處理由Net-library送來(lái)的查詢懇求,

ODS會(huì)調(diào)用SQLSERVER的內(nèi)部功能來(lái)完成客戶端的需求。

▲SQLServerService:這個(gè)SQLSERVER的“心臟”負(fù)責(zé)管理我們的

數(shù)據(jù)庫(kù),以與全部建立,查詢和修改的數(shù)據(jù)庫(kù)的操作。此數(shù)據(jù)庫(kù)管理系統(tǒng)

的核心又分為幾個(gè)單元,其中最主要的兩個(gè)單元就是負(fù)責(zé)解SQL語(yǔ)法和

支配查詢執(zhí)行支配等工作的關(guān)系引擎(RelationalEngine),以與負(fù)責(zé)管

理數(shù)據(jù)庫(kù)文件和文件讀寫(xiě)等工作的存儲(chǔ)引擎(StorageEngine)。這兩個(gè)

組件之間則是通過(guò)OLEDB接口來(lái)通信的。

▲SQLSERVERAgentfSQLSERVER代言程序):可以說(shuō)此組件是重要

性僅次于SQLSERVERService的組件,這個(gè)服務(wù)供應(yīng)了有關(guān)工作編排,

以與服務(wù)器有問(wèn)題時(shí)通知管理員等相關(guān)功能的支持。

▲MSDTCService:假如將SQLSERVER安裝在多臺(tái)服務(wù)器上,要讓客

戶端能夠在單個(gè)事務(wù)中對(duì)不同的服務(wù)器(數(shù)據(jù)源)進(jìn)行處理,就須借助

MSDTC(MicrosoftDistributedTransactionCoordinator)Service來(lái)

負(fù)責(zé)這類分布式事務(wù)的協(xié)調(diào)工作,以確保在各個(gè)數(shù)據(jù)庫(kù)上的更改操作能正

確完成。

了解了上面的過(guò)程,是不是有點(diǎn)印象了,來(lái)我們理清一下思路,問(wèn)一下自

己:客戶端的工作懇求怎么傳遞給服務(wù)器的?服務(wù)器又是怎么處理相應(yīng)的

懇求的?仔細(xì)想想這兩個(gè)問(wèn)題,其實(shí)你會(huì)覺(jué)得原來(lái)“不過(guò)如此"!八_八

分類:(一般分類)::評(píng)論(0)::靜態(tài)鏈接網(wǎng)址::引用(0)

<!>

SQLSERVER中運(yùn)用存儲(chǔ)過(guò)程(StoredProcedure)

發(fā)表人:kendy517|發(fā)表時(shí)間:2007年二月09日,11:50

隨著SQLSERVER不斷的學(xué)習(xí),相識(shí)的深化,我們會(huì)發(fā)覺(jué)越來(lái)越多的功

能呈現(xiàn)在我們面前,這些功能都是特別強(qiáng)大的,在我們應(yīng)用中發(fā)揮著特別

有意義的作用,也因此感知作為一個(gè)大型的數(shù)據(jù)庫(kù)管理系統(tǒng)的魅力所在。

從這一篇起先,我們著手探討“存儲(chǔ)過(guò)程”觸發(fā)器”游標(biāo)”

事務(wù)“和”鎖”的應(yīng)用,假如嫻熟的駕馭了這些,我想駕馭SQLSERVER

的實(shí)力將是一個(gè)新的層次。學(xué)習(xí)是為了應(yīng)用,駕馭就是為了解決問(wèn)題。希

望通過(guò)我們一起的學(xué)習(xí),我們都可以很好的利用這個(gè)工具為我們服務(wù)。這

是我們學(xué)習(xí)的目的也是我們的奮斗目標(biāo)。好,我們接著吧!

說(shuō)起存儲(chǔ)過(guò)程,我們先了解他的概念,這是我們探討必走的第一步:存儲(chǔ)

過(guò)程就是將所須要的工作,預(yù)先以SQL程序?qū)懞?,命名后進(jìn)行保存,以

后須要作這些工作時(shí)可以運(yùn)用EXECUTE指令來(lái)調(diào)用,即可自動(dòng)完成相

應(yīng)任務(wù)。這里的存儲(chǔ)過(guò)程也是自動(dòng)化的一個(gè)方面,總之就是為了便利管理

的一種措施。讓我來(lái)說(shuō)說(shuō)他的優(yōu)點(diǎn)吧:

1.執(zhí)行效率高(這點(diǎn)不容置疑)

2.統(tǒng)一的操作流程:也就是通過(guò)存儲(chǔ)過(guò)程的操作避開(kāi)了一些操作過(guò)程中

可能無(wú)意中認(rèn)為的錯(cuò)誤,只要確定了制作存儲(chǔ)過(guò)程時(shí)是正確地,以后在調(diào)

用過(guò)程中就不用擔(dān)憂了。大家運(yùn)用時(shí)流程是一樣的。

3.重復(fù)運(yùn)用

4.平安性:這一點(diǎn)我們?cè)跀?shù)據(jù)庫(kù)的平安策略里探討過(guò),可以參考前邊的

文章。也就是說(shuō):我們可以利用存儲(chǔ)過(guò)程作為數(shù)據(jù)存儲(chǔ)的管道。可以讓客

戶在確定的范圍內(nèi)對(duì)數(shù)據(jù)進(jìn)行操作。另外,存儲(chǔ)過(guò)程是可以加密的,這樣

別人就看不到他的內(nèi)容了。

存儲(chǔ)過(guò)程分為三類:

系統(tǒng)存儲(chǔ)過(guò)程(SystemstoredProcedure)sp_開(kāi)頭,為SQLSERVER

擴(kuò)展存儲(chǔ)過(guò)程(ExtendedstoredProcedure),也就是外掛程序,用于

擴(kuò)展SQLSERVER的功能,以sp_或者xp_開(kāi)頭,以DLL的形式單獨(dú)存

在。

bordei="0"galleryimgdno”/>

A(視察上面的你會(huì)發(fā)覺(jué)系統(tǒng)存儲(chǔ)過(guò)程和擴(kuò)展存儲(chǔ)過(guò)程都是在master數(shù)

據(jù)庫(kù)中。sp_開(kāi)頭的可是全局的,任何一個(gè)數(shù)據(jù)庫(kù)都可以干脆調(diào)用的。)

用戶定義的存儲(chǔ)過(guò)程(User-definedstoredProcedure),這個(gè)就是用

戶在詳細(xì)的數(shù)據(jù)庫(kù)中自己定義的,名字最好不要以sp_和xp_開(kāi)頭,防止

混亂。

了解了基本概念,就到應(yīng)用的階段了。

首先創(chuàng)建一個(gè)存儲(chǔ)過(guò)程(在pubs數(shù)據(jù)庫(kù)中),我們命名為MyProce示例代

碼如下(功能為向stores表中插入stor_id,stor_name兩個(gè)字段值):

createprocedureMyProce

@paramlchar(4),@param2varchar(40)—定義參數(shù),作為存儲(chǔ)過(guò)程

的接口

withencryption一存儲(chǔ)過(guò)程加密

asinsertstores(stor_id,stor_name)values(@param1,@param2)

go

我們?nèi)绱苏{(diào)用:

execMyProce'111111'Leijun,book,--參數(shù)賦值,調(diào)用存儲(chǔ)

過(guò)程

用企業(yè)管理器創(chuàng)建如圖所示:

假如我們要修改,可以查看相應(yīng)的存儲(chǔ)過(guò)程的“屬性“,如上圖在"文本

“窗體中修改。

但是留意我們這個(gè)因?yàn)橛昧藈ithencryption語(yǔ)句,所以,打開(kāi)時(shí)將有下

面的提示,不允許查看,這也就是加密。

H

I__________lscreen.width-333)this.width=scieen.width-333”

borde尸“0"galleryimg="no'/>

看了上面的是不是有所了解了,其實(shí)創(chuàng)建時(shí)還有其他的參數(shù)可以運(yùn)用,我

們這里只是一個(gè)簡(jiǎn)潔的例子,更多的應(yīng)用須要我們?cè)趯?shí)踐中不斷的總結(jié),

這樣才能更加敏捷的應(yīng)用。下面我們?cè)賮?lái)看一個(gè)創(chuàng)建的例子(這個(gè)的作用

是在authors表中查找一個(gè)人名,表中把一個(gè)名字分為兩字段存儲(chǔ)了,假

如查到了,打印“查有此人ID:"與其au_id字段值):

CREATEprocedureSearchMe

@param1varcharl10),@param2varchar(30)

select@param2=au_id

fromauthors

whereau_fname+au_lname=@param1

if@@rowcount>0--全局變量,記錄影響到的行

print,查有此人ID:'+@param2

GO

我們這樣執(zhí)彳?。篍xecSearchMe<leijun,,null

由于查找到了所以顯示如下:

H

I__________lscreen.width-333)this.width=scieen.width-333”

borde尸“0"galleryimg="no'/>

例子就簡(jiǎn)潔列舉這些,因?yàn)樗拿艚菪院艽?,所以我們只?jiǎn)潔的說(shuō)明一下,

假如要更好的利用,這就須要我們不斷的摸索了。

下面我們談?wù)勥\(yùn)用過(guò)程中我了解到的留意事項(xiàng):

1.在存儲(chǔ)過(guò)程中,有些建立對(duì)象的語(yǔ)句是不行運(yùn)用的:create

default,createtrigger,createprocedure,createview,createrule.

2.在同一數(shù)據(jù)庫(kù)中,不同的全部者可以建立相同名稱的對(duì)象名。例如:

a.sample,b.sample,c.sample三個(gè)數(shù)據(jù)表可以同時(shí)存在。假如存儲(chǔ)過(guò)程

中未指明對(duì)象的全部者(例如存儲(chǔ)過(guò)程中的語(yǔ)句select*fromsample,

這句中的sample沒(méi)有指明全部者),在執(zhí)行的過(guò)程中默認(rèn)的全部者杳找

依次是:相應(yīng)的存儲(chǔ)過(guò)程的建立者一>相應(yīng)數(shù)據(jù)庫(kù)的全部者。假如這個(gè)查

找過(guò)程中沒(méi)有把全部者確定下來(lái),系統(tǒng)就要報(bào)錯(cuò)。

(這里我額外插一句:假如須要嚴(yán)密的數(shù)據(jù)操作,在任何操作中盡量加上

全部者,例如le燈un.sample)

3.在存儲(chǔ)過(guò)程名稱前邊添加#或者##,所建立的存儲(chǔ)過(guò)程則是“臨時(shí)

存儲(chǔ)過(guò)程“(#是局部臨時(shí)存儲(chǔ)過(guò)程,##是全局臨時(shí)存儲(chǔ)過(guò)程)。

上面的都是一些簡(jiǎn)潔忽視的,特殊是其次條,我們確定的仔細(xì)思索,或許

這些有意無(wú)意的忽視是我們?cè)斐慑e(cuò)誤的根源??!

轉(zhuǎn)載自:leijun

分類:(一般分類)::評(píng)論(0)::靜態(tài)鏈接網(wǎng)址::引用(。)

<!>

[Php+APACHE+MySQL][或在windows已裝IIS下的]配置

發(fā)表人:kendy517|發(fā)表時(shí)間:2007年二月。9日,09:30

前段時(shí)間的文章:

可以一看,但是其對(duì)本篇價(jià)值是1%.希望本篇能補(bǔ)充之缺陷.

一:下載安裝程序

Apache可以從下載

PHP可以從下載.

mysql在下載.

二安裝程序(以下以2k為例說(shuō)明,其他windows系統(tǒng)的類似)

首先假如您安裝了HS的話,Internet服務(wù)管理器一〉默認(rèn)web站點(diǎn)右

擊一>停止.

1:先是Apache,有4.2M左右,沒(méi)啥說(shuō)的,點(diǎn)擊安裝到D盤(pán),為了方西系統(tǒng)

重裝,D盤(pán)便利.一路會(huì)很簡(jiǎn)潔的安裝的勝利.

2:php5.1.X的安裝版是2.44m左右,可以點(diǎn)擊安裝,選擇服務(wù)器的時(shí)候

選擇apache,不過(guò),沒(méi)有組建擴(kuò)展,還有下載擴(kuò)展的dll文件包(有的19m

左右,不確定),復(fù)制到C:WINNT書(shū)目下面的.可以干脆復(fù)制到d盤(pán)文件下面

也可以,筆者不知道為什么選擇了第一種.

3:MySQL我下載的是4.1.7版本,36.7M左右,也是一路點(diǎn)擊,然后啟動(dòng)

之.

三:必要設(shè)置

假如我們要運(yùn)用CGI二進(jìn)制文件,那么我們耍將如下指令插入到Apache

的d.conf配置文件中,以設(shè)置CGI二進(jìn)制文件:

PHP以CGI方式安裝到Apache:

ScriptAlias/php/"D:/php/n

AddTypeapplication/x-d-php.php

Actionapplication/x-d-php"/php/php.exe”

假如我們想把PHP作為Apache2.0的模塊,那么就確定要移動(dòng)

php4ts.dll至|jwinnt/system32(WindovzsNT/2000)或

windows/system32(WindowsXP),覆蓋原有文件(假如有的話),

對(duì)于PHP5,這個(gè)文件是php5ts.dllo然后我們要插入如下兩行到

d.conf中,以使我們的PHP作為Apache的PHP-Module安裝:

PHP以模塊方式安裝到Apache:

;ForPHP5dosomethinglikethis:

LoadModulephp5_module"c:/php/php5apache2.dll"

AddTypeapplication/x-d-php.php

添加這2行代碼到d.conf,d.conf文件可通過(guò)計(jì)算機(jī)搜尋找

出.哈哈….

再在里面找出:

DocumentRoot"D:/web/web/php"

相關(guān)行,可以修改成自己的php網(wǎng)站根書(shū)目.

假如你把那些擴(kuò)展都復(fù)制到C:winnt下面的話.

測(cè)試:vhtml>

<body>

<?phpinfoQ;?>

</body>

<html>

應(yīng)當(dāng):正常可以看到的.

關(guān)于連接MySQL的,請(qǐng)看:

為了您的HS能接著工作,請(qǐng)?jiān)趇nternet信息服務(wù)>默認(rèn)web站點(diǎn)

右擊屬性一。IP地址:192?168.1.105,端口:81,否則會(huì)提示端口以已

運(yùn)用之類的信息.

完畢,有問(wèn)題請(qǐng)立刻提出,早安.

天氣:大雨,ccdot發(fā)表于2006-1-212:48:43,閱讀了460次,共有個(gè)1回

復(fù).

花了大半天的時(shí)間,最終把全新的php平臺(tái)建了起來(lái),歷經(jīng)了太多錯(cuò)誤和

反復(fù),看了網(wǎng)上多數(shù)篇教材,可仍錯(cuò)漏百出,唉,真不知道那些寫(xiě)教程的

人在寫(xiě)什么。不過(guò)蒼天不負(fù)有心人,摸索了好久,最終還是勝利了.:)..

寫(xiě)下來(lái),以后也有個(gè)參照。

調(diào)試環(huán)境如下:

OS:win2000sp4

apache_2052-win32(msi格式)

php-5.0.2-Win32(zip包)

mysql-5.0.1-alpha-snapshot-win(zip包)

全部程序(apache,php,mysql)安裝在F:/server書(shū)目下。

?解壓php到f:/serverphp文件夾中。

PHP.ini的一些配置

.dojroot=F:/phpf〃默認(rèn)php文檔位置,設(shè)為apache中一樣,偶

沒(méi)設(shè),卻也行!!

,extension_dir=F:/server/php/ext//擴(kuò)展文件位置,用作支持

mysql,確定要設(shè)正確

.session.save_path=c:/temp//session存儲(chǔ)位置

,cgi.force_redirect=0〃假如出現(xiàn)SecurityAlert!ThePHPCGI

cannotbeaccesseddirectly的警告,設(shè)置此值

.register_global,把它設(shè)置為on.//避開(kāi)post變量不能傳遞

.display_errors=on//顯示錯(cuò)誤消息

?裝好apache到f:/server/apache2,首先讓Apache2能支持php5

1、打開(kāi)apache的配置文件,添加如下兩行(php安裝在F:/servei7Php

下)

,AddTypeapplication/x-d-php.php

,LoadModulephp5_moduleF:/server/php/php5apache2.dll

這樣就已經(jīng)可以支持了phpT,不知網(wǎng)上的教程里為什么還要把那些

dll文件復(fù)制得滿天飛(版本是相同的),郁悶。

2、d.conf的一些其他必要設(shè)置:

.索引頁(yè)名稱Directoryindexindex.php

.默認(rèn)文檔位置,設(shè)置DocumentRoot路徑

3、網(wǎng)上流傳的配置,我沒(méi)有copy,但也勝利了。

.把php5ts.dll復(fù)制到winnt書(shū)目或system書(shū)目中

?安裝mysql到f:/servermysql中。運(yùn)行bin書(shū)目中

winmysqladmin.exeo設(shè)置你的用戶名和密碼,端口不必更改。

?接著讓PHP支持Mysql數(shù)據(jù)庫(kù)

.將安裝書(shū)目中的php.ini-recommended復(fù)制到winnt書(shū)目中,改名

為php.ini

查找[MySQL]字段內(nèi)的內(nèi)容.修改如下.

mysql.default_port=3306

//這里是MYSQL的端口.

mysql.default_host=localhost

//這里是本地主機(jī).

mysql.default_user=root

//這里是用戶

mysql.default_password=abcdefg

//這里是密碼

修改到這里就可以讓Php與MYSQL關(guān)聯(lián)了.

最終啟動(dòng)PHP對(duì)MYSQL模塊支持.

查找extension=php_mysql.dll字串.刪除掉前面的;號(hào)

extension=php_mysql.dll

請(qǐng)留意.假如不啟動(dòng)PHP對(duì)MYSQL模塊支持.將無(wú)法使

PHPMYADMIN正常工作.將提示:

cannotloadMySQLextension,pleasecheckPHPConfiguration

無(wú)法裝入MySQL擴(kuò)展,請(qǐng)檢查PHP的配置。

可是我設(shè)置完這樣,重啟apache卻出現(xiàn)找不到libmySQL.dll動(dòng)態(tài)鏈接

庫(kù)的提示,幾經(jīng)熬煎才發(fā)覺(jué),必需把php中的libmysql.dll復(fù)制到apache

中的bin書(shū)目中才ok(網(wǎng)上教材可沒(méi)有)。

?讓apache也支持mysql

把php書(shū)目下的libmySQL.dll復(fù)制到apache的bin書(shū)目下。

ok,調(diào)試phpinfo。,一切正常??墒俏覍?xiě)了句echo"我愛(ài)你”;,就出現(xiàn)

了中文亂碼。老問(wèn)題,從網(wǎng)上搜得一段話,順當(dāng)解決了問(wèn)題。

?緣由很簡(jiǎn)潔,由于Apache它默認(rèn)的編碼是西歐編碼,你只要在

“d.conf”中找到“AddDefaultCharsetISO-8859-1”將它修改

為"AddDefaultChaxsetGB2312”,保存然后重新啟動(dòng)Apache再試,

可能有的摯友的已經(jīng)解決了,但還是有許多的摯友的網(wǎng)站依舊是亂碼,包

括我的,這是什么緣由呢,網(wǎng)上也有介紹把它改為uAddDefaultCharset

off“,可能在你的網(wǎng)站也不確定行得通,實(shí)質(zhì)問(wèn)題在于它是由網(wǎng)頁(yè)制作

軟件引起的,假如你運(yùn)用的是Macromedia公司的Dreamweaver系列

軟件制作的,由于它的編碼為“gb2312”,所以就會(huì)出現(xiàn)亂碼,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論