--Oracle是大型关系型数据库
--关系型数据库:用表保存数据,用表描述数据与数据之间关系的数据库。
--表的操作:增,删,查,改
--关系型数据库对表的操作使用SQL语句
*/注意:
1,Oracle查询数据的SELECT语句,FROM子句不能省略。
2,SQL语句不区分大小写
3,SQL语句可以写成一行或多行
4,只能直接使用半角标点符号
5,工作中不建议使用*,查询效率低
*/
--算数运算符:+,-,*,/
--Oracle中+只有加法运算功能,而没有连接符的功能
--查询employees表中所有员工的last_name,salary,年薪:
SELECT
LAST_NAME,SALARY,SALARY*12
FROM EMPLOYEES;
--列别名
/*
1, 列名 列别名
2,列名 AS 列别名
3,Oracle会自动将英文列名变成大写
4, 当列别名区分大小写时,或者别名中包含了特殊字符,
或者列别名为关键字时,需要将列别名放到一对双引号中
5,关系数据库中双引号通常用于表示别名
SELECT
LAST_NAME "USER",SALARY,SALARY*12 AS "Sal"
FROM EMPLOYEES;
*/
--关系数据库中单引号通常用于表示字符串
--连接符:||
SELECT FIRST_NAME||'.'||LAST_NAME AS NAME
FROM EMPLOYEES;
--DISTINCT关键字:屏蔽查询结果中的重复数据
SELECT DISTINCT JOB_ID,SALARY
FROM EMPLOYEES;
--通常情况下,一个SELECT语句中只能出现一个DISTINCT关键字
--通常情况下,DISTINCT关键字必须出现在SELECT与第一个列之间
--过滤与排序
--过滤:WHERE子句
SELECT 3
FROM 1
WHERE 条件 2 --条件结果类型一定是boolean
--条件为数字类型:
SELECT LAST_NAME,DEPARTMENT_ID
FROM EMPLOYEES
WHERE DEPARTMENT_ID=50
or
WHERE LAST_NAME='Fay'
or
WHERE HIRE_DATE='7-6月-94'
--条件为日期类型:值必须放到一对单引号中,格式必须为Oracle默认的格式日期(DD-MON-RR)
--比较运算符:>,>=,<,<=,=,!=,<>
--查询employees表中年薪>10000的员工的last_name,年薪
SELECT LAST_NAME,SALARY*12 FROM EMPLOYEES WHERE SALARY*12>100000;
WHERE 年薪>100000;错误:WHERE子句中不能使用别名
WHERE HIRE_DATE>='1-1月-98'
--特殊比较运算符:BETWEEN ...AND... :查询指定范围内的数据(包含边界值)
--IN(值列表):与任意一个值匹配,只能判定是否相等
... WHERE DEPAERTMENT_ID IN (20,50);
--LIKE :模糊查询
/*
1 %: 任意长度的任意字符
2 _ : 一个长度的任意字符
*/
...WHERE LAST_NAME LIKE '%a%';
-- 查询employees表中job_id中包含A_的员工的last_name,job_id
SELECT LAST_NAME,JOB_ID FROM EMPLOYEES WHERE JOB_ID LIKE '%A/_%' ESCAPE '/';
--IS NULL/IS NOT NULL
--NULL:关系型数据库中需要一个与类型无关,表示未知或不确定的值
--逻辑运算符:AND ,OR ,NOT
--AND 优先级大于 OR
--查询employees表中工资在5000-12000之间,并且在20或50号部门工作的员工的last_name,salary,departmnet_id
SELECT LAST_NAME,SALARY,DEPARTMENT_ID
FROM EMPLOYEES
WHERE SALARY BETWEEN 5000 AND 12000 AND DEPARTMENT_ID IN(20,50);
--查询employees表last_name列中包含a(不区分大小写)员工的last_name
SELECT LAST_NAME
FROM EMPLOYEES
WHERE LAST_NAME LIKE '%A%' OR LAST_NAME LIKE '%a%';
--排序:ORDER BY子句
SELECT 3
FROM 1
[WHERE] 2
[ORDER BY 列] 4 --通常情况下,ORDER BY子句出现在SELECT语句的最后
/*
1.升序:使用ASC关键字,默认为升序排序。
2.降序:使用DESC关键字。
*/
SELECT LAST_NAME,JOB_ID,DEPARTMENT_ID,SALARY
FROM EMPLOYEES
ORDER BY DEPARTMENT_ID ASC NULLS FIRST,SALARY DESC;
--Oracle认为NULL是最大的。
--SQL Server认为NULL是最小的。
--NULLS FIRST/NULLS LAST:在不影响排序规则的前提下,将NULL值放在结果的最前/最后面。
其它: