仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 686|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL网页编程之SQL Server 7.0 进门(三)

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:25:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
刚安装好的MySql包含一个含空密码的root帐户和一个匿名帐户,这是很大的安全隐患,对于一些重要的应用我们应将安全性尽可能提高,在这里应把匿名帐户删除、root帐户设置密码server数据排序
ORDERBY子句按指定的按次对数据排序(orderingdata)。它请求一个列名字列表或非负整数列表来指定列的地位。分离用ASC代表升序,DESC代表降序,默许为ASC。

限定前往行的数量
不利用WHERE子句而限定了局中的行数是大概的。“TOP”子句能按指定命目或百分值来限定行数。

数据分组和盘算聚合函数
聚合(aggregate)函数盘算表中数据的总和。SQLServer供应以下的聚合函数:
・AVG这个函数盘算均匀值。语法以下:
AVG([ALL|DISTINCT]expression)
关头字DISTINCT只用来盘算分歧值的均匀值,假如有很多反复值,这些值只盘算一次,默许为ALL。
Expression能够是触及一列或多列的算术表达式。
・MIN这个函数查找所供应表达式中的最小值。语法以下:
MIN(expression)
・MAX此函数的功效是在供应的表达式中查找最年夜值。语法以下:
MAX(expression)
注重:假如地字符串范例利用MIN和MAX,则输入依附于为SQLServer界说的按次。MIN和MAX不克不及在位上利用。
・SUMSUM盘算一切数据值的和。语法以下:
SUM([ALL|DISTINCT]expression)
注重:SUM和AVG只能用于数值数据范例。
・COUNT盘算表达式值的数量。语法以下:
COUNT([ALL|DISTINCT]expression)
COUNT有另外一种用法,它能够前往被选择的行数。
如:SELECTNumRows=COUNT(*)FROMtitles
聚合函数疏忽一切空值,但COUNT(*)除外。只管一切聚合函数的盘算基于无空值的情形,但是COUNT(*)盘算一切的行(包含有空值的行)。

1.GROUPBY子句
GROUPBY子句在被界说的数据的基本上创建对照小的组,而且对每个组举行聚合函数盘算。换句话说,它发生每组的整体信息。GROUPBY能够把多于一列当做组合列(GroupingColumns)。它总结组合列中不反复值的信息。
利用了GROUPBY子句的选择列表中只能包括以下项:
・常量值。
・组合列。
・表达式。每一个表达式为每组前往一个值(如聚合函数)。假如一列除在组合列中外,还在选择列表中,则它有多个值给组合列的每个不反复值,这类布局范例是不同意的。
2.GROUPBY和HAVING
HAVING子句用来向利用GROUPBY子句的查询中增添数据过滤原则。HAVING的用法和SELECT中的WHERE子句一样。在一个包括GROUPBY子句的查询中利用WHERE子句是能够的。HAVING和WHERE有不异的语法。HAVING和WHERE的分歧这处是:
・在WHERE子句中,在分组举行之前,往除不满意前提的行,在HAVING子句中,在分组以后前提被使用。
・HAVING可在前提中包括聚合函数,但WHERE不克不及。
注重:GROUPBY和HAVING子句不克不及利用文本或图象数据范例。
3.COMPUTEBY子句
COMPUTEBY子句能够失掉具体或总的纪录。它把数据分红较小的组,然后为每组创建具体纪录了局数据集(象SELECT),它也可为每组发生总的纪录(象GROUPBY)。
在COMPUTBY中,界说BY子句不是需要的。假如没有界说BY子句,则以为全部表为一个组,而且只要两个了局数据集发生,一个具有一切具体纪录,另外一个只要一行,它具有总纪录。
注重:当在COMPUTE中利用BY时,则请求在一切组合列中包括ORDERBY。

Cube和Rollup操纵
CUBE和ROLLUP操纵可比复杂的GROUPBY发生更多的聚合值。在发生交织标签呈报(crosstabreports)时,这些操纵十分有效。假如查询利用n个组合列,则有2n个盘算聚合的组合。

从多个表中会见数据
我们已会商了怎样会见单个表中的数据。从多个表中会见数据也是大概的。从多个表中会见数据称为毗连表(joiningatable)。
1、CROSSJOIN(笛卡尔积)
CROSSJOIN是复杂地、不加任何束缚前提地把表组合。CROSSJOIN后了局的行数是毗连前两个表行数的乘积。假如对两个分离有好几千行的表举行毗连,则了局是不成设想的。
2、INNERJOIN
INNERJOIN是组合两个表最经常使用的办法。INNERJOIN是基于一个辨别式举行的,这个辨别式称为毗连前提。毗连前提和WHERE子句一同界说。毗连前提由来自两个表中的列构成,并利用一个对照前提来对列的值举行对照。经由过程对照的值包括在了局数据会合,以下是InnerJOIN的语法:
语法1:(ANSI92)
Select<select_list>
FROM<table1>INNERJOIN<table2>
ON<table1>.<columnname>=<table2>.<columnname>
语法2:
Select<select_list>
FROM<table1>,<table2>WHERE<table1>.<columnname>=<table2>.<columnname>
在FROM子句中可为表界说别号,并在任何中央都可用别号取代真名。
注重:假如作为毗连前提的列中有空值,则空值不克不及和任何值婚配,因而了局中不包括有空值的行。
3、LeftOuterJOIN
在InnerJOIN中,只要在两个表中婚配的行才干在了局数据会合。但在LeftOuterJOIN中,一切右边表中的行都呈现在了局数据会合,假如右边表中的某一行在右侧表中没有婚配的行,则以空值代替右侧表中的值和它毗连。
语法以下:(ANSI92)
Select<select_list>
FROM<table1>LEFTOUTERJOIN<table2>
ON<table1>.<columnname>=<table2>.<columnname>
4、RightOuterJOIN
RightOutJOIN和LeftOuterJOIN类似,分歧的是把右侧的表作为内部表(一切右侧表中的行包括在了局数据会合)。
语法以下:
Select<select_list>
FROM<table1>RIGHTOUTERJOIN<table2>
ON<table1>.<columnname>=<table2>.<columnname>
5、FullOuterJOIN
在FullOuterJOIN中,一切两个表中的行都包括在了局数据会合。
语法以下:
Select<select_list>
FROM<table1>FULLOUTERJOIN<table2>
ON<table1>.<columnname>=<table2>.<columnname>

Case语句
当对分歧前提发生分歧的了局值时,可以使用Case语句。
Case语句盘算一切界说的前提,并按前提是不是为真而前往了局。
语法以下:
CASE[<input_expression>]
WHEN<when_expression>THEN<result_expression>
[ELSE<else_expression>]
END
Input_expression是任何无效的SQLServer表达式或布尔表达式。
When_expression是任何无效的SQLServer表达式或布尔表达式。这个表达式和Input_expression对照,假如Input_expression没有界说,则When_expression应当是一个布尔表达式。
Result_expression是任何无效的SQLServer表达式。假如When_expression和Input_expression的对照前往TRUE(假如界说了Input_expression)或When_expression的值为TRUE,则盘算表达式,并前往其了局。不然盘算Else_expression中的表达式,并前往其了局。
比方:
SELECTau_fname,au_lname,
State=CASEstate
WHEN‘CA’THEN‘California’
WHEN‘KS’THEN‘Kansas’
END
FROMauthors


UNION

UNION语句把两个或多个查询的了局组分解一个了局集。
语法以下:
SELECT<select_list>
FROM<table_list>
WHERE<join_condition>
UNION[ALL]
SELECT<table_list>
FROM<table_list>
WHERE<join_condition>
ALL关头字指定反复的数据也将包括在终极了局数据会合。假如必要,一个查询中能够有很多UNION语句。一切Select_list应当有不异数量的列,且是不异或兼容的数据范例。

Go命令Go命令用来标记一个查询批处置(querybatch)的停止。查询批处置是TSQL语句的汇合,这些语句汇合在一同实行。Go与Osql或SQLServerQueryAnalyzer一同利用。
我们分析上面的两个操作,都有一个“删除数据”的过程。
金色的骷髅 该用户已被删除
沙发
发表于 2015-1-19 11:33:50 | 只看该作者
SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.
飘飘悠悠 该用户已被删除
板凳
发表于 2015-1-25 11:55:14 | 只看该作者
这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。
灵魂腐蚀 该用户已被删除
地板
发表于 2015-2-2 22:01:53 | 只看该作者
分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。
简单生活 该用户已被删除
5#
发表于 2015-2-8 09:08:48 | 只看该作者
Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。
再见西城 该用户已被删除
6#
发表于 2015-2-25 08:20:40 | 只看该作者
再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SETNULL和SETDEFAULT属性,能够提供能好的级联设置。
再现理想 该用户已被删除
7#
发表于 2015-3-7 18:10:13 | 只看该作者
现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.
飘灵儿 该用户已被删除
8#
发表于 2015-3-15 11:06:57 | 只看该作者
多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油
admin 该用户已被删除
9#
发表于 2015-3-22 00:26:31 | 只看该作者
入门没那么困难,精通没那么容易
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 23:34

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表