3. DQL-简单查询

1. SELECT简单查询作用

通过简单查询,可以查询表中的所有列或者指定列,通过算术运算符、列别名以及消除重复行可以改变查询结果的显示方式。

2. SELECT查询所有列

2.1 语法

SELECT * | 列名1,列名2,...列名n

FROM table;

说明:

        1、“*”号代表指定表中的所有列名;

        2、“|” 代表“或者”的含义,所以SELECT子句后面可以既可以写“*”,也可以写所有的列名,不能两种方式都写;

        3、如果使用第二种方式,每个列名之间必须要用逗号分隔,最后一个列名后面不写逗号;

        4、FROM子句后面写要查询的表名;

        5、SQL语句的最后需要加分号;

例:查询所有部门信息

SELECT  *  FROM  dept;

或者

SELECT deptno,dname,loc FROM dept;

DEPTNO

DNAME

LOC

10

ACCOUNTING

NEW YORK

20

RESEARCH

DALLAS

30

SALES

CHICAGO

40

OPERATIONS

BOSTON

如上两种查询方式的结果完全相同,建议使用第二种方式,可读性强,效率稍高。

3. SELECT查询指定列

3.1 语法

SELECT 列名1[,列名2,...列名n]

FROM table;

说明:

        1、[ ] 中括号里面的内容可以省略;

        2、想显示哪列,写对应的列名就可以。

        例:查询所有部门的部门编号、部门所在地

SELECT deptno,loc 
FROM dept;

查询结果如下:

DEPTNO

LOC

10

NEW YORK

20

DALLAS

30

CHICAGO

40

BOSTON

4. 算术运算符

4.1 算术运算符作用

可以在SELECT子句中使用算术运算符(只对数值型数据起作用),来改变查询结果的显示方式。

算术运算符包括:

运算符

作用

+

-

*

/

例:查询每个员工的姓名,工资,以及工资增加300后的金额。

SELECT ename, sal, sal+300  
FROM    emp;

查询结果如下:

ENAME

SAL

SAL+300

KING

5000

5300

BLAKE

2850

3150

CLARK

2450

2750

JONES

2975

3275

MARTIN

1250

1550

ALLEN

1600

1900

4.2 算术运算符优先级
  • 乘除优先于加减
  • 相同优先级按照从左至右的顺序依次计算
  • 可以使用括号提升优先级

例:比较如下两条SQL语句的查询结果,理解算术运算符优先级。

语句1:

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

语句2:

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

语句1的查询结果如下:

ENAME

SAL

12*SAL+100

KING

5000

60100

BLAKE

2850

34300

CLARK

2450

29500

JONES

2975

35800

MARTIN

1250

15100

......

......

......

语句2的查询结果如下:

ENAME

SAL

12*(SAL+100)

KING

5000

61200

BLAKE

2850

35400

CLARK

2450

30600

JONES

2975

36900

MARTIN

1250

16200

......

......

......

5. 空值

5.1 空值的含义

空值用NULL表示,表示一种无效的、未知的值,空值不是零,也不是空格。

例:查询员工姓名,岗位,工资,津贴

SELECT ename, job, sal, comm 
FROM   emp;

查询结果如下,其中SMITH的津贴为NULL值。

ENAME

JOB

SAL

COMM

SMITH

CLERK

800.00

NULL

ALLEN

SALESMAN

1600.00

300.00

WARD

SALESMAN

1250.00

500.00

.....

.....

.....

.....

5.2 空值参与运算

空值参与算术运算,运算后的结果仍为NULL

例:查询员工姓名,工资,津贴,以及工资和津贴的和。

SELECT  ename,sal,comm,sal+comm
FROM   emp;

查询结果如下,可以看到空值参与算术运算后,结果仍为空值

ENAME

SAL

COMM

SAL+COMM

SMITH

800

NULL

NULL

ALLEN

1600

300

1900

WARD

1250

500

1750

JONES

2975

NULL

NULL

......

......

......

......

6. 列别名

6.1列别名作用及语法

列别名用来给查询语句中的列或者表达式重新命名,使语句的可读性更强。

语法:

SELECT 列名1 | 表达式1 [as] [列别名1],

列名2 | 表达式2 [as] [列别名2],

..列名n | 表达式n [as] [列别名n]

FROM table;

说明:

        1、列别名可以直接写在列名或者表达式的后面,也可以加as关键子,加不加as没有任何区别,通常不加。

        2、如果SELECT子句中有计算表达式,通常使用列别名。

例:查询员工姓名,工资,年薪(年薪=工资*12)

SELECT NAME , SAL , SAL*12  YearSal
FROM EMP;

查询结果如下:注意列的标题显示的是别名

ENAME

SAL

YearSal

SMITH

800

9600

ALLEN

1600

19200

WARD

1250

15000

JONES

2975

35700

......

......

......

注意:以下情况列别名两侧需要添加双引号

1、列别名中包含有空格

2、列别名中包含有特殊字符,如%,- 等。

例:查询员工姓名,工资,年薪(列别名要求Year Sal , 注意中间有空格)

SELECT NAME , SAL , SAL*12  "Year Sal"
FROM EMP;

7. 消除重复行

7.1 消除重复行作用及语法

重复行是查询结果中有完全相同的数据行,如下面结果中第一行和第二行就是重复行。

JOB

DEPTNO

SALESMAN

30

SALESMAN

30

MANAGER

30

消除重复行是消除相同的查询结果,只保留一行重复数据,使用关键字 DISTINCT 来完成。

语法:

SELECT DISTINCT 列名1,列名2,....列名n

FROM table;

例:执行如下SQL语句,观察结果。

SELECT DISTINCT deptno
FROM emp;

DEPTNO

10

20

30

上述SQL语句的查询结果为:显示员工表中有几种不同的部门编号。

也可以使用DISTINCT关键字消除多列重复数据(同时考虑所有列的数据重复)

例:执行如下SQL语句,观察结果。

SELECT DISTINCT deptno,job 
FROM emp;

DEPTNO

JOB

20

CLERK

30

SALESMAN

20

MANAGER

30

MANAGER

10

MANAGER

20

ANALYST

10

PRESIDENT

30

CLERK

10

CLERK

可以看出,上述SQL语句的查询结果为:显示员工表中,每个部门有哪些不同的岗位类型。

8.总结

主要讲解了简单查询的几种查询方式,包括查询所有列,指定列,带有算术运算的查询,空值,列别名,以及消除重复行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值