Oracle查询语句小练习:排序,模糊查询,条件查询

it2025-02-15  5

先创建表s_emp:

已知有以下表,数据如图s_emp::

CREATE TABLE s_emp(     id    NUMBER(7)    CONSTRAINT s_emp_id_nn NOT NULL,     last_name    VARCHAR2(25)    CONSTRAINT s_emp_last_name_nn NOT NULL,     first_name    VARCHAR2(25),     userid        VARCHAR2(8),     start_date    DATE,     comments    VARCHAR2(255),     manager_id    NUMBER(7),     title        VARCHAR2(25),     dept_id        NUMBER(7),     salary        NUMBER(11, 2),     commission_pct    NUMBER(4, 2),     CONSTRAINT s_emp_id_pk PRIMARY KEY (id),     CONSTRAINT s_emp_userid_uk UNIQUE (userid),     CONSTRAINT s_emp_commission_pct_ck     CHECK (commission_pct IN (10, 12.5, 15, 17.5, 20)));

 

1)查询员工的工资和last_name,对工资进行升序排列

 select id,last_name from s_emp      order by salary asc;

2)查询员工的工资和last_name,对last_name进行降序排列

select salary,last_name from s_emp      order by last_name desc;

3)查询员工的工资和last_name,先对salary进行降序排列,再对last_name进行升序排列

select salary,last_name from s_emp      order by salary desc,last_name asc;

4)请举例说明空值的排序规则     升序排列,默认情况下,null值排后⾯     降序排序,默认情况下,null值排前⾯

5)查询41号部门员工的信息?

 select * from s_emp      where dept_id=41;

6)查询工资大于1000的员工的信息?

select * from s_emp     where salary > 1000;

7)查询工资大于1000小于1500员工的信息,使用两种方式来做?

 select * from s_emp     where salary >1000 and salary <1500;     select * from s_emp       where salary between 1000 and 1500;

8)查询41或者42部门员工的信息,使用两种方式来做?

 select * from s_emp     where dept_id=41 or dept_id=42;          select * from s_emp        where dept_id in(41,42);

9)查询last_name包含n的员工的信息?

   select * from s_emp     where last_name like '%n%';

10)查询last_name包含n或者N的员工的信息?

    select * from s_emp      where last_name like '%n%' or last_name like '%N%';

11)查询last_name第二个字母为g的员工的信息?

select * from s_emp       where last_name like '_g%';

12)查询last_name最后一个字母为o的员工的信息?

    select * from s_emp       where last_name like '%o';

13)查询last_name以N开头的员工的信息?

   select * from s_emp       where last_name like 'N%';

14)先插入这条数据     insert into s_emp(id,last_name)     values(999,'_briup');     commit;

   然后查询以_开头的员工的信息

 select * from s_emp       where last_name like '/_%' escape '/';

15)找出部门41中所有经理和部门43中的所有办事员的详细资料     经理职称为:Warehouse Manager     办事员的职称为:Stock Clerk

 select * from s_emp       where (title='Warehouse Manager' and dept_id =41 )      or (title='Stock Clerk' and dept_id=43);

16)找出部门41中所有经理、部门43中所有办事员,既不是经理又不是办事员但其薪金>=2000的所有雇员的详细资料

 select * from s_emp       where (title='Warehouse Manager' and dept_id =41 )      or (title='Stock Clerk' and dept_id=43)      or ((title!='Warehouse Manager' and title!='Stock Clerk')and salary>=2000);

17)显示不带有'S'的雇员姓名

 select '姓名:' || last_name || '-' || first_name name from s_emp      where last_name not like '%S%' and first_name not like '%S%';

18)显示雇员姓名,根据其服务年限,将最老的雇员排在最前面

 select '姓名:' || last_name || '-' || first_name name from s_emp       order by start_date asc;

19)显示所有雇员的姓名、工作和薪金,按工作的降序顺序排序,而职位相同时按薪金升序

 select '姓名:' || last_name || '-' || first_name name,title,salary from s_emp     order by title desc,salary asc;

20)查询12个月的年薪大于18000的员工的信息

   select * from s_emp     where salary*12>18000;

21)查询13个月的年薪在10000到14000之间的员工信息

 select * from s_emp       where salary*13 between 10000 and 14000;

22)查询41号部门工资大于1400的员工信息

select * from s_emp     where dept_id=41 and salary>1400;

23)查询除41,42号部门12个月的年薪大于17000员工的信息

select * from s_emp     where (dept_id!=41 and dept_id!=42) and salary*12>17000;

 

最新回复(0)