1. 程式人生 > >Oracle資料庫DML(資料操縱語言)參考程式碼,簡單查詢,分組查詢,簡單增刪改操作

Oracle資料庫DML(資料操縱語言)參考程式碼,簡單查詢,分組查詢,簡單增刪改操作

撰寫人——軟工二班——陳喜平
– 實驗內容:
– 一、簡單查詢
– 編寫簡單查詢語句,理解笛卡爾積、選擇、投影的概念及其在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'
-- );