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 "月薪",job from emp
 
select 5 from emp;
     --OK ,输出一个常量值
     --输出的行数是emp表的行数,每行只有一个字段,值是5
select 5;
     --ok
     --不建议使用,没什么实际意义 
 
注意:
        在Oracle中字段的别名不允许用单引号括起来
        但是SqlServer 2005中却允许
        因此为了兼容性,最好字段别名用双引号括起来,不要用单引号
 
 
2、distinct【不允许重复的】
select distinct deptno from emp;         --distinct deptno 会过滤掉重复的deptno值
 
select distinct comm from emp;         --distinct可以过滤掉重复的null,或者说如果有多个null,会把一个输出
 
 select distinct comm,deptno from emp;          --distinct把comm和deptno的组合进行过滤,查出两两互不相同的记录,
 
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 sal between 1500 and 3000;
--等价于
select * from emp where sal>=1500 and sal<=3000;
 
--查找工资小于1500或者大于3000(包括1500到3000)的所有员工的信息
select * from emp where sal<1500 or sal>3000;
 
select * from emp where sal not between 1500 and 3000;
 
4.in【属于若干个孤立值】
 
--把sal=1500 和sal=3000的元素输出
select * from emp where sal in (1500,3000);
--等价于
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!=3000
select * from emp where sal<>1500 and sal<>3000
  --数据库中不等于有两种表示:!=,  <>,建议使用第二种
  --多或取反是并且 非并且取反是或
 
 
5、top:【最前面的若干条诗句】可用于分页
select top 2 * from emp;       --筛选出前两行数据
select top 2 from emp;       --error
select top 15 percent * from emp; --如果百分比不是整数则向上取整
 
--把工资在1500到3000 之间(包括1500和300)的员工中工资最高的前4个人的信息输出
select top 4 * from emp where sal between 1500 and 3000 order by sal
--执行过程 from哪个表->where->order排序->top->所有字节
--desc 降序,不写则默认是升序(asc)
 
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 not is
select * from emp where comm is null; --输出奖金为空的员工的信息
select * from emp where comm is not null; --输出奖金不为空的员工的信息
 
    ④、任何类型的数据都允许是null
            create table t1(
                name nvarchar(20),
                cnt int,
                riqi datetime
        )
        insert t1 values(null,null,null);
        select * from t1;
 
        ⑤、任何数字与null参与数学运算的结果永远是null
--输出每个员工的姓名 年薪(包含奖金) comm假设是一年的奖金
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【以某个字段排序】                        
        order by a,b                --a和b都是升序
        order by a,b desc        --a升序,降序
        order by a desc,b        --a降序,b升序
        order by a desc ,b desc    --a降序,b降序
        
        文字描述
                如果不指定排序的标准,则默认是升序,升序用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 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匹配的内容

  匹配的条件通常含有通配符

%

表示任意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-f]
a到f中的任意单个字符,只能是a b c d e f中的任意一个
select * from emp where ename like '_[A-F]%';

--把ename中第二个字母是A或B或C或D或E或F的数据输出
[a,f]
a或f
[^a-c]

不是a,也不是b,也不是c的任意单个字符

select * from emp where ename like '_[^A-F]%';
--把ename中第二个字母不是A也不是B也不是C也不是D也不是E也不是F的数据输出

注意:
   匹配的条件必须用单引号括起来   不能省略  也不能改用双引号

   通配符
通配符作为不同字符使用的情况

  select * from 表明 where name like '%\%%'  escape '\'   --把name中包含有%的输出
  select * from 表明 where name like '%m%%'  escape 'm' // escape 后面的内容表明在其之后的元素当做转义字符

sql 查询基本语法的更多相关文章

  1. SQL Server 数据库子查询基本语法

    一.SQL子查询语句 1.单行子查询        select ename,deptno,sal        from emp        where deptno=(select deptno ...

  2. SQL Server参数化SQL语句中的like和in查询的语法(C#)

    sql语句进行 like和in 参数化,按照正常的方式是无法实现的 我们一般的思维是: Like参数化查询:string sqlstmt = "select * from users whe ...

  3. MySQL 基本语法(1.表字段操作,2表记录管理 3.运算符管理4.SQL查询 5.约束6.索引

    .表字段的操作 .语法:alter table 表名 执行动作; .添加字段(add) .添加到末尾 alter table 表名 add 字段名 数据类型; .添加到第一列 alter table ...

  4. SQL DATEDIFF语法及时间函数 Sql 查询当天、本周、本月记录

    SQL DATEDIFF语法及时间函数 Sql 查询当天.本周.本月记录 转:http://blog.csdn.net/Json1204/article/details/7863801?locatio ...

  5. SQL操作数据——SQL组成,查询基础语法,where,Oracle常用函数等

    SQL组成 DML数据操作语言 DCL数据控制语言 DQL数据查询语言 DDL数据定义语言 查询基础语法 记录筛选 where 子句 记录筛选 where 子句 实例练习 实例练习 Select语句中 ...

  6. SQL查询语法30例

    学好SQL查询:无他,概手熟耳. 1. 基础表: 学生表: 老师表: 课程表: 成绩表: 2. 题目: 1.查询名字中含有"华"字的学生信息 select * from 学生 wh ...

  7. SQL中部分语法整理

    1.SELECT DISTINCT 语句 关键词DISTINCT用于返回唯一不同的值. 语法: SELECT DISTINCT 列名称 FROM 表名称 2.SELECT INTO语句 SELECT ...

  8. Oracle常用SQL查询(2)

    三.查看数据库的SQL 1 .查看表空间的名称及大小 select  t.tablespace_name,  round ( sum (bytes / ( 1024 * 1024 )), 0 ) ts ...

  9. SQL server存储过程语法及实例(转)

    存储过程如同一门程序设计语言,同样包含了数据类型.流程控制.输入和输出和它自己的函数库. --------------------基本语法-------------------- 一.创建存储过程cr ...

随机推荐

  1. IOS页面自动布局 之 NSLayoutConstraint基础篇

    使用AutoLayout之前需要知道以下两点: 1.必须设置 translatesAutoresizingMaskIntoConstraints为NO. 2.如果是viewControl则AutoLa ...

  2. Python入门笔记(23):模块

    一.模块基础 1.模块 自我包含,且有组织的代码片段就是模块 模块是Pyhon最高级别的程序组织单元,它将程序代码和数据封装起来以便重用.实际的角度,模块往往对应Python程序文件. 每个文件都是一 ...

  3. 个人学习对UIView动画的总结

    我的博客之前已经开通五个月了,但是一直没有写东西.一是不敢写,二是也不知道写啥.毕竟是一个刚刚入行大半年的菜鸟,现在总想通过各种办法提高自己.之前总感觉用到一些东西,只是当时搞懂了一点,加上并没有总结 ...

  4. 重新想象 Windows 8.1 Store Apps 系列文章索引

    [源码下载] [重新想象 Windows 8 Store Apps 系列文章] 重新想象 Windows 8.1 Store Apps 系列文章索引 作者:webabcd 1.重新想象 Windows ...

  5. Metronic 使用到的开源插件汇总

    Metronic 是一套完整的 UI 模板,但不仅仅是模板,更应该说是一个 UI 框架.它除了提供了大量网页模板,也提供了非常多的 UI 组件,并且应用了众多 jQuery 插件.通过这些资源的整合, ...

  6. C++ 面向对象的三个特点--多态性(一)

    C++的多态性定义 所谓多态性就是不同对象收到相同的消息产生不同的动作.通俗的说,多态性是指一个名字定义不同的函数,这些函数执行不同但又类似的操作,即用同样的接口访问功能不同的函数,从而实现“一个接口 ...

  7. SQL数据库基础(七)

    主键 数据库主键是指表中一个列或列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键,通过它可强制表的实体完整性.当创建或更改表时可通过定义 PRIMARY KEY约束来创建主键.一个 ...

  8. Underscore学习笔记1

    项目用了很久underscore.每次都是临时查手册,没有系统的研究过,最近有空正好看看 github地址:https://github.com/lily1010/underscore_learn 一 ...

  9. 转载 BCS 的好文章 1 - 怎么创建和使用BCS

    http://www.sharepointfabian.com/2010/04/16/how-to-create-configure-consume-sharepoint-2010-secure-st ...

  10. Android Studio 第一次新建Android Gradle项目超级慢的解决方案

    大家有什么问题,欢迎问我! 注:Android Studio在第一次新建一个Gradle项目时需要下载Gradle,所以启动很慢(Gradle-bin大约三十几兆),所以我们应该事先帮他下载好. 首先 ...