活着的死人 发表于 2015-1-16 22:15:34

MYSQL网页编程之数据库中常常用到的操纵和办理数据库的...

与其他数据库相比,MySQL易学易用。<P>/*
--收拾者:永久de影

--收拾工夫:2010/06/08

--内容:SQL函数的先容:
*/

--★★SQL2000查询出各(某)表字段的属性:★★★★★★★★★★★★★★★★★★

SELECT
表名=casewhena.colorder=1thend.nameelseend,
表申明=casewhena.colorder=1thenisnull(f.value,)elseend,
字段序号=a.colorder,
字段名=a.name,
标识=casewhenCOLUMNPROPERTY(a.id,a.name,IsIdentity)=1then√elseend,
主键=casewhenexists(SELECT1FROMsysobjectswherextype=PKandparent_obj=a.idandnamein(
SELECTnameFROMsysindexesWHEREindidin(
SELECTindidFROMsysindexkeysWHEREid=a.idANDcolid=a.colid)))then√elseend,
范例=b.name,
占用字节数=a.length,
长度=COLUMNPROPERTY(a.id,a.name,PRECISION),
小数位数=isnull(COLUMNPROPERTY(a.id,a.name,Scale),0),
同意空=casewhena.isnullable=1then√elseend,
默许值=isnull(e.text,),
字段申明=isnull(g.,)
FROM
syscolumnsa
leftjoin
systypesb
on
a.xusertype=b.xusertype
innerjoin
sysobjectsd
on
a.id=d.idandd.xtype=Uandd.namedtproperties
leftjoin
syscommentse
on
a.cdefault=e.id
leftjoin
syspropertiesg
on
a.id=g.idanda.colid=g.smallid
leftjoin
syspropertiesf
on
d.id=f.idandf.smallid=0
where
d.name=要查询的表--假如只查询指定表,加上此前提
orderby
a.id,a.colorder


--★★SQL2005查询出各(某)表字段的属性:★★★★★★★★★★★★★★★★★★
--========================================================================
--表布局信息查询
--邹建2005.08(援用请保存此信息)
--========================================================================
SELECT
TableName=CASEWHENC.column_id=1THENO.nameELSENEND,
TableDesc=ISNULL(CASEWHENC.column_id=1THENPTB.END,N),
Column_id=C.column_id,
ColumnName=C.name,
PrimaryKey=ISNULL(IDX.PrimaryKey,N),
=CASEWHENC.is_identity=1THENN√ELSENEND,
Computed=CASEWHENC.is_computed=1THENN√ELSENEND,
Type=T.name,
Length=C.max_length,
Precision=C.precision,
Scale=C.scale,
NullAble=CASEWHENC.is_nullable=1THENN√ELSENEND,
=ISNULL(D.definition,N),
ColumnDesc=ISNULL(PFD.,N),
IndexName=ISNULL(IDX.IndexName,N),
IndexSort=ISNULL(IDX.Sort,N),
Create_Date=O.Create_Date,
Modify_Date=O.Modify_date
FROMsys.columnsC
INNERJOINsys.objectsO
ONC.=O.
ANDO.type=U
ANDO.is_ms_shipped=0
INNERJOINsys.typesT
ONC.user_type_id=T.user_type_id
LEFTJOINsys.default_constraintsD
ONC.=D.parent_object_id
ANDC.column_id=D.parent_column_id
ANDC.default_object_id=D.
LEFTJOINsys.extended_propertiesPFD
ONPFD.class=1
ANDC.=PFD.major_id
ANDC.column_id=PFD.minor_id
--ANDPFD.name=Caption--字段申明对应的形貌称号(一个字段能够增加多个分歧name的形貌)
LEFTJOINsys.extended_propertiesPTB
ONPTB.class=1
ANDPTB.minor_id=0
ANDC.=PTB.major_id
--ANDPFD.name=Caption--表申明对应的形貌称号(一个表能够增加多个分歧name的形貌)
LEFTJOIN--索引及主键信息
(
SELECT
IDXC.,
IDXC.column_id,
Sort=CASEINDEXKEY_PROPERTY(IDXC.,IDXC.index_id,IDXC.index_column_id,IsDescending)
WHEN1THENDESCWHEN0THENASCELSEEND,
PrimaryKey=CASEWHENIDX.is_primary_key=1THENN√ELSENEND,
IndexName=IDX.Name
FROMsys.indexesIDX
INNERJOINsys.index_columnsIDXC
ONIDX.=IDXC.
ANDIDX.index_id=IDXC.index_id
LEFTJOINsys.key_constraintsKC
ONIDX.=KC.
ANDIDX.index_id=KC.unique_index_id
INNERJOIN--关于一个列包括多个索引的情形,只显现第1个索引信息
(
SELECT,Column_id,index_id=MIN(index_id)
FROMsys.index_columns
GROUPBY,Column_id
)IDXCUQ
ONIDXC.=IDXCUQ.
ANDIDXC.Column_id=IDXCUQ.Column_id
ANDIDXC.index_id=IDXCUQ.index_id
)IDX
ONC.=IDX.
ANDC.column_id=IDX.column_id
--WHEREO.name=N要查询的表--假如只查询指定表,加上此前提
ORDERBYO.name,C.column_id

--★★SQL2005索引及主键信息:★★★★★★★★★★★★★★★★★★
--========================================================================
--索引及主键信息
--邹建2005.08(援用请保存此信息)
--========================================================================
SELECT
TableId=O.,
TableName=O.Name,
IndexId=ISNULL(KC.,IDX.index_id),
IndexName=IDX.Name,
IndexType=ISNULL(KC.type_desc,Index),
Index_Column_id=IDXC.index_column_id,
ColumnID=C.Column_id,
ColumnName=C.Name,
Sort=CASEINDEXKEY_PROPERTY(IDXC.,IDXC.index_id,IDXC.index_column_id,IsDescending)
WHEN1THENDESCWHEN0THENASCELSEEND,
PrimaryKey=CASEWHENIDX.is_primary_key=1THENN√ELSENEND,
=CASEWHENIDX.is_unique=1THENN√ELSENEND,
Ignore_dup_key=CASEWHENIDX.ignore_dup_key=1THENN√ELSENEND,
Disabled=CASEWHENIDX.is_disabled=1THENN√ELSENEND,
Fill_factor=IDX.fill_factor,
Padded=CASEWHENIDX.is_padded=1THENN√ELSENEND
FROMsys.indexesIDX
INNERJOINsys.index_columnsIDXC
ONIDX.=IDXC.
ANDIDX.index_id=IDXC.index_id
LEFTJOINsys.key_constraintsKC
ONIDX.=KC.
ANDIDX.index_id=KC.unique_index_id
INNERJOINsys.objectsO
ONO.=IDX.
INNERJOINsys.columnsC
ONO.=C.
ANDO.type=U
ANDO.is_ms_shipped=0
ANDIDXC.Column_id=C.Column_id


--★★SQLServer对年夜容量内存的撑持:★★★★★★★★★★★★★★★★★★

/*
32位操纵体系有个很年夜的缺点,使用程序没法会见年夜于4G的历程地点空间,由于32位的指针没法保留年夜于4G的地点空间
假如年夜于4G,则必要利用地点窗口化扩大插件(AWE),详细操纵以下:
1,启植物理地点扩大
(1)找到C:oot.ini,并删除其只读属性.
(2)编纂boot.ini,在ARC路径中增加/PAE参数.比方:
在windowsServer2003EnterpriseEdition中,编纂后的ARC路径以下:
muti(0)disk(0)partition(1)windows="windowsServer2003Enterprise,Edition"/fastdetect/PAE
保留后将其恢复为只读形式,然后从头启动盘算机。

假如盘算机上的可用物理内存凌驾16G,应确保boot.ini文件中没有/3gb参数
*/

--★★怎样启动AWE选项:★★★★★★★★★★★★★★★★★★

sp_configureshowadvancedoptions,1
reconfigure
go
sp_configueaweenabled,1
reconfigure
go

--★★手动设置内存选项:★★★★★★★★★★★★★★★★★★

sp_configureshowadvancedoptions,1
go
reconfigure
go
sp_configureminservermemory--服务器最小内存
sp_configuremaxservermemory--服务器最年夜内存
sp_configureindexcreatememory--创立索引占用的内存
sp_configureminmemoryperquery--每次查询占用的最小内存


--★★猎取磁盘读写情形:★★★★★★★★★★★★★★★★★★

select
@@total_readas读取磁盘的次数,
@@total_writeas写进磁盘的次数,
@@total_erroras磁盘写进毛病数,
getdate()as以后工夫

--★★猎取数据库文件的I/O统计信息:★★★★★★★★★★★★★★★★★★

select*fromfn_virtualfilestats(null,null)

--★★猎取I/O事情情形:★★★★★★★★★★★★★★★★★★

select
@@id_busy,--SQL自前次启动以来的用于实行输出和输入操纵的工夫
@@timeticks,--每一个时钟周期对应的微秒数
@@id_busy*@@timeticksasI/O操纵毫秒数,
getdate()as以后工夫

--★★检察SQLSEVERCPU举动,事情情形:★★★★★★★★★★★★★★★★★★

select
@@cpu_busy,--自前次启动以来的事情工夫
@@timeticks,--每一个时钟周期对应的微秒数
@@cpu_busy*cast(@@timeticksasfloat)/1000ascpu事情工夫(秒),
@@idie*cast(@@timeticksasfloat)/1000asCPU余暇工夫(秒)
getdate()as以后工夫

--★★猎取收集数据包统计信息:★★★★★★★★★★★★★★★★★★

select
getdate()as以后工夫,
@@pack_receivedas输出数据包数目,
@@pack_sentas输入数据包数目,
@@packet_erroras毛病包数目


--★★检察服务器事情形态:★★★★★★★★★★★★★★★★★★

createfunctionfgetsstatus(
@servernamevarchar(50)--服务器名
,@useridvarchar(50)=sa--用户名,假如为nt考证体例,则为空
,@passwordvarchar(50)=--暗码

)returnsvarchar(20)
as
begin
declare@revarchar(20),@ireint--前往形态
declare@srvidint--界说服务器、数据库集id
declare@errint,@srcvarchar(255),@descvarchar(255)--毛病处置变量

--★★创立sqldmo工具:★★★★★★★★★★★★★★★★★★

exec@err=sp_oacreatesqldmo.sqlserver,@srvidoutput
if@err0gotolberr

--★★毗连服务器:★★★★★★★★★★★★★★★★★★

ifisnull(@userid,)=--假如是Nt考证体例
begin
exec@err=sp_oasetproperty@srvid,loginsecure,1
if@err0gotolberr

exec@err=sp_oamethod@srvid,connect,null,@servername
end
else
exec@err=sp_oamethod@srvid,connect,null,@servername,@userid,@password

if@err0gotolberr

--★★猎取服务器形态:★★★★★★★★★★★★★★★★★★

exec@err=sp_oagetproperty@srvid,Status,@ireoutput
if@err0gotolberr

set@re=case@irewhen0then未知
when1then运转...
when2then停息
when3then中断...
when4then正在启动...
when5then正在启动中断...
when6then毗连...
when7then正在停息...end
return(@re)
lberr:
execsp_oageterrorinfoNULL,@srcout,@descout
declare@errbvarbinary(4)
set@errb=cast(@errasvarbinary(4))
execmaster..xp_varbintohexstr@errb,@reout
set@re=毛病号:+@re
+char(13)+毛病源:+@src
+char(13)+毛病形貌:+@desc
return(@re)
end
go

selectdbo.fgetsstatus(192.168.102.208,sa,sa)

--------------------
--运转...

--★★猎取服务器形态:★★★★★★★★★★★★★★★★★★

ifobject_id(tb)isnotnulldroptabletb
go
createtabletb(
表名sysname,
纪录数int,
保存空间nvarchar(10),
利用空间varchar(10),
索引利用空间varchar(10),
未用空间varchar(10))
execsp_MSForEachTable@command1=Ninserttbexecsp_spaceused?

select*fromtb

--★★检察服务器版本:★★★★★★★★★★★★★★★★★★

SELECT
SERVERPROPERTY(productversion),
SERVERPROPERTY(productlevel),
SERVERPROPERTY(edition)

--★★检察数据库脱机工夫:★★★★★★★★★★★★★★★★★★

EXECsp_configureshowadvancedoptions,1
RECONFIGURE
go
EXECsp_configurexp_cmdshell,1
RECONFIGURE
GO
selecta.name,a.database_id,a.create_date,b.physical_nameinto#a
fromsys.databasesaleftjoinsys.master_filesbon
a.database_id=b.database_idwherehas_dbaccess(a.name)1andb.type=1

createtable#b(infovarchar(500))
declare@stringvarchar(max)
set@string=
select@string=@string+insertinto#bexecxp_cmdshelldir+physical_name++char(13)+char(10)from#a
execute(@string)

selecta.name,substring(b.info,0,20)as脱机工夫,a.database_id,a.create_date,a.physical_name
from#aaleftjoin#bbon
REVERSE(substring(REVERSE(physical_name),0,charindex(,REVERSE(physical_name))))
=REVERSE(substring(REVERSE(info),0,charindex(,REVERSE(info))))

droptable#a,#b
go
EXECsp_configurexp_cmdshell,0
RECONFIGURE
go
EXECsp_configureshowadvancedoptions,0
RECONFIGURE
go

/*

1.检察数据库的版本

select@@version

2.检察数据库地点呆板操纵体系参数.

execmaster..xp_msver..

3.检察数据库启动的参数!

sp_configure
4.检察数据库启动工夫.

selectconvert(varchar(30),login_time,120)frommaster..sysprocesseswherespid=1

检察数据库服务器名和实例名.

printServerName...............:+convert(varchar(30),@@SERVERNAME).

printInstance..................:+convert(varchar(30),@@SERVICENAME)...

5.检察一切数据库称号及巨细

sp_helpdb。

重定名数据库用的SQL

sp_renamedbold_dbname,new_dbname

6.检察一切数据库用户登录信息..

sp_helplogins

检察一切数据库用户所属的脚色信息

sp_helpsrvrolemember!

修复迁徙服务器时伶仃用户时,能够用的fix_orphan_user剧本大概LoneUser历程.

变动某个数据工具的用户属主

sp_changeobjectowner[@objectname=]object,[@newowner=]owner.

注重:变动工具名的任一部分都大概损坏剧本和存储历程。

把一台服务器上的数据库用户登录信息备份出来能够用add_login_to_aserver剧本

7.检察链接服务器...

sp_helplinkedsrvlogin

检察远端数据库用户登录信息。

sp_helpremotelogin..

8.检察某数据库下某个数据工具的巨细!

sp_spaceused@objname

还能够用sp_toptables历程看最年夜的N(默许为50)

*/

--★★检察功课实行情形:★★★★★★★★★★★★★★★★★★

selectcategory=jc.name,
category_id=jc.category_id,
job_name=j.name,
job_enabled=j.enabled,
last_run_time=cast(js.last_run_dateasvarchar(10))+-+cast(js.last_run_timeasvarchar(10)),
last_run_duration=js.last_run_duration,
last_run_status=js.last_run_outcome,
last_run_msg=js.last_outcome_message+cast(nullif(js.last_run_outcome,1)asvarchar(2)),
job_created=j.date_created,
job_modified=j.date_modified
frommsdb.dbo.sysjobsj
innerjoinmsdb.dbo.sysjobserversjs
onj.job_id=js.job_id
innerjoinmsdb.dbo.syscategoriesjc
onj.category_id=jc.category_id
wherej.enabled=1
andjs.last_run_outcomein(0,1,3,5)--0:Fail1:Succ3:Cancel5:Firstrun
andjc.category_idnotbetween10and20--repl

--★★查询数据库db中表tb的一切索引的随片情形:★★★★★★★★★★★★★★★★★★

usedb
go
select
a.index_id,---索引编号
b.name,---索引称号
avg_fragmentation_in_percent---索引的逻辑碎片
from
sys.dm_db_indx_physical_stats(db_id(),object_id(Ncreate.consume),null,null,null)asa
join
sys.indexesasb
on
a.object_id=b.object_id
and
a.index_id=b.index_id
go

--★★用户成员权限:★★★★★★★★★★★★★★★★★★

USEpubs

--创立脚色r_test
EXECsp_addroler_test

--授与r_test对jobs表的一切权限
GRANTALLONjobsTOr_test
--授与脚色r_test对titles表的SELECT权限
GRANTSELECTONtitlesTOr_test

--增加登录l_test,设置暗码为pwd,默许数据库为pubs
EXECsp_addloginl_test,pwd,pubs

--为登录l_test在数据库pubs中增加平安账户u_test
EXECsp_grantdbaccessl_test,u_test

--增加u_test为脚色r_test的成员
EXECsp_addrolememberr_test,u_test

--回绝平安账户u_test对titles表的SELECT权限
DENYSELECTONtitlesTOu_test

/*--完成上述步骤后,用l_test登录,能够对jobs表举行一切操纵,但没法对titles表查询,固然脚色r_test有titles表的select权限,但已在平安账户中明白回绝了对titles的select权限,以是l_test无titles表的select权限--*/

--从数据库pubs中删除平安账户
EXECsp_revokedbaccessu_test

--删除登录l_test
EXECsp_droploginl_test

--删除脚色r_test
EXECsp_droproler_test

由于MySQL数据库已经如此普及,对企业来说它无疑是一个更好的选择。

谁可相欹 发表于 2015-1-19 06:17:55

having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。

不帅 发表于 2015-1-25 17:36:27

groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。

小魔女 发表于 2015-2-3 12:17:10

微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。

老尸 发表于 2015-2-8 22:11:20

也可谈一下你是怎么优化存储过程的?

因胸联盟 发表于 2015-2-26 11:56:10

另一个是把SQL语句写到服务器端,就是所谓的SP(存储过程);

金色的骷髅 发表于 2015-3-8 14:50:29

一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。

活着的死人 发表于 2015-3-16 02:55:52

having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。

第二个灵魂 发表于 2015-3-22 19:15:46

另一个是把SQL语句写到服务器端,就是所谓的SP(存储过程);
页: [1]
查看完整版本: MYSQL网页编程之数据库中常常用到的操纵和办理数据库的...