第四章 简单查询

2018-10-16  本文已影响0人  C_cole

基本SELECT语句语法

SELECT子句 表示所需检索的数据列。

FROM子句 表示检索的数据来自哪个表。

语句(statement):一条完整的SQL命令如:

select * from emp;

–子句(clause):部分的SQL语句,通常是由关键字加上其它语法元素构成,例如,SELECT

SQL语句的书写规则

–不区分大小写,也就是说SELECT,select,Select,执行时效果是一样的。

–可以单行来书写,也可以书写多行,建议分多行书写,增强代码可读性,通常以子句为单位进行分行。

–关键字不可以缩写、分开以及跨行书写,如SELECT不可以写成SEL或SELE

CT等形式。

–关键字最好使用大写,其它语法元素(如列名、表名等)小写。

–Tab和缩进的使用可以提高程序的可读性。

•选择所有列的两种方式

select * from 表名;

select deptno,dname,loc from dept;

练习:

用两种方式查询salgrade表数据

选择指定列

select 语句后列出要选择的列的列表

如:select deptno,dname from dept;

算术运算符(+-*/)

算术运算符优先级

–乘除优先于加减

–相同优先权的表达式按照从左至右的顺序依次计算

–括弧可以提高优先权,并使表达式的描述更为清晰

例:SELECT ename, sal, 12*sal+100 FROM emp;

SELECT ename, sal, 12*(sal+100);

空值NULL

•空值NULL

–空值是指一种无效的、未赋值、未知的或不可用的值。

–空值不同于零或者空格。

注意:任何包含空值的算术表达式运算后的结果都为空值NULL。

1 select ename, 12*sal+comm

2 from emp

3 WHERE ename='KING';

解决空值的方法

IFNULL函数

ifnull(expr1,expr2) ifnull函数如果第一个参数为空,则返回expr2,否则返回expr1

上面语句改写:

select ename,12*sal+ifnull(comm,0)

from emp

where ename='KING';

列别名

两种写法:

列名 as 列别名

列名 列别名

例:SELECT ename AS 姓名, sal 月薪

FROM emp;

消除重复行

distinct关键字,在select 子句中使用

select distinct job from emp;

显示表结构两种方式

desc 表名:

describe 表名:

*where子句

作用:指定查询条件,限制显示的数据行

语法:

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

FROM table

[WHERE condition(s)];

•WHERE子句紧跟在FROM子句之后

•condition(s)表示条件表达式,

–通常格式为:列名 比较操作符 要比较的值

•比较操作符(> = < > = <= != <>)

比较数字相等

SELECT ename, job, deptno

FROM emp

WHERE deptno=20;

比较字符或日期相等

值需要加单引号

SELECT ename, job, deptno

FROM emp

WHERE job='CLERK';

SELECT ename, hiredate, deptno

FROM emp

WHERE hiredate > 1985-01-01';

特殊比较运算符

•BETWEEN..AND..

值介于两者之章,包括临界值

如:查询工资在1000到1500之间的员工信息

SELECT *

FROM emp

WHERE sal BETWEEN 1000 AND 1500;

查询1981年入职的员工信息

select *

from emp

where hiredate BETWEEN ‘1981-01-01’ AND ‘1981-12-31’

•IN运算符

满足条件的值比较多,圈定一个范围,用in

如:查询经理编号为7902,7566,7788的员工信息

SELECT empno, ename, sal, mgr

FROM emp

WHERE mgr IN (7902, 7566, 7788);

查询在10,20,30号部门工作的员工信息

select *

from emp

where deptno in(10,20,30);

特殊比较运算符

LIKE运算符*

重要,用于模糊查询

–模糊查询中两个通配符:

–%代表零或任意更多的字符

–_代表一个字符

%与_可混用

可以使用ESCAPE标识符实现对“%”和“_”的查找。

–例:查询JOB 以“MAN_”开头的雇员信息。

1 )查询指定字符开头的用‘s%’

2)查询指定字符结尾的用'%s'

3)查询包含指定字符的用'%S%'

SELECT ename,job

FROM emp

WHERE jobLIKE 'MAN@_%' ESCAPE '@';

•IS NULL 运算符

判断要比较的值是否为空值NULL

如:查询没有经理的员工

SELECT ename, mgr

FROM emp

WHERE mgr IS NULL;

逻辑运算符

用于连接多个查询条件

逻辑运算符包括AND、OR、NOT

and (和,多个条件需要同时满足)

or(或者 多个条件满足其中一个)

not(不是 反选 )

查询工资大于1000并且工作岗位为CLERK的员工信息

SELECT empno, ename, job, sal

FROM emp

WHERE sal>=1100

AND job='CLERK';

查询工资大于1000或者工作岗位为CLERK的员工信息

SELECT empno, ename, job, sal

FROM emp

WHERE sal>=1100

OR job='CLERK';

查询工资大于1000或者工作岗位不为CLERK,MANAGER的员工信息

SELECT ename, job

FROM emp

WHERE sal>=1100 and

job NOT IN ('CLERK','MANAGER','ANALYST');

–NOT运算符可以和BETWEEN…AND、LIKE、IS NULL一起使用

•...WHERE deptno NOT IN (10, 20)

•...WHERE sal NOT BETWEEN 3000 AND 5000

•...WHERE ename NOT LIKE 'D%’

•...WHERE mgr IS NOT NULL

•运算符的优先级*

小括号优先,实在记不住,用小括号括起

ORDER BY子句

对查询结果进行排序,写在所有子句后

•其中:

–可以按照列名、表达式、列别名、结果集的列序号排序

–ASC: 升序,默认值 DESC: 降序

–ORDER BY 子句必须写在SELECT语句的最后

如:SELECT ename, job, deptno, hiredate

FROM emp

ORDER BY sal asc,hiredate DESC;

其结果先按薪水升序排序,薪水相同的按出生日期降序

分页:

•使用select语句时,经常要返回前几条或者中间某几行记录,可以使用关键字limit。语法格式如下:

select 字段列表

from 数据源

limit [start,]length;

上一篇下一篇

猜你喜欢

热点阅读