学习了数据库视频已有一个星期,没有进行实际操作,安装了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