欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    SQL函数和子句.docx

    • 资源ID:8894378       资源大小:24.03KB        全文页数:12页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    SQL函数和子句.docx

    1、SQL函数和子句在这篇文章里,我们将就其他一些SQL函数和子句进行阐述,供你用于基本的SELECT数据查询中。 SELECT选项精制结果 正如我们从上一篇文章中所读到的那样,SELECT语句具有种类繁多的各类选项,这些选项可以用来控制数据返回的方式。这些选项以子句、关键词和函数的形式存在。 子句是一种修改结果的语句。子句不是必要的语句但它对数据的内容及其显示进行了提炼。WHERE子句就是这样的子句。 关键词触发数据库的内在功能。这些关键词在有时甚至是查询所必需的。例如“INSERT INTO table_name (column1) VALUES (data1);”语句中的INTO和VALUE

    2、就是如此。我们将了解DISTINCT关键词,它能触发一些非常有用的可选功能。 下面总结了一些最常用的子句、关键词和函数。然后我会对每一部分举例说明。 ORDER BY 按照指定列排序返回结果的子句 DISTINCT 只返回结果集合内唯一行的关键词COUNT - 返回匹配查询的数据行总数数值的函数AVG 该函数返回指定列的平均值 SUM 该函数把指定的列中的数字加起来 MIN 该函数返回列中最小的非NULL值 MAX 该函数返回列中的最大值 GROUP BY 按列汇集查询函数结果的子句 用ORDER BY对查询结果排序 ORDER BY子句让数据库对查询结果排序,这样你就无须自己编写应用程序进行

    3、“手工”排序了。ORDER BY子句必须放在查询语句的结尾。其基本用法如下: SELECT * FROM Contacts ORDER BY first_name; 你可以随意在任何选择语句中使用ORDER BY 子句返回多列结果。你还可以用它连接其他子句: SELECT first_name, last_name FROM Contacts WHERE first_name BETWEEN a AND k ORDER BY last_name; 你可以对多列数据排序。优先顺序按从左到右依次降低,所以查询语句中各列的排列顺序很重要。 SELECT * FROM Contacts ORDER B

    4、Y company, last_name, first_name; 查询结果默认按数字或者字母的升序排序。你可以在ORDER BY 子句后面加上DESC关键词改成降序排列。在下面的例子中,最高的net_amount排在最先(降序)。假如两行或者两行以上数据都包含了同样的net_amount值,那么同行中last_name值在字母表中最先出现的排先,因为last_name一列还是按照升序排序的。 SELECT * FROM Sales ORDER BY net_amount DESC, last_name, first_name; 在按照定义的列名排序以后,大多数数据库随后将按照数据表内的第一列

    5、排序然后顺序向右再排序。具体的实现各有变化,因此,如果排序在应用中比较重要那么你应该明确地定义所要排序的列。 另外一值得注意的问题是,采用ORDER BY子句(以及WHERE子句),你正在用来排序结果的数据列并不一定得是返回结果集合的一部分。只要所有引用的列都在数据表内存在则下例完全有效: SELECT company, first_name, net_amount FROM Sales ORDER BY start_date, last_name; DISTINCT返回不重复结果 DISTINCT关键词只返回结果集合内不重复的数据行。例如,有时你可能需要找出Sales表内的公司,但是你又不想

    6、看见每个条目。于是你可以用DISTINCT对应每一公司名返回一行数据: SELECT DISTINCT company FROM Sales; 在使用DISTINCT时,它适用于所有的请求列。如果你打算列出表内的所有销售人员和他们所代表的公司而非每一销售记录,那么你可以使用下列语句。注意,这样操作还可能返回同一公司的若干条目等等。 SELECT DISTINCT company, last_name, first_name FROM Sales; 你还可以在对结果缩小范围和进行排序时结合SELECT语句使用DISTINCT。为了确定显示的内容,数据库首先会证实精练的请求是否匹配数据行,然后应用

    7、DISTINCT功能。在全部结果集合都得以确定之后即处理ORDER BY子句。如下例所示,只有net_amount大于100的数据行才被返回。由于DISTINCT保留遇见的第1个匹配查询条件的数据行而丢弃其他匹配行,所以ORDER BY语句所引用的net_amount看起来就好象产生了随机的结果。 SELECT DISTINCT company, last_name, first_name FROM Sales WHERE net_amount 100 ORDER BY company, net_amount; 函数应用逻辑 返回单一值的函数称做聚集函数(aggregate function)

    8、。通过应用程序访问下列聚集函数的结果时,包含结果的“字段名”就是你所使用的实际函数。例如,在分析你的数据库结果时,结果数组的键值可能如下所示: $keyname = “COUNT(*)”; $resultkey = “AVG(net_amount)”; COUNT COUNT函数计算出结果集合中的数据行数。和其他函数一样它接受一个参数。以下的基本示例能告诉你数据表内的行数:SELECT COUNT(*) FROM Sales; 你也可以用它来计算任何结果集合中的行数。 SELECT COUNT(*) FROM Sales WHERE net_amount 100; 如果你想看看某特定列有多少行

    9、包含非空值,那你不妨对该列使用COUNT函数。注意,除非数据库设置为字段为空时缺省填充NULL否则将返回表内数据行的总数。另外,列出的列在超出一个的情况下会引起错误。 SELECT COUNT(company) FROM Sales; COUNT还可以用来计算DISTINCT结果集合中的行数。 SELECT COUNT(DISTINCT company, last_name) FROM Sales; COUNT语句通常用在程序中确定FOR循环的循环次数。 AVG AVG返回某列所有字段的平均值,该列必须是数字数据类型。该函数用列的名字作为其参数,如果列字段数据类型是非数字类型的则函数返回“0”

    10、。SELECT AVG(net_amount) FROM Sales; 你可以结合子句限制该函数的应用范围。 SELECT AVG(net_amount) FROM Sales WHERE company LIKE %ABCD Co%; 就象所有聚集函数一样,ORDER BY语句将被忽略。 SUM SUM的工作方式和AVG差不多,只不过该函数返回结果集合中所有字段值的和。 SELECT SUM(net_amount) FROM Sales WHERE net_amount 100; AVG、SUM、MIN和MAX函数在没有指定列的情况下都会返回错误,所以你不能使用“*”通配符。 MIN MIN

    11、返回指定列中最小的非空值。如果指定列是数字数据类型则结果将是最小的数字。如果它是一种字符串数据类型则函数将返回按字母表顺序出现的第1个值。SELECT MIN(net_amount) FROM Sales WHERE last_name = “Smith”; SELECT MIN(last_name) FROM Sales; MAX MAX的工作方式和MIN函数一样,只不过该函数返回最大的非空值。该函数也可以用于字符串或者数字列 SELECT MAX(net_amount) FROM Sales; SELECT MAX(company) FROM Sales WHERE net_amount

    12、100; MAX函数有时还用在包含自动递增键字段的列上确定下一条目的键ID。除非你正在运行一个非公开的数据库,否则在使用这一信息插入下一条目时务必谨慎,以防其他用户先你执行数据操作。 GROUP BY 令函数更有用 虽然以上提到的所有这些函数都能提供相当有用的信息,但是,如果有GROUP BY子句帮忙的话更能让你在列的字段子集中应用这些函数。不要对你的Sales表中每一家公司一次又一次地执行MAX函数查询你完全可以带GROUP BY子句获得同样的结果: SELECT company, MAX(net_amount) FROM Sales GROUP BY company; 这样做可以获得每家公

    13、司net_amount的的最大值。在选择多列名的时候也可以采用该语句,你还可以用多列来对函数结果分组。 下面的例子演示了以上各种方式。首先,包括GROUP BY子句可以令你指定要显示的其他列。然而,你得知道这个例子将返回在组中遇到的第1个last_name值;Sum( net_amount )将显示全部公司的结果而不仅仅针对匹配姓氏的数据行。这是因为,我们只使用了Company字段来定义我们的组。 SELECT company, last_name, SUM(net_amount) FROM Sales GROUP BY company; 在上面的例子中,last_name列实际上并没有提供什

    14、么有用的信息,但这样做是为了在下一个例子中要用到的功能做准备。你可以创建多列定义的组。这样就可以在结果集合中产生针对特定行的函数结果,而结果集合则是由所有指定的GROUP BY列联合起来创建的: SELECT company, AVG(net_amount), last_name FROM Sales GROUP BY company, last_name; 上面的例子给每家公司中每一姓氏给出了平均的net_amount。你列出GROUP BY列的顺序控制着结果的排序,但是实际的函数值结果是一样的。 下面的例子表明如何组织结果而不显示分组的列。在有些场合这样做是很有用的,例如,如果要显示个人的

    15、销售量但却不显示姓名就能用上下面的例子了: SELECT company, COUNT(sale_id) FROM Sales GROUP BY company, last_name; 限制使用GROUP BY的查询 如你在以上示例中所看到的那样,你可以结合WHERE字句利用以上的概念限制查询的范围。WHERE子句会首先被计算,然后执行函数。在使用组的时候就是这样的。 SELECT company, AVG(net_amount), FROM Sales WHERE net_amount 100 GROUP BY company; 上面的例子只对那些满足WHERE限制条件的数据行适用AVG函数

    16、。注意,WHERE子句必须放在GROUP BY子句之前。你还可以用HAVING语句对分组计算之后限制返回的结果集合。 SELECT company, AVG(net_amount), FROM Sales WHERE last_name BETWEEN a AND m GROUP BY company HAVING AVG(net_amount) 500; 上面的语句计算每家公司net_amount的平均值,而且只计算那些姓氏满足限制条件的销售人员的销售量,同时只显示大于500的结果。select a.编号,a.客户姓名,a.职位代码,b.职位描述,c.企业代码,c.企业类型描述 from 表

    17、1 a,表2 b, 表3 c where a.职位代码=b.职位代码 and a.企业类型代码=c.企业代码 order by a.编号常用 SQL 语句大全-语 句 功 能-数据操作SELECT -从数据库表中检索数据行和列INSERT -向数据库表添加新数据行DELETE -从数据库表中删除数据行UPDATE -更新数据库表中的数据-数据定义CREATE TABLE -创建一个数据库表DROP TABLE -从数据库中删除表ALTER TABLE -修改数据库表结构CREATE VIEW -创建一个视图DROP VIEW -从数据库中删除视图CREATE INDEX -为数据库表创建一个索

    18、引DROP INDEX -从数据库中删除索引CREATE PROCEDURE -创建一个存储过程DROP PROCEDURE -从数据库中删除存储过程CREATE TRIGGER -创建一个触发器DROP TRIGGER -从数据库中删除触发器CREATE SCHEMA -向数据库添加一个新模式DROP SCHEMA -从数据库中删除一个模式CREATE DOMAIN -创建一个数据值域ALTER DOMAIN -改变域定义DROP DOMAIN -从数据库中删除一个域-数据控制GRANT -授予用户访问权限DENY -拒绝用户访问REVOKE -解除用户访问权限-事务控制COMMIT -结束

    19、当前事务ROLLBACK -中止当前事务SET TRANSACTION -定义当前事务数据访问特征-程序化SQLDECLARE -为查询设定游标EXPLAN -为查询描述数据访问计划OPEN -检索查询结果打开一个游标FETCH -检索一行查询结果CLOSE -关闭游标PREPARE -为动态执行准备SQL 语句EXECUTE -动态地执行SQL 语句DESCRIBE -描述准备好的查询 -局部变量declare id char(10)-set id = 10010001select id = 10010001 -全局变量-必须以开头-IF ELSEdeclare x int y int z

    20、intselect x = 1 y = 2 z=3if x yprint x y -打印字符串x yelse if y zprint y zelse print z y-CASEuse panguupdate employeeset e_wage =casewhen job_level = 1 then e_wage*1.08when job_level = 2 then e_wage*1.07when job_level = 3 then e_wage*1.06else e_wage*1.05-WHILE CONTINUE BREAKdeclare x int y int c intsele

    21、ct x = 1 y=1while x 3beginprint x -打印变量x 的值while y 3beginselect c = 100*x + yprint c -打印变量c 的值select y = y + 1endselect x = x + 1select y = 1end -WAITFOR-例 等待1 小时2 分零3 秒后才执行SELECT 语句waitfor delay 01:02:03select * from employee-例 等到晚上11 点零8 分后才执行SELECT 语句waitfor time 23:08:00select * from employee*SE

    22、LECT*select *(列名) from table_name(表名) where column_name operator valueex宿主)select * from stock_information where stockid = str(nid)stockname = str_name stockname like % find this % stockname like a-zA-Z% - (指定值的范围)stockname like F-M% - (排除指定范围)- 只能在使用like关键字的where子句中使用通配符)or stockpath = stock_pathor

    23、 stocknumber 1000and stockindex = 24not stock* = manstocknumber between 20 and 100stocknumber in(10,20,30)order by stockid desc(asc) - 排序,desc-降序,asc-升序order by 1,2 - by列号stockname = (select stockname from stock_information where stockid = 4)- 子查询- 除非能确保内层select只返回一个行的值,- 否则应在外层where子句中用一个in限定符selec

    24、t distinct column_name form table_name - distinct指定检索独有的列值,不重复select stocknumber ,stocknumber + 10 = stocknumber + 10 from table_nameselect stockname , stocknumber = count(*) from table_name group by stockname- group by 将表按行分组,指定列中有相同的值having count(*) = 2 - having选定指定的组select * from table1, table2 w

    25、here table1.id *= table2.id - 左外部连接,table1中有的而table2中没有得以null表示table1.id =* table2.id - 右外部连接 select stockname from table1union all - union合并查询结果集,all-保留重复行select stockname from table2*insert*insert into table_name (Stock_name,Stock_number) value (xxx,xxxx)value (select Stockname , Stocknumber from

    26、Stock_table2)-value为select语句*update*update table_name set Stockname = xxx where Stockid = 3Stockname = defaultStockname = nullStocknumber = Stockname + 4*delete*delete from table_name where Stockid = 3truncate table_name - 删除表中所有行,仍保持表的完整性drop table table_name - 完全删除表*alter table* - 修改数据库表结构alter ta

    27、ble database.owner.table_name add column_name char(2) null .sp_help table_name - 显示表已有特征create table table_name (name char(20), age smallint, lname varchar(30)insert into table_name select . - 实现删除列的方法(创建新表)alter table table_name drop constraint Stockname_default - 删除Stockname的default约束*function(/*常

    28、用函数*/)*-统计函数-AVG -求平均值COUNT -统计数目MAX -求最大值MIN -求最小值SUM -求和-AVGuse panguselect avg(e_wage) as dept_avgWagefrom employeegroup by dept_id-MAX-求工资最高的员工姓名use panguselect e_namefrom employeewhere e_wage =(select max(e_wage)from employee) -STDEV()-STDEV()函数返回表达式中所有数据的标准差-STDEVP()-STDEVP()函数返回总体标准差-VAR()-VA

    29、R()函数返回表达式中所有值的统计变异数-VARP()-VARP()函数返回总体变异数-算术函数-/*三角函数*/ SIN(float_expression) -返回以弧度表示的角的正弦COS(float_expression) -返回以弧度表示的角的余弦TAN(float_expression) -返回以弧度表示的角的正切COT(float_expression) -返回以弧度表示的角的余切/*反三角函数*/ ASIN(float_expression) -返回正弦是FLOAT 值的以弧度表示的角ACOS(float_expression) -返回余弦是FLOAT 值的以弧度表示的角ATAN(float_expression) -返回正切是FLOAT 值的以弧度表示的角ATAN2(float_expression1,float_expression2) -返回正切是float_expression1 /float_expres-sion2的以弧度表示的角DEGREES(numeric_expression)-把弧度转换为角度返回与表达式相同的数据类型可为-INTEGER/MONEY/R


    注意事项

    本文(SQL函数和子句.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开