sql语句

发布时间 : 星期四 文章sql语句更新完毕开始阅读

where e.department_id=d.department_id group by d.department_name having count(e.employee_id)>4

--4.查询工作不为AD_PRES,工资的和大于等于25000的工作编号和每种工作工资的和。 select job_id,sum(salary) from employees group by job_id

having job_id not like'AD_PRES'and sum(salary)>=25000

--5.显示经理号码,这个经理所管理员工的最低工资,不包括经理号为空的,不包括最低工资小于3000的,按最低工资由高到低排序。 select manager_id,min(salary) from employees

group by manager_id

having manager_id is not null and min(salary)>3000 order by min(salary)desc

-----------------------第七章---------------------

--1.查询工资高于编号为113的员工工资,并且和102号员工从事相同工作的员工的编号、姓名及工资。

select employee_id,last_name,salary from employees

where salary>(select salary

from employees

where employee_id=113) and job_id=(select job_id

from employees

where employee_id=102) --2.工资最高的员工姓名和工资。 select last_name,salary from employees

WHERE salary in (SELECT Max(salary) FROM employees);

--3.查询部门最低工资高于100号部门最低工资的部门的编号、名称及部门最低工资。 select e.department_id,d.department_name,min(e.salary) from departments d ,employees e

where d.department_id=e.department_id

group by e.department_id,d.department_name having min(e.salary)>(select min(salary) from employees

where employees.department_id=100) order by e.department_id;

--4.查询员工工资为其部门最低工资的员工的编号和姓名及工资。 select e.employee_id,e.last_name

from employees e

where e.salary in(select min(salary) from employees

group by department_id);

--5.显示经理是KING的员工姓名,工资。 select last_name,first_name,salary from employees

where manager_id in(select employee_id from employees

where last_name='King'); -----------------------------第八章--------------------

--1.向departments表中的部门编号、部门名称、区域编号三列插入两条纪录,分别为:300,?QQQ?,1500和310,?TTT?,1700。观察执行结果。

INSERT INTO departments (department_id,department_name,location_id) VALUES(300,'QQQ',1500);

INSERT INTO departments (department_id,department_name,location_id) VALUES(310,'TTT',1700);

--2.使用两种方法完成向列操作,试在新部门的管理者和工作地区编号还没有确定的情况下,向部门表中插入新部门信息如下:部门编号 320及330,部门名称F1及F2。 INSERT INTO departments (department_id,department_name) VALUES(320,'F1');

INSERT INTO departments (department_id,department_name) VALUES(330,'F2');

INSERT INTO departments

VALUES(320,'F1', NULL,NULL); INSERT INTO departments VALUES(30,'F2', NULL,NULL); --3.按顺序执行下列操作:

--1、插入一个新的部门信息,开始事务。部门编号350,名称 人力资源 管理者 100 区域编号 1700。

INSERT INTO departments

VALUES(350,'人力资源', 100,1700); --2、建立保存点a。 SAVEPOINT a

--3、查询插入的数据是否存在。 select * from departments

--4、删除所有部门编号大于200的部门 delete from departments where department_id>200 --5、建立保存点b。 SAVEPOINT b

--6、查询还有哪些部门信息存在。 select * from departments

--7、更新部门编号为10的部门的管理者的编号为110。 UPDATE departments SET salary=salary*(1+0.2); --8、查询当前部门信息。 select * from departments

--9、执行回滚操作,但不回滚到事务的最开始,而是回滚到保存点b。 ROLLBACK TO b

--10、提交事务,提交后事务已结束。 COMMIT

--11、查看最终数据修改结果。 select * from departments

-----------------------------第九章-------------------------------

--1.创建表date_test,包含列d,类型为date型。试向date_test表中插入两条记录,一条当前系统日期记录,一条记录为“1998-08-18”。 CREATE TABLE date_test (d date); insert into date_test values(sysdate);

insert into date_test values('18-8月-1998');

--2.创建与departments表相同表结构的表dtest,将departments表中部门编号在200之前的信息插入该表。

CREATE TABLE dtest AS

SELECT *

FROM departments

WHERE department_id<200;

--3.创建与employees表结果相同的表empl,并将其部门编号为前50号的部门的信息复制到empl表。

CREATE TABLE empl AS

SELECT *

FROM employees

WHERE department_id<=50

--4.试创建student表,要包含以下信息: --学生编号(sno):字符型(定长)4位 主键 --学生姓名(sname):字符型(变长)8位 唯一 --学生年龄(sage):数值型 非空

CREATE TABLE student (sno char(4) PRIMARY KEY,sname VARCHAR2 (8) UNIQUE ,sage NUMBER not null);

--5.试创建sc表(成绩表),要包含以下信息: --学生编号(sno):字符型(定长)4位 主键 外键 --课程编号(cno):字符型(变长)8位 主键 --选课成绩(grade):数值型 CREATE TABLE sc( sno char(4) ,

cn varchar2(8) primary key,

grade number(4) );

--6.试为student增加一列学生性别 默认值 “女”。 ALTER TABLE student ADD (sex CHAR(1));

ALTER TABLE student MODIFY (sex DEFAULT '女');

--7.试修改学生姓名列数据类型为定长字符型10位。 ALTER TABLE student MODIFY (sname CHAR(10));

--8.试修改学生年龄列允许为空。

ALTER TABLE student MODIFY sage null;

--9.试为选课成绩列添加校验(check)约束为1-100; alter table sc add constraint grade check (grade between 1 and 100); --10.试删除sc表中的外键约束。

Alter table sc drop constraint EMP_DEPT_FK; ---------------------------第十章--------------------------

--1.试创建视图v_emp_80,包含80号部门的员工编号,姓名,年薪列。

grant create view to neu;--在system下执行

CREATE OR REPLACE VIEW v_emp_80 AS

select employee_id,last_name,first_name,salary*12 ANN_SALARY from employees

where department_id=80;

--2.从视图v_emp_80中查询年薪在12万元以上的员工的信息。 select * from v_emp_80 where ANN_SALARY>120000

--3.创建试图v_dml,包含部门编号大于100号的部门的信息。 CREATE OR REPLACE VIEW v_dml AS select *

from departments

where department_id>100;

--4.从视图v_dml插入如下记录:部门编号360,部门名称AAA,管理者编号101,区域编号1700. insert into v_dml values(360,'AAA',101,1700); select * from v_dml

--5.从视图v_dml中删除300号以上的部门信息。 delete from v_dml where department_id>300 --6.给表employees创建同义词em。 grant create SYNONYM to neu;--给权限 CREATE SYNONYM em

联系合同范文客服:xxxxx#qq.com(#替换为@)