单表查询
查询所有列
select * from 表名
查询该表的所有列、所有行的记录
例子:
select * from emp
查询指定的列
select 列名1,列名2,列名3 from 表名
查询该表的列名1,列名2,列名3,所有行的记录,多个列名之间用 英文逗号,分隔
例子:
select ename,job,hiredate from emp t
查询emp表的ename、job、hiredata列的所有记录
查询最基本写法
sql查询语句的最基本写法要有select和from 表名
给列名起别名
使用关键字as
select 列名 as 别名 from 表名
as 可以省略
例子
select id as 主键,name as "姓 名",xb as 性别 ,age as 年龄 from student
如果别名中有特殊符号(如空格等),需要加双引号"姓 名"
查询去重
如果我们要查询emp表中有多少种job,可以使用下面语句:
select job from emp
但是查询结果有多个重复的job,结果不够完美
使用DISTINCT关键字,过滤重复记录
select distinct job from emp
对查询结果进行排序
在淘宝、京东等搜索商品时,我们通常会按照“销量”进行排序,在关系型数据库中通过order by进行排序。
如果不加order by,按照默认排序
语法
select * from 表名 order by 列名 [asc/desc]
order by 一般放最后面
默认 是升序
select * from emp order by sal
asc 表示升序
select * from emp order by sal asc
desc 表示降序
select * from emp order by sal desc
见下面sql语句
select * from emp order by sal ,comm desc
第一排序是sal,从小到大
第二排序是comm,从大到小(当 sal值相同 时,才有效果)
字段的数学运算
如果字段的值是数字类型,可以参与运算
查询各员工的月薪
select ename as 姓名,sal as 薪资,comm 奖金,sal+comm 月薪小计 from emp
注意: 有的值正确,当奖金为空时,月薪小计也为空,这是 错的
这些空值其实是NULL
对NULL的处理
遇到上面这种情况,要对NULL做处理,使用下面函数
nvl(列名,默认值)
当列的值时NULL时,返回默认值
查询各员工的月薪,sql修改如下:
select ename as 姓名,sal as 薪资,nvl(comm,0) 奖金,sal+nvl(comm,0) 月薪小计 from emp

