SQL中的子句

    学习了数据库视频已有一个星期,没有进行实际操作,安装了SQLServer可是不知道怎么编写代码。对数据库还是没有什么概念。又返回去,把前面的15集再看了一遍,有了一些印象,对子句比较感兴趣。做了一个子句的小结:


Select[All| Distinct]

 

   [Top n]·<select_list>表示需要检索的字段的列表,字段名称之间用逗号分隔(姓名、性别、学号···)

·All:指明查询结果中可以显示值相同的列All是系统默认的。

·Distinct:指明查询结果中如果有值相同的列,则只显示其中的一列。

·Top n[percent]:返回查询结果的前n行数据,如果Percent关键字指定的话,则返回查询结果的前百分之n行数据。

·select*:全部显示出来

 

·Into子句

  Select···Into句式不能与Compute子句一起使用,语法:

Into  new_table(new_table是新建的表的名称)  

 

·From子句  

   From子句指定需要进行数据查询的表只要Select子句中有要查询的列就必须使用From子句。语法:

 

From{<table_source>}[,···n]

 

Table_source:指明Select语句要用到的表、视图等数据源,该表中的数据表名和视图名之间使用逗号分隔例:SelectEmp.员工编号,emp.员工姓名,sp.部门名称

 

From 员工数据表as emp,

 

(Select  部门数据表.部门编号,部门数据表.部门名称

     From 部门数据表

     Where 部门数据表.部门编号>2)as sp

     Where emp.部门编号=sp.部门编号

注:sp是别名

 

·Where子句

Where子句指定数据检索的条件,以限制返回的数据行。

where子句中查询条件比较运算符:<、<=、>=、>、=

范围说明:BetweenAand B、NotBetween A and B

可选值列表:IN、Notin

模式匹配:Like,Notlike

是否空值: Is  Null、Is Not Null

上述条件的逻辑组合:And、or、Not

 

例子:查询工资介于2000元和3000元之间的员工姓名   select e_name

 from employee

Where e_wage between2000and 3000

 

            运行结果如下e_name

 

王二

伍将

 

(2row(s) affected)·Groupby 子句Groupby子句指定查询结果的分组条件。其语法如下:Group by[All] group_by_expression [,···n]

 

[with {cube  | rollup}]

注:   group_by_expression:指明分组条件  

group_by_expression通常是一个列名,但不能使列的别名。

数据类型为Text、Ntext、Image或Bit类型的列不能作为分组条件。

 All:返回所有可能的查询结果组合,即使此组合中没有任何满足Where子句的数据。分组的统计列如果不满足查询条件,则将由Null值构成其数据。All选项不能与Cube或Rollup选项同时使用。

  Cube:除了返回Groupby子句指定的列外,还返回按组统计的行。返回的结果先按分组的第一个条件排序显示,再按第二个条件列排序显示。以此类推。

 Rollup:与Cube不同的是,此选项对Groupby子句中的列顺序敏感,它只返回第一个分组条件指定的统计行,改变列的顺序回事返回的结果的行数发生变化。例子:查询工作级别为2的员工姓名,查询结果按部门分组Selecte_name,dept_id

 

Fromemployee

Wherejob_level='2'

Groupbydept_id,e_name

运行结果如下e_namedept_id

 

————

 

李四   1001

张龙   1002

 ·having子句

指定分组搜索条件。Having子句通常与Groupby一起使用。Text、Ntext和Image数据类型不能用于Having子句。语法:

Having<srearch_condition>

Having子句作用于组例子:查询有多个员工工资不低于6000的部门编号

 

Select  dept_id,count(*)

Fromemployee

Wheree_wage >=6000

Groupby dept_id

Havingcount(*)>1   /*符合条件的记录行数 运行结果如下:Dept_id*/

 

————

 

1004   2

 

1005   3

 

(2 row(s) affected)

 

 ·Orderby子句

Orderby{order_by_expression[ASC  |desv]}[,…n]

例子:查询工作级别为2的员工姓名,查询结果按工资排序Selecte_name

 

Fromemployee

 

Wherejob_level='2'

 

Orderby e_wage

 

 运行结果如下:e_name

 

————

 

王朝

 

李四

 

·compute子句

Compute{{avg|count|max|min|sum}(expression)} [,…n][byexpression [,…n]]

例子:查询计算机系的学生或者年龄不大于19岁的学生,并按年龄倒排序。

Select*fromdepartment where sdept='计算机';

 

Union;

 

Select  *from student where  sage<=19

 

Order  by sage desc

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值