一、基本查询语句
(1)查看当前用户
show user;
(2)查看当前用户下的表
select * from tab;
(3)查看员工表的结构
desc emp;
(4)选择全部列
SELECT * FROM emp;
(5)选择特定的列
SELECT empno,ename,sal,comm,deptno FROM emp;
(6)定义空值
a: 空值是无效的,未指定的,未知的的值。
b: 空值不是空格或者0.
c: 包含空值的数据表达式的值都是空值。
--空值不同于0,凡是空值参与运算的都是空值-- select employee_id, last_name, salary, commission_pct, salary * (1 + commission_pct) from employees;
改写后:
--nvl函数-- --格式: nvl(E1,E2)-- --解释: 如果E1为NULL,则函数返回E2,否则就返回E1。-- select employee_id, last_name, salary, commission_pct, salary * (1 + nvl(commission_pct,0)) from employees;
(7)使用别名
a:在列名后直接写。
b:在列名和别名之间添加关键字As。
c:使用双引号。
--使用别名-- select employee_id id, last_name as name, 12*salary "annual_sal" from employees;
(8)删除重复行
--使用关键字"DISTINCT"删除重复行-- select distinct department_id from employees;
二、过滤和排序
(1)where子句
a:使用where子句,将不满足条件的行过滤掉。
b:where子句紧随from子句。
select employee_id,last_name,salary from employees where employee_id > 200;
(2)字符和日期
a:字符和日期要包含在单引号中。
b:字符大小写敏感,日期格式敏感。
c:默认日期格式是: DD-MM月-YYYY。
select employee_id, last_name, salary, hire_date from employees where hire_date='17-9月-1987';
这样写不方便,我们通常这样写:
select employee_id, last_name, salary, hire_date from employees where to_char(hire_date,'yyyy-mm-dd')='1987-09-17';
(3)比较运算
select employee_id, last_name, salary, hire_date from employees where salary >= 6000 and salary < 7000;
(4)between
使用between运算来显示在一个区间内的值。
select employee_id, last_name, salary, hire_date from employees where salary between 6000 and 7000;
(5)in
使用in运算显示列表中的值。
select employee_id, last_name, salary, department_id from employees where department_id in(70,80,90);
(6)LIKE
a: like选择类似的值。
b: "%"代表0个或多个字符。
c: "_"代表一个字符。
select employee_id, last_name from employees where last_name like 'S%';
(7)null
使用 is null判断空值。
select employee_id, last_name,manager_id from employees where manager_id is null;
(8)逻辑运算
(9)order by
asc:升序
desc:降序
order by在select语句的结尾。
--desc:从高往低-- --asc:从低往高,默认-- --工资从低往高,如果相同再按名字排序-- select employee_id, department_id,last_name, salary from employees where department_id = 80 order by salary asc,last_name asc;