Chinaunix首页 | 论坛 | 博客
  • 博客访问: 113553
  • 博文数量: 26
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 344
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-21 23:11
文章分类
文章存档

2014年(23)

2013年(3)

分类: SQLServer

2014-03-04 15:26:22

一简单select语句

   1 简单的select的语句形式  

       SELECT [DISTINCT] {*,column alias,..}

       FROM table alias

       Where 条件表达式

   SELECT(关键字)------从数据库中取数据

   {*,column alias,..}------取数据的形式,“*”指所有数据,alias指别名,“。。。”指部分字段

   DISTINCT(关键字)----消除结果集中重复的信息

   FROM(关键字)--------从哪些地方取数据

   table(表名)---------从table这张表中取数据

   2 字段的处理

       (1)字段的显示:全部显示(*)、部分显示

      (2)别名

      (3)空值字段的处理

      (4)消除重复的字段组合

       (5) 操作字符、数值、日期

二where对数据设定限制条件

   1 等值判断(=):主要是数值判断和字符串判断。

       注:判断字符串是否相等时需要将字符串用单引号引起来。

   eg:select * from emp where deptno=10;

      select * from emp where ename='KING';(注意引号内的字符串是对大小写敏感的)

   2 非等值判断(>,>=,<,<=,<>)

   (1)字符串比较规则:首先比较第一个字符,如果第一个字符已经能够判断大小,就不继续向下比较了。反之,则继续比较下去。

   (2)between a and  b<=====>[a,b]

   3 IN语句:筛选某些值的一个。  
1
    
select ename,sal from emp where sal in(800,1250,1500,2000);

   4 处理日期
1
2
    
--查询所有在81年2月20号以后入职的员工
select ename,hiredate from emp where hiredate >'20-2月-81';

   5 模糊查询

   使用关键字like和通配符进行模糊查询。通配符:‘%’表示0个或多个字符,‘_’表示一个字符

   mp
1
2
3
4
    
--查询名字含有‘ALL’的人员
select ename from emp where ename like '%ALL%';
--查询名字中第二个字母含有‘A’的雇员
select ename from emp where ename like '_A%';

三oder by 排序    
1
2
    
order by 字段 asc---按字段升序排列
order by 字段 desc--按字段降序排列

四sql函数

 1 常用函数

    Lower函数----字符串全部转为小写

    upper函数----字符串全部转为大写

    substr函数---字符串中的子串

    Chr函数------与某个ASCII码数值对应的字符

    Ascii函数----一个字符的ASCII码数值

    round函数----对参数值四舍五入

    to_char函数--将数值或日期转换为特定的字符串。

    to_date函数--字符串转为日期格式

    to_number函数-字符串转为数字格式

    nvl函数-------处理空值(处理null)

 2 组函数

   avg---平均值  max---最大值  min---最小值  sum---总和  count---记录的数量

五Group by对数据分组

  group by 字段---按字段分组

注:分组语句中select字段满足下述任意条件:1组函数的值 2该字段在group by子句中。

六Having过滤分组

 Having是对分组后的数据进行过滤。  
1
2
    
--将平均薪水大于1000的组的平均薪水从emp中选出来
select avg(sal) from emp group by deptno having avg(sal)>1000;

   
1
2
3
    
--要求薪水大于1200,按照部门进行分组,分组后的平均薪水大于1500
select avg(sal) from emp
where sal>1200 group by deptno having avg(sal)>1500 order by avg(sal);

七总结
1
2
3
4
5
6
7
8
9
10
11
12
    
Select {*,column[alias],...}
From table
[where ...]
[group by...]
[having ...]
[order by...]
子句执行顺序:
 where语句过滤原始记录
 group by将where后的结果进行分组
 having 过滤分组结果
 select 显示字段
 order by排序


阅读(2002) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~