SQLScript DML 创建 & 查询 & 序列(条件查询 日起查询 关联查询 子查询 分组查询 查询内容拼接 模糊查询)

select * from employees;

select * from employees where salary = 10000;

select *
from employees
where first_name like 'D%'
or first_name like 'E%';

select * from employees where first_name like '%a%';

select * from employees where salary between 10000 and 20000;

select first_name || ' ' || last_name 姓名
from employees
where salary between 10000 and 20000;

select first_name || ' ' || last_name
from employees
where salary between 10000 and 20000;

select * from employees here salary between 10000 and 20000;

select *
from employees
where first_name = 'Pat'
union
select *
from employees
where first_name = 'Lex'
union
select *
from employees
where first_name = 'Lisa';

select emp.*
from employees emp,
departments dep,
locations loc
where emp.department_id = dep.department_id
and dep.location_id = loc.location_id
and loc.city = 'Seattle';

select first_name || last_name from employees where salary > 12000;

select first_name || ' ' || last_name from employees where salary > 12000;

select *
from employees
where salary < 20000
and salary > 10000;

select * from employees where salary between 10000 and 20000;

select first_name,
last_name,
emp.salary,
dep.department_name
from employees emp,
departments dep
where emp.department_id = dep.department_id
and emp.salary > 10000;

select emp.*
from employees emp,
departments dep,
locations loc,
countries cou
where emp.department_id = dep.department_id
and dep.location_id = loc.location_id
and loc.country_id = cou.country_id
and cou.country_name = 'United States of America';

select * from countries;
select * from employees;
select * from locations;
select * from departments;

drop user lhq;
create user lhq identified by lhq123456;
grant dba to lhq;
grant connect, resource to lhq;
alter user sys identified by sysdba;
grant sysdba to lhq;

select emp.first_name userName,
man.first_name Manager
from hr.employees emp,
hr.employees man
where emp.employee_id = man.manager_id
order by Manager asc;

select emp.first_name userName,
dep.department_name Department
from hr.departments dep
left join hr.employees emp
on emp.department_id = dep.department_id;

select * from hr.countries;
select * from hr.employees;
select * from hr.locations;
select * from hr.departments;
select * from hr.jobs;

--1、查询所有员工的员工 姓名、部门名称、工作国家、工作地区、工作名称
select emp.first_name || ' ' || emp.last_name 姓名,
dep.department_name 部门名称,
loc.city 工作地区,
cou.country_name 工作国家,
job.job_title 工作名称
from hr.employees emp
full join hr.departments dep
on emp.department_id = dep.department_id
full join hr.locations loc
on dep.location_id = loc.location_id
full join hr.countries cou
on loc.country_id = cou.country_id
full join hr.jobs job
on emp.job_id = job.job_id
where emp.first_name is not null
order by 姓名;

select emp.first_name || ' ' || emp.last_name 姓名,
dep.department_name 部门名称,
loc.city 工作地区,
cou.country_name 工作国家,
job.job_title 工作名称
from hr.employees emp
left join hr.departments dep
on emp.department_id = dep.department_id
left join hr.locations loc
on dep.location_id = loc.location_id
left join hr.countries cou
on loc.country_id = cou.country_id
left join hr.jobs job
on emp.job_id = job.job_id
order by 姓名;
--2、查询所有薪资大于一万的员工以及其领导和部门
select emp.first_name || ' ' || emp.last_name 员工,
man.first_name || ' ' || man.last_name 领导,
dep.department_name 部门,
emp.salary 薪水
from hr.employees emp
left join hr.employees man
on emp.manager_id = man.employee_id
left join hr.departments dep
on emp.department_id = dep.department_id
where emp.salary >= 10000
order by 领导 asc;

select hr.emp.*,
man.first_name 领导,
dep.department_name
from hr.employees emp
left join hr.employees man
on emp.manager_id = man.employee_id
left join hr.departments dep
on emp.department_id = dep.department_id
where emp.salary >= 10000;
--3、查询所有有员工的部门
select emp.first_name || ' ' || emp.last_name 员工姓名,
dep.department_name 部门
from hr.employees emp
right join hr.departments dep
on dep.department_id = emp.department_id
where emp.department_id is not null
order by 部门;

select dep.department_id,
dep.department_name,
count(*)
from hr.employees emp,
hr.departments dep
where emp.department_id = dep.department_id
group by dep.department_id,
dep.department_name;

select dep.department_id,
dep.department_name,
count(emp.employee_id)
from hr.departments dep
left join hr.employees emp
on dep.department_id = emp.department_id
group by dep.department_id,
dep.department_name
having count(emp.employee_id) > 0;
--4、查询所有没有员工的部门
select emp.first_name || ' ' || emp.last_name 员工姓名,
dep.department_name 部门
from hr.employees emp
right join hr.departments dep
on dep.department_id = emp.department_id
where emp.first_name is null
order by 部门 asc;

select dep.department_id,
dep.department_name,
count(emp.employee_id)
from hr.departments dep
left join hr.employees emp
on dep.department_id = emp.department_id
group by dep.department_id,
dep.department_name
having count(emp.employee_id) = 0;
--5、查询所有在98~2000年入职的员工
select emp.first_name || ' ' || emp.last_name 姓名,
emp.hire_date 入职日期
from hr.employees emp
where emp.hire_date < to_date('2000-1-1', 'yyyy-mm-dd')
and emp.hire_date > to_date('1998-1-1', 'yyyy-mm-dd')
order by 入职日期 asc;

select *
from hr.employees
where hire_date between '1-1月-1998' and '1-1月-2000';
--6、查询所有部门以及部门领导
select emp.first_name || ' ' || emp.last_name 领导姓名,
dep.department_name 部门名称
from hr.employees emp
right join hr.departments dep
on dep.manager_id = emp.employee_id
order by 领导姓名 desc;

select *
from hr.departments dep
left join hr.employees emp
on dep.manager_id = emp.employee_id;
--7、查询所有平均工资大于8000的部门
select dep.department_name 部门,
avg(emp.salary) 部门平均工资
from hr.employees emp
right join hr.departments dep
on emp.department_id = dep.department_id
group by dep.department_name
having avg(emp.salary) >= 8000;
--8、查询每个部门最高工资和最低工资是多少
select dep.department_name 部门,
max(emp.salary) 部门最高工资
from hr.employees emp
right join hr.departments dep
on emp.department_id = dep.department_id
group by dep.department_name
having avg(emp.salary) > 0;
--9、查询每个国家有多少个员工
select cou.country_name 国家,
count(*) 员工数
from hr.employees emp
left join hr.departments dep
on emp.department_id = dep.department_id
left join hr.locations loc
on dep.location_id = loc.location_id
right join hr.countries cou
on loc.country_id = cou.country_id
group by cou.country_name
order by 国家;
--10、查询每个部门总工资是多少
select dep.department_name 部门,
sum(emp.salary) 部门平均工资
from hr.employees emp
right join hr.departments dep
on emp.department_id = dep.department_id
group by dep.department_name
having avg(emp.salary) > 0;
--11、查询工资大于12000的员工姓名和工资
select emp.first_name || ' ' || emp.last_name 员工姓名,
emp.salary 工资
from hr.employees emp
where salary > 12000;
--12、查询员工号为176的员工的姓名和部门号
select emp.first_name || ' ' || emp.last_name 员工姓名,
emp.department_id
from hr.employees emp
where emp.employee_id = 176;
--13、选择工资不在5000到12000的员工的姓名和工资
select emp.first_name || ' ' || emp.last_name 员工姓名,
emp.salary 工资
from hr.employees emp
where salary < 5000
or salary > 12000;
--14、选择雇用时间在1908-02-01到1908-05-01之间的员工姓名,job_id和雇用时间
select emp.first_name || ' ' || emp.last_name 员工姓名,
emp.job_id 员工号,
emp.hire_date 雇用时间
from hr.employees emp
where emp.hire_date between '31-1月-1998' and '2-5月-1998';
--15、选择在20、50号部门工作的员工姓名和部门号
select emp.first_name || ' ' || emp.last_name 员工姓名,
emp.department_id
from hr.employees emp
where emp.department_id = 20
or emp.department_id = 50;
--16、选择在1908年雇用的员工的姓名和雇用时间
select emp.first_name || ' ' || emp.last_name 员工姓名,
emp.hire_date 雇用时间
from hr.employees emp
where emp.hire_date between '31-12月-1997' and '1-1月-1999';
--17、选择公司中没有管理者的员工姓名及job_id
select emp.first_name || ' ' || emp.last_name 员工姓名,
emp.job_id 员工号
from hr.employees emp
where emp.manager_id is null;
--18、查询员工姓名的第三个字母是a的员工姓名
select emp.first_name || ' ' || emp.last_name 员工姓名
from hr.employees emp
where emp.first_name like '__a%';
--19、查询每一个工种的人数
select emp.job_id 工作类别,
count(*) 员工数
from hr.employees emp
group by emp.job_id
having count(*) > 0;
--20、查询每一个领导手下的员工数量并排序
select emp.manager_id 领导,
count(*) 员工数
from hr.employees emp
group by emp.manager_id
having count(*) > 0
order by 领导;

select * from hr.jobs;
select * from hr.countries;
select * from hr.employees;
select * from hr.locations;
select * from hr.departments;

create table customers(customers_id number(10) primary key,
customers_account varchar2(20) not null unique,
customers_password varchar2(18) not null,
customers_name varchar2(30),
customers_gender varchar2(6),
customers_birth date not null,
customers_phone number(11) not null,
customers_mail varchar2(30),
customers_address varchar2(18) not null);

create table orderdetail(

orderdetail_id number(10) primary key,
goods_serialnum number(10) not null unique,
goods_num number(10) not null,
goods_price number(10, 2) not null,
customers_id number(10),
foreign key(customers_id) references
customers(customers_id));

create SEQUENCE test_sequence INCREMENT by 1  start
with 10000    NOMAXVALUE NOCYCLE  CACHE 10;

insert into customers
values
(test_sequence.nextval, 'Dream68686868', '8888-6666', 'ycr', 'female',
to_date('21-08-2003', 'DD-MM-YYYY'), 13886868987, '123456@qq.mail',
'ChinaJiangSu');

select * from orderdetail;
select * from customers;
select test_sequence.Currval from dual;

drop table orderdetail;
drop table customers;
drop SEQUENCE test_sequence;

alter table orderdetail rename column orderdetail to orderdetail_id;

------------------------------------------------------------------------------------------------------

create table emp(emp_id number(10),
first_name varchar2(20),
last_name varchar2(20),
salary number(10));

create table interest(interestId number(10) primary key,
interest varchar2(20) unique);

create table users(userId number(10) primary key,
USERNAME varchar2(20),
PASSWORD varchar2(20),
GENDER varchar2(20),
CITY varchar2(20),
TEXT varchar2(20));

create table users_interest(interestId number(10),
userId number(10),
primary key(interestId, userId), --联合主键,当联合主键不同时和其让数据相同时,那么就不算主键重复
foreign key(interestId) references
interest(interestId),
foreign key(userId) references users(userId));

create SEQUENCE user_users INCREMENT by 1  start
with 10000    NOMAXVALUE NOCYCLE  CACHE 10;

select * from interest;
select * from users;
select * from users_interest;
select * from emp;

drop table emp;
drop table users_interest;
drop table users;
drop table interest;
drop SEQUENCE user_users;

insert into emp value
(select emp.employee_id,
emp.first_name,
emp.last_name,
emp.salary
from hr.employees emp);

insert into users
values
(user_users.nextval, 'lu', '123', 'male', 'nanjing', 'aaaa');
insert into users
values
(user_users.nextval, 'zhao', '123', 'female', 'guizhou', 'bbbb');
insert into users
values
(user_users.nextval, 'qian', '123', 'female', 'beijing', 'cccc');
insert into users
values
(user_users.nextval, 'sun', '123', 'male', 'changzhou', 'dddd');
insert into users
values
(user_users.nextval, 'li', '123', 'female', 'suzhou', 'eeee');

insert into interest values (1, '哭');
insert into interest values (2, '玩');
insert into interest values (3, '闹');
insert into interest values (4, '蹦');
insert into interest values (5, '跳');
insert into interest values (6, '跑');
insert into interest values (7, '睡');
insert into interest values (8, '吃');
commit;
rollback;


drop user lu;
create user lu identified by lu123456;
grant sysdba to lu;
grant dba to lu;

原文地址:https://www.cnblogs.com/Dream-Lasting/p/4184381.html