撰写人——软工二班——陈喜平
– 实验内容:
– 一、简单查询
– 编写简单查询语句,理解笛卡尔积、选择、投影的概念及其在SQL中的实现
–SQL PL/SQL SQLPLUS
– DDL :CREATE ALTER DROP 数据定义语言
– DML INSERT DELETE UPDATE SELECT 数据操纵语言
– DCL GRANT REVOKE 数据控制语言
– 关系代数无助基本操作
– 行 列 二维表
– 并集 两个同列集合,行相加 UNION
– 差集 两个同列集合,行相减
– 笛卡儿积 两个集合,列相加,行相乘
– 选择 一个集合,减行
– 投影 一个集合,减列
-- set pagesize 150;
-- set linesize 160;
-- SELECT * FROM EMP;
-- SELECT * FROM DEPT;
– 查询员工表与部门表的笛卡尔积
-- SELECT *
-- FROM EMP, DEPT
-- WHERE 1=1;
-- 在上述操作的基础上完成连接的选择操作和投影操作
-- SELECT EMP.*,DEPT.dname,DEPT.loc
-- FROM EMP, DEPT
-- WHERE EMP.DEPTNO = DEPT.DEPTNO
-- ORDER BY hiredate desc;
-- 对查询数据进行排序操作
-- SELECT EMP.*,DEPT.dname,DEPT.loc
-- FROM EMP, DEPT
-- WHERE EMP.DEPTNO = DEPT.DEPTNO
-- ORDER BY EMP.DEPTNO,sal desc;
– ORACLE 查看所有表名:
-- SELECT TABLE_NAME FROM USER_TABLES
– 编写查询语句,完成对员工信息、部门情况等的基本查询
– 查询工资超过2500的员工基本信息
SELECT *
FROM EMP
WHERE sal>=2500;
– 查询月总收入超过2500的员工基本信息
SELECT *
FROM EMP
WHERE sal+comm>=2500;
– 查询工资超过2500的员工的姓名及其所在部门名称
SELECt name,dname
FROM EMP DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
AND sal>=2500;
– 查询所有员工的工资、奖金、总收入,并按部门编号排序
SELECT sal,comm,sal+nvl(comm,0)
FROM EMP
WHERE 1=1
ORDER BY DEPTNO;
– 查询全公司的平均工资、最高工资、最低工资和总奖金数。
SELECT AVG(SAL) avgsalary,
max(sal) maxsalary,
min(sal) minsalary,
sum(nvl(comm,0)) summaryofcomm
FROM EMP;
– 二、分组查询
– 编写分组查询语句,理解分组查询的意义
– 编写分组查询语句,实现分组查询的应用
– 三、增删改语句
– 添加数据
-- CREATE TABLE student(
-- id char(4),
-- name varchar(8),
-- gender number(1),--1为女 0为男
-- height number(6,2),
-- weight number(6,2),
-- address varchar(10)
-- );
-- INSERT INTO student(id,name,gender,height,weight,address)
-- VALUES(
-- '001',
-- 'Bob',
-- 1,
-- 52.1,
-- 154,
-- 'LouDi'
-- );
-- SELECT * FROM student;
-- INSERT INTO student(id,name,gender,height,weight,address)
-- VALUES(
-- '002',
-- 'Ana',
-- 0,
-- 60.30,
-- 178,
-- 'XiangTan'
-- );
-- SELECT * FROM student;
-- INSERT INTO student(id,name,gender,height,weight,address)
-- VALUES(
-- '003',
-- 'Coi',
-- 1,
-- 48.92,
-- 158,
-- 'ChangSha'
-- );
-- SELECT * FROM student;
-- INSERT INTO student(id,name,gender,height,weight,address)
-- VALUES(
-- '004',
-- 'DAV',
-- 0,
-- 62.39,
-- 180,
-- 'ShaoYang'
-- );
-- SELECT * FROM student;
-- INSERT INTO student(id,name,gender,height,weight,address)
-- VALUES(
-- '004',
-- 'DAV',
-- 0,
-- 63.47,
-- 183,
-- 'YonZhou'
-- );
-- SELECT * FROM student;
-- DROP TABLE student;
– 创建一个相同的表同时将表中所有数据复制过来
-- DROP TABLE student2;
-- CREATE TABLE student2
-- as SELECT * FROM student WHERE 1=1;
-- SELECT * FROM student2;
– -- 删除数据
-- DELETE FROM student2
-- WHERE height=62.39;
-- SELECT * FROM student2;
– 修改数据
-- SELECT *
-- FROM student;
-- UPDATE student set address='LouDI' WHERE id='001';
-- SELECT *
-- FROM student;
-- UPDATE student set height='199' WHERE id='001';
-- SELECT *
-- FROM student;
-- UPDATE student set weight='250' WHERE id='001';
–创建一个相同的表但是里面的字段为空值
-- CREATE TABLE student3
-- as SELECT * FROM student WHERE 1=0;
-- ALTER TABLE student3
-- modify id char(4) default '001';
-- ALTER TABLE student3
-- modify name varchar(8) default 'XXX';
-- ALTER TABLE student3
-- modify gender number(1) default 1;
-- ALTER TABLE student3
-- modify height number(6,2) default 168;
-- ALTER TABLE student3
-- modify weight number(6,2) default 52.00;
-- ALTER TABLE student3
-- modify address varchar(10) default 'LouDi';
-- SELECT * FROM student3;
-- prompt insert method1
-- INSERT INTO student3(id,name,gender,height,weight,address)
-- VALUES(
-- '004',
-- 'DAV',
-- 0,
-- 63.47,
-- 183,
-- 'YonZhou'
-- );