Oracle入門SQL練習(一)

2021-08-21 06:35:32 字數 3925 閱讀 4352

以下內容以scott使用者下oracle自帶例項orcl庫中四張表進行查詢,此部分為簡單查詢,作為練習筆記進行記錄

--1).查詢乙個使用者下所有的表

select * from tab;

--2).查詢一張表的結構(命令列):desc 表名稱

desc dept;

--簡單查詢語法結構:select [distinct] * | 列名稱 [別名],列名稱 [別名],... from 表名稱 [別名];

--3).查詢emp表中的全部記錄

select * from emp;

--4).查詢每個雇員的編號、姓名、職位、工資

select empno,ename,job,sal from emp;

--5).查詢所有的職位資訊,使用distinct消去重複

select distinct job from emp;

--6).查詢每個雇員的編號、姓名、職位、基本年薪(月薪*12),使用別名

select empno,ename,job,sal*12 income from emp;

--7).查詢每個雇員的編號、姓名、基本年薪(每年15薪,每月200元飯補、100元車補、100元話費,5個月的其他補貼200)

select empno,ename,(sal*15+(200+100+100)*12+200*5) income from emp;

--8).常量+連線,查詢顯示結構:雇員***的基本工資是***

select '雇員' || ename || '的基本工資是' || sal info from emp;

--限定查詢語法結構:select [distinct] * | 列名稱 [別名],列名稱 [別名],... from 表名稱 [別名] [where 過濾條件(s)];

--關係運算子

--9).查詢出所有基本工資高於2000的雇員資訊

select * from emp where sal > 2000;

--10).查詢smith的完整資訊

select * from emp where ename = 'smith';

--11.查詢工資為5000的員工資訊

select * from emp where sal = 5000;

--12.查詢不是銷售人員的編號、姓名、職位

select empno,ename,job from emp where job != 'salesman';

select empno,ename,job from emp where job <> 'salesman';

--邏輯運算子

--13.查詢出工資範圍在1500~3000之間的雇員資訊

select * from emp where sal >= 1500 and sal <= 3000;

--14.查詢工資大於2000或者職位是辦事員的雇員資訊

select * from emp where sal > 2000 or job = 'clerk';

--15.查詢工資小於2000的雇員資訊

select * from emp where sal < 2000;

select * from emp where not sal >= 2000;

--範圍查詢

--16.查詢出工資範圍在1500~2000之間的雇員資訊(包含1500,2000)

select * from emp where sal >= 1500 and sal <= 2000;

select * from emp where sal between 1500 and 2000;

--17.查詢所有在2023年僱傭的雇員資訊

select * from emp where hiredate between '01-1月 -1981' and '31-12月 -1981';

--空判斷 注意空和0

--18.查詢所有領取佣金的雇員資訊(佣金不為null)

select * from emp where not comm is null;

select * from emp where comm is not null;

--in操作符

--19.要求查詢雇員編號為7369、7566、7788、9999的雇員資訊

select * from emp where empno in (7369,7566,7788,9999);

--模糊查詢

--20.查詢姓名是以a開頭的雇員資訊

select * from emp where ename like 'a%';

--21.查詢姓名的第二字字母是a的雇員資訊

select * from emp where ename like '_a%'

--22.查詢姓名中包含字母是a的雇員資訊

select * from emp where ename like '%a%'

--查詢排序

--23.查詢所有雇員資訊,要求按照工資由高到低排序(降序)

select * from emp order by sal desc;

--24.查詢所有銷售人員的資訊,要求按照入職年限由早到晚排序(公升序)

select * from emp where job='salesman' order by hiredate asc;

--25.要求按照工資由高到低排序,若工資相同,則按入職時間由早到晚排序

select * from emp order by sal desc, hiredate asc;

--26.查詢每個雇員的編號,姓名,年薪,按照年薪公升序

select empno,ename,sal*12 income from emp order by income;

--基礎查詢練習

--1.查詢部門30中的所有員工資訊

select * from emp where deptno=30;

--2.列出所有辦事員(clerk)的編號、姓名和部門編號

select empno,ename,deptno from emp where job='clerk';

--3.找出佣金高於薪金60%的員工

select * from emp where comm > sal*0.6;

--4.找出部門10中所有經理(manager)和部門20中所有辦事員(clerk)的全部資訊

select * from emp where (deptno=10 and job='manager') or (deptno=20 and job='clerk');

--5.找出部門10中所有經理(manager),部門20中所有辦事員(clerk),既不是經理又不是辦事員但其薪金大於等於2000的雇員資訊

select *

from emp

where (deptno = 10 and job = 'manager')

or (deptno = 20 and job = 'clerk')

or (job not in ('manager', 'clerk') and sal >= 2000);

--6.找出收取佣金的員工的工作

select distinct job from emp where comm is not null;

--7.找出不收取佣金或者收取佣金小於100的員工

select * from emp where comm is null or comm<100;

--8.顯示姓名中不帶有『r』的員工資訊

select * from emp where ename not like '%r%';

--9.顯示姓名中任何位置包含字母『a'的員工資訊,顯示的結果按照基本工資由高到低排序,

--  若工資相同,則按照僱傭年限由早到晚排序,若年限相同,則按職位排序

select * from emp where ename like '%a%' order by sal desc,hiredate,job;

學習筆記與練習 SQL入門(一)

練習1 4 資料庫是將大量資料儲存起來,通過計算機加工而成的可以進行高效訪問的資料集合。該資料集合稱為資料庫 database,db 用來管理資料庫的計算機系統稱為資料庫管理系統 database management system,dbms 我們學習的主要是關聯式資料庫管理即rdbms r指rat...

oracle入門sql語句

1 顯示當前連線使用者 sql show user 2 檢視系統擁有哪些使用者 sql select from all users 3 新建使用者並授權 sql create user a identified by a 預設建在system表空間下 sql grant connect,resour...

sql練習總結(一)

最近在學sql,遇到了這麼一道題 寫出一條sql 語句 取出表a中第 31到第 40記錄 sqlserver,以自動增長的 id作為主鍵 注意 id可能不是連續的。把所能想到的實現方法都做了一遍 1.用集合查詢 select top40 from t test except select top30...