赞
踩
SELECT SAL FROM EMP;
select sal from emp;
SELECT sal FROM emp;
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;
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条件的数据 被选中 不符合的数据被过滤掉
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
查询一个员工 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;
= <=
找一个员工 名字 叫 SCOTT 显示他的empno ename sal
select empno,ename,sal from emp where ename=’SCOTT’;
sql语句大小写不区分
字符串的值大小区分
注意字符串的值 需要使用单引号
表达一个闭区间 [a,b]
where 字段名 between a and b;
——找员工 编号在 [7839,7850] 之间的员工 显示 empno ename
select empno,ename from emp where empno between 7839 and 7850;
表达一个字段的值出现在一个列表范围内
where f in (a,b,c);
f 等于其中任何一个
——找出工资 是 2000 或者是 3000 或者是 5000 的人
select empno,ename,sal from emp where sal in (2000,3000,5000);
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;
模糊查询——关键字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 '\';
逻辑条件运算符
在高级语言中——&& || !
在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;
对立面问题 注意NULL
= != <>
> <=
< >=
between and --- ---not between and
in --- ---not in
like --- ---not like
is null --- ---is not null
优先级问题
——数据库() 随便用
12*sal + 100
12*(sal+100)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。