马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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一同利用。
我们分析上面的两个操作,都有一个“删除数据”的过程。 |