sql查询基本语法_第1页
sql查询基本语法_第2页
sql查询基本语法_第3页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、sql 查询基本语法1、计算列select * from emp -* 表示所有的 -from emp表示从 emp 表查询select empno,ename from emp;select ename, sal*12 as 年薪 from emp-as 可以省略,记住 “年薪“不要写成 年薪,也 不要写成 年薪, 方便移植select ename,sal*12 as 年薪 ,sal 月薪 ,jobfrom empselect 5 from emp;-OK ,输出一个常量值- 输出的行数是 emp 表的行数,每行只有一个字 段,值是 5 select 5;-ok- 不建议使用,没什么实际意义

2、注意:在 Oracle 中字段的别名不允许用单引号括起来但是 SqlServer 2005 中却允许 因此为了兼容性,最好字段别名用双引号括起来,不要用单引号2、distinct 【不允许重复的】select distinc t deptno fromemp;-distinct deptno会过滤掉重复的deptno 值select distinct comm fromemp;-distinct 可以过滤掉重复的 null ,或者说如果有多个 null ,会把一个输出select distinct comm,deptnofromemp;-distinct 把 comm 和 deptno 的组合

3、进行过滤,查出两两互不相同的记录,select distinct deptno,comm from emp- 含义:把 deptno 和 comm 的组合都不重复的输出select deptno,distinct comm from emp -error deptno 的元素多 comm 中的元素少select deptno,distinct comm from emp;-error, 逻辑上有冲突学习方式:要多思考3. between 【在某个范围之内】- 查找工资在 1500 到 3000 之间(包括 1500 到3000 )的所有员工的信息select * from emp where

4、sal between 1500 and 3000;- 等价于select * from emp where sal=1500 and sal=3000;- 查找工资小于 1500 或者大于 3000 (包括 1500 到 3000 )的所有员工的信息select * from emp where sal3000;select * from emp where sal not between 1500 and 3000;4.in 【属于若干个孤立值】- 把 sal=1500 和 sal=3000 的元素输出 select * from emp where sal in (1500,3000);

5、- 等价于select * from emp where sal=1500 or sal=3000- 把 sal 不等于 1500 和 sal 不等于 3000 的元素输出 select * from emp where sal not in (1500,3000);- 等价于select * from emp where sal!=1500 and sal!=3000select * from emp where sal 1500 and sal3000- 数据库中不等于有两种表示:! = , ,建议使 用第二种- 多或取反是并且 非并且取反是或5、 top: 【最前面的若干条诗句】可用于分

6、页select top 2 * from emp;- 筛选出前两行数据select top 2 from emp;-errorselect top 15 percent * from emp; -如果百分比不是整数则向上取整- 把工资在 1500 到 3000 之间(包括 1500 和 300 ) 的员工中工资最高的前 4 个人的信息输出select top 4 * from empwhere sal between1500 and 3000 order by sal- 执行过程 from 哪个表 -where-order 排序 -top- 所有字节-desc 降序,不写则默认是升序 (asc

7、)6、 null 【没有值,空值】 、零和人 null 是不一样的, null 表示空值,没 有值,零表示一个确定的值 、 null 不能参与如下的运算: != = 、 null 可以参与如下的运算: is not is - 输出奖金非空的员工的信息 - select * from emp where comm null; - 输出 为空select * from emp where comm !=null; - 输出为 空select * from emp where comm=null; - 输出为 空 error- 总结: null 不参与 != = 运算-null 可以参与 is no

8、t isselect * from emp where comm is null; - 输出奖 金为空的员工的信息select * from emp where comm is not null; - 输出奖金不为空的员工的信息、任何类型的数据都允许是nullcreate table t1(name nvarchar(20),cnt int,riqi datetime)insert t1 values(null,null,null); select * from t1;、任何数字与 null 参与数学运算的结果永远 是 null- 输出每个员工的姓名 年薪(包含奖金) comm 假 设是一年的

9、奖金select empno, ename,sal*12+comm 年薪 from emp;- 此程序证明,任何数字与 null 参与数学运算的结果永 远是 null- 正确的写法是:select empno, ename,sal*12+isnull(comm,0) 年薪 from emp;-isnull(comm,0)如果 comm 是 null 就返回零, 否则返回 comm 的 值7 、order by 【以某个字段排序】-a 和 b 都是升-a 升序,降序-a 降序, b 升序-a 降序, b 降order by a,b 序order by a,b descorder by a des

10、c,border by a desc ,b desc 序文字描述如果不指定排序的标准,则默认是升 序,升序用 asc 表示,默认可以不写为一个字段指定的排序标准并不会对 另外一个字段产生影响强烈建议为每一个字段都指定排序的标准例子:-asc 是升序的意思,默认可以不写, desc 是降序 select * from emp order by sal -默认是按照升序排序select * from emp order by deptno,sal; -先按照 deptno 升序排序,如果 deptno 相同,再按照 sal 升序排序select * from emp order by deptno

11、desc, sal ;- 先按照 deptno 降序排序,如果 deptno 相同,再 按照 sal 升序排序,- 记住 sal 是升序,不是降序-order by a desc,b,c,d desc只对 a 产生影响,不会对后面的 b 、c、d 产生影响select * from emp order by deptno,sal desc;- 问题: desc 是否会对 deptno 产生影响?- 答案:不会、- 先按 deptno 升序,如果 deptno 相同,再按 sal 降序8、模糊查询格式:select 字段的集合 from 表名 where 某个字 段的名字 like 匹配的内容匹

12、配的条件通常含有通配符表示任意 0 个或者多个字符select * from emp where ename like%A%; -ename 只要含有字符 A 就输出select * from emp where ename like A%;-ename 只要首字母是 A 的就输出select * from emp where ename like %A;-ename 只要未字母是 A 的就输出_ 这是下划线 不是减号 表示 单个字符select * from emp where ename like_A;-ename 只要第二个字母是 A 的就输出a-fa 到 f 中的任意单个字符,只能是 a b c d e f 中的任 意一个select * from emp where ename like _A-F%;- 把 ename 中第二个字母是 A 或 B 或 C 或 D 或 E 或 F 的数据输出a,fa或f a-c不是 a,也不是 b ,也不是 c 的任意单个字符 select * from emp where ename like_A-F%;- 把 ename 中第二个字母不是 A 也不是 B 也不是 C 也不是 D 也不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论