SELECT 语句 (七部分)

SELECT是从数据库中提取数据!结果被存储在一个结果表中,称为结果集。

一FROM子句 ——9个点

  • 如何从表中查询一个字段对应的内容
    SELECT 字段名 FROM 表名;
    ——从 emp 表中 查询 sal 对应的内容
SELECT  SAL  FROM  EMP;
select  sal  from  emp;
SELECT  sal  FROM  emp;
  • 如何从表中查询多个字段对应的内容
    SELECT 字段名1,字段名2,字段名3 FROM 表名;
    —— 字段名 使用 英文逗号 隔开查询emp 表中 empno ename sal 对应的内容
    select empno,ename,sal from emp;
    • 查询表中所有的字段对应的数据
select  empno,ename,sal,hirdate,comm,deptno 
FROM  emp;
SELECT  empon,
ename,
job,
mgr,
hiredate,
sal,
comm,
depton on  
FROM  emp;

—— * 号可以代表所有的字段名 , * 号的写法没有上面的效率高,但可读性差。
select * from emp;
—— 如果sql出错,可以使用[edit]编辑[.sql]文件,保存退出之后,再使用斜杠(SQL>/)执行 。

  • sql 中的数学运算操作符

    +加-减*乘/ [除]

    例如:
    select sal,sal+1000 from emp;

    能不能显示 每个员工的月薪 和 每个员工的年薪
    select sal,sal*12 from emp;

一个月按照22 天计算,算算一天多少钱(注:sql语句中没有取整特性)
select sal,sal/22 from emp;

  • 字段/表达式的别名
    —— 在字段/表达式之后 可以设置一个名字 这个名字可以代表这个字段/表达式
    select ename name,sal salary,sal*12 yearsal from emp;

—— 每个字段/表达式 只能有一个别名,并且别名默认会变成大写
select ename name,sal salary,sal*12 year sal from emp;
—— 如何解决上面的错误?(使用双引号可以原样显示数据和处理特殊字符)
select ename name,sal salary,sal*12 "year sal" from emp;
+ sql中如何表达字符串——使用单引号
'' 、 ' ' 、 'a' 、'&' 、 'hello world'

  • 字符串 拼接
    ——||字符串拼接符号 只适合于oracle 其它数据思想是使用相应的函数
    select empno||ename myname from emp;

    —— 在 empno 和 ename 之间 拼接一个下划线字符串
    select empno||'_'||ename from emp;

    ——在 empno 和 ename 之间 拼接一个单引号字符串需要使用两个单引号表达一个单引号
    select empno||''''||ename from emp;

  • 空值的处理
    —— NULL 值和任何值做运算都是NULL,显示每个员工的员工编号和这个员工编号和直接领导编号mgr的和
    select empno,empno+mgr from emp;

—— Oecale中引入了一个函数nvl用来处理 NULL 值
nvl(par1,par2)当par1值为NULL时就返回par2对应的值当par1不为NULL 则直接返回 par1的值
select empno,empno+nvl(mgr,empno) from emp;

  • 数据排重——distinct
    select mgr from emp;
    select distinct mgr from emp;
    ——联合排重
    select distinct empno,mgr from emp;

    id   name 
    1     a
    1     b 
    1     a 
    

WHERE 子句

1.作用

限制表中的行数据 返回的
符合where条件的数据 被选中 不符合的数据被过滤掉

2.两个极限条件

where 1=1; 恒等 永真
where 1=2; 恒不等 永假
select empno ,ename from emp;
select empno ,ename from emp where 1=1;
select empno ,ename from emp where 1=2;
no rows selected

3.Number 类型的条件表达

查询一个员工 empno 等于 7839 显示 empno 和 ename
select empno,ename from emp where empno=7839;
查询一个员工 empno 不等于 7839 显示 empno 和 ename
select empno,ename from emp where empno!=7839;
select empno,ename from emp where empno <> 7839;

= <=

4.字符串类型条件的表达

找一个员工 名字 叫 SCOTT 显示他的empno ename sal
select empno,ename,sal from emp where ename=’SCOTT’;
sql语句大小写不区分
字符串的值大小区分
注意字符串的值 需要使用单引号

5.SQL运算符

  1. 常见的运算符
    = != <> >= <= > <
  2. 表达一个闭区间 [a,b]
    where 字段名 between a and b;
    ——找员工 编号在 [7839,7850] 之间的员工 显示 empno ename
    select empno,ename from emp where empno between 7839 and 7850;

  3. 表达一个字段的值出现在一个列表范围内
    where f in (a,b,c);
    f 等于其中任何一个
    ——找出工资 是 2000 或者是 3000 或者是 5000 的人
    select empno,ename,sal from emp where sal in (2000,3000,5000);

  4. NULL值的判断——f is null;
    ——判断f的值是不是NULL,是NULL数据则条件成立,否则条件返回假

    select distinct  mgr from  emp; 
    select distinct  mgr from  emp  where mgr = 7839;    
    select distinct  mgr from  emp  where mgr != 7839; 

    —— 基本运算符对NULL判断无效
    select distinct mgr from emp where mgr is null;

  5. 模糊查询——关键字like
    实例:
    ——找出所有姓李的人?

    李靖李奎李广李世民李小龙

    找出所有以 txt 结尾的
    找所有带龙的昵称

    成龙李小龙七龙珠小龙女龙腾青云

    ——语法格式:
    where like '模糊查询字符串';
    模糊查询通配符[ _ ] 代表一个任意字符,[ % ]代表0-n个任意字符

    where f like '李%';
    where f like '%txt';
    where f like '%龙%';
    ——查询emp 表中所有带A的ename
    select ename from emp where ename like '%A%';
    ——查询emp 表中 所有第二个字符是 A的ename
    select ename from emp where ename like '_A%';
    ——找出 user_tables 表中有一个table_name 代表表名,找出表名中带有 _S 的表(转义问题,这个转义需要使用 escape 关键字,说明那个字符后的字符需要需要)
    select table_name from user_tables where table_name like '%\_S%' escape '\';

  6. 逻辑条件运算符
    在高级语言中——&& || !
    在SQL中————and or not

    [2000,5000] where s between 2000 and 5000;
    where s>=2000 and s <=5000;
    f in (30,40,20); where f=30 or f=40 or f=20;

  7. 对立面问题 注意NULL

     =       !=  <>  
     >       <=
     <       >=
    
     between  and --- ---not  between   and 
     in           --- ---not  in 
     like         --- ---not  like 
     is null      --- ---is  not null 
    
  8. 优先级问题

    ——数据库() 随便用

     12*sal + 100
     12*(sal+100)
    
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值