Orcle基本语句(三)

时间:2023-03-09 03:35:21
Orcle基本语句(三)
 COMMIT;
--查询表内所有内容
SELECT * FROM stu_info;
--查询部分列,并赋予别名
SELECT stu_id 学生标号,stu_name 学生姓名 FROM stu_info;
--以下两种方式可在图形化界面修改数据,在显示界面要解锁
--1、建议使用方法,可以多人同时使用
SELECT ROWID,stu_id,stu_name FROM stu_info;
--2、不建议使用,因为会占用表,其他人将不能使用
SELECT * FROM stu_info FOR UPDATE;
--合并语句的语法
merge into 副表
using 主表 on(主表.主键=副表.主键)
when matched then
更新语句
when not matched then
插入操作
--查询job列不重复的内容
SELECT DISTINCT job FROM emp;
--连接符||的使用
SELECT '姓名是: ' || ename || '.工作是:' || job as 个人信息 FROM emp;
--在查询语句中,添加新列
SELECT ename 姓名,sal 薪水,sal * 1.25 as 涨幅后的薪水 FROM emp;
--带有条件的查询语句
SELECT * FROM emp WHERE sal < 2000; --查询工资大于1500而且有奖金的雇员信息
SELECT *
FROM emp
WHERE sal > 1500
AND comm IS NOT NULL;
--查询工资不大于1500而且有奖金的雇员信息
--方法一:
SELECT *
FROM emp
WHERE sal <= 1500
AND comm IS NOT NULL AND comm != 0;
--方法二:
SELECT *
FROM emp
WHERE not(sal > 1500)
AND comm IS NOT NULL AND comm <> 0;
--查询工资大于1500或者能有奖金的雇员信息
SELECT *
FROM emp
WHERE sal > 1500
OR comm IS NOT NULL; --查询工资大于1500且小于3000的员工的信息
--方法一:用逻辑运算符
SELECT * FROM emp WHERE sal < 3000 AND sal > 1500;
--方法二:用BETWEEN...AND
SELECT * FROM emp WHERE sal BETWEEN 1500 AND 3000; SELECT * FROM EMP;
--查询入职时间在1980/12/1至1981/6/1之间的员工信息
--方法一:用逻辑运算符
SELECT * FROM emp WHERE hiredate < to_date('1981-6-1','yyyy-mm-dd') AND hiredate > to_date('1980-12-1','yyyy-mm-dd');
--方法二:用BETWEEN...AND
SELECT * FROM emp WHERE hiredate BETWEEN to_date('1980-12-1','yyyy-mm-dd') AND to_date('1981-6-1','yyyy-mm-dd'); --IN语句的使用
SELECT * FROM emp WHERE empno NOT IN (7369,7469,7521);
--LIKE 语句的使用(模糊查询) %匹配0个或多个字符,_匹配一个字符
SELECT * FROM emp WHERE ename LIKE '%L%';
SELECT * FROM emp WHERE ename LIKE '_L%';
--查询语句如无必要,要避免使用*
--查询部门位置等于DALLAS的员工信息
SELECT * FROM DEPT;
SELECT * FROM emp WHERE deptno = 20;
SELECT e.*,d.* FROM emp e,dept d WHERE e.deptno = d.deptno and d.deptno = 20;
--通过子查询实现查询部门位置等于DALLAS的员工信息
SELECT * FROM emp WHERE deptno = (SELECT deptno FROM dept WHERE loc = 'DALLAS');
--exists(类似in操作,在数据量较大时,性能优于in)
SELECT * FROM emp WHERE EXISTS (SELECT deptno FROM dept WHERE emp.deptno = dept.deptno AND loc = 'DALLAS');
--对查询结果进行排序
SELECT * FROM emp;
SELECT * FROM emp ORDER BY empno DESC, ename DESC;
--员工薪资涨幅25%后按照涨幅后的薪资降序排列
SELECT e.*,e.sal*1.25 AS 涨幅后的薪水 FROM emp e ORDER BY 涨幅后的薪水 DESC;
--按照索引排序(列的顺序)
SELECT * FROM EMP ORDER BY 2;
--查询本机时间
SELECT sysdate FROM dual;
--将enmae的内容改为小写,以及首字母大写
SELECT ename,LOWER(ename) lowerEname,INITCAP(ename) initcapEname FROM emp;
--TRIM 函数的使用(删除字符串中的某个字符,只能有一个字符)
SELECT ename,TRIM('A' FROM ename) TrimEname FROM emp;
--CONCAT函数的使用,连接两个字符串,只能是两个
SELECT ename,job,CONCAT(ename,job) AS CAT FROM emp;
--SUBSTR函数的使用,截取指定开始位置和指定长度的字符串
SELECT ename,job,SUBSTR(ename,2,3) AS SUB FROM emp;
--LENGTH函数,返回字符串的长度
SELECT ename,job,LENGTH(ename) AS LEN1 FROM emp;
--INSTR函数,返回特定字符串在指定字符串的索引位置,若没有出现返回0
SELECT ename,job,INSTR(ename,'AL') AS INS FROM emp; --得到30号部门并且薪资降幅10%后无小数的员工信息
SELECT e.*,TRUNC(sal*0.9) 取整降薪 FROM emp e WHERE deptno = 30; --练习
--1.查询员工工资大于800的
SELECT * FROM emp WHERE sal > 800;
--2.查询1981/6/9之前入职的员工信息
SELECT * FROM emp WHERE hiredate < to_date('1981-6-9','yyyy-mm-dd');
--3.查询奖金为空的员工信息(包含列:姓名,薪资,奖金)
SELECT ename,sal,comm FROM emp WHERE comm IS NULL;
--4.查询奖金不为空的员工信息(包含列:姓名,职位,薪资,奖金)
SELECT ename,job,sal,comm FROM emp WHERE comm IS NOT NULL; --5.查询员工姓名为WARD
SELECT * FROM emp WHERE ename = 'WARD'; --6.查询员工薪资为1200并且职位是SALESMAN
SELECT * FROM emp;
SELECT * FROM emp WHERE sal = 1200 AND job = 'SALESMAN'; --7.查询1981/6/9到1981/10/9入职的员工信息(包含列:姓名,职位,薪资,奖金,入职日期)
SELECT ename,job,sal,comm,hiredate FROM emp WHERE hiredate >= to_date('1981-6-9','yyyy-mm-dd') AND hiredate <= to_date('1981-10-9','yyyy-mm-dd'); --8.查询员工薪资为1200或者职位是MANAGER
SELECT * FROM emp WHERE sal = 1200 OR job ='MANAGER'; --9.查询名字不等于WARD员工信息
SELECT * FROM emp WHERE ename <> 'WARD'; --10.查询1981/6/9到1981/10/9入职的员工信息(包含列:姓名,职位,薪资,奖金,入职日期)--使用between and
SELECT ename,job,sal,comm,hiredate FROM emp WHERE hiredate BETWEEN to_date('1981-6-9','yyyy-mm-dd') AND to_date('1981-10-9','yyyy-mm-dd'); --11.模糊查询like
SELECT * FROM emp WHERE ename LIKE '_L%'; --12.查询姓名第三个字母是R的员工信息
SELECT * FROM emp WHERE ename LIKE '__R%'; --13.查询以T开头的第四个字母为N的员工信息
SELECT * FROM emp WHERE ename LIKE 'T__N%'; --14.按照员工的部编号排序,查询出的列名:姓名,薪水
--升序
SELECT ename,sal,deptno FROM emp ORDER BY deptno;
--降序
SELECT ename,sal,deptno FROM emp ORDER BY deptno DESC; --15.查询部门编号为20的员工,并按照薪资的降序排列
SELECT * FROM emp WHERE deptno = 20 ORDER BY sal DESC; --16.将所有员工的薪资降薪23%后保留1位小数后显示出来
--部分产生小数点
SELECT e.*,TRUNC(sal*0.7745,1) as 降薪 FROM emp e;