oracle script

--oracle script--

CREATE OR REPLACE FUNCTION is_table_exists(tableName VARCHAR2)  
RETURN BOOLEAN IS  
    row_count  NUMBER;  
    is_exists  BOOLEAN;  
BEGIN  
	--
    SELECT count(1) INTO row_count FROM dual  
    WHERE EXISTS (SELECT * FROM user_tables WHERE table_name = UPPER(tableName));
    
    --
    IF row_count = 0 THEN  
      is_exists := FALSE;  
    ELSE
      v_sql VARCHAR2;
      v_sql = 'DROP TABEL' || tableName;
      --EXECUTE IMMEDIATE v_sql USING 'ZENGWENFENG','001';
      EXECUTE IMMEDIATE v_sql;
      is_exists := TRUE;
    END IF;
    
    --
    RETURN is_exists;  
END;

is_table_exists('student');
CREATE TABLE student
(
	id VARCHAR2(10),
	name VARCHAR2(20),
	age NUMBER(2)
);
COMMENT ON TABLE student IS '学生';
COMMENT ON COLUMN student.id is '主键';
COMMENT ON COLUMN student.name is '学生姓名';
COMMENT ON COLUMN student.age is '学生年龄';
ALTER TABLE student ADD CONSTRAINT pk_student PRIMARY KEY(id);

INSERT INTO student (id, name, age) VALUES ('005129', 'zhangsan', 22);
INSERT INTO student (id, name, age) VALUES ('005128', 'lisi', 24);
INSERT INTO student (id, name, age) VALUES ('005127', 'wangwu', 27);
INSERT INTO student (id, name, age) VALUES ('005126', 'xiaoliu', 25);
------------------------------------------------------------------------------------------
is_table_exists('course');
CREATE TABLE course
(
	id VARCHAR2(10),
	name VARCHAR2(20),
	hours NUMBER,
	teacher VARCHAR2(20)
);
COMMENT ON TABLE course IS '课程表';
COMMENT ON COLUMN course.id is '课程主键';
COMMENT ON COLUMN course.name is '课程姓名';
COMMENT ON COLUMN course.hours is '课程学时';
COMMENT ON COLUMN course.teacher is '课程老师';
ALTER TABLE course ADD CONSTRAINT pk_course PRIMARY KEY(id);

INSERT INTO course (id, name, hours, teacher) VALUES ('001', 'math', 2, 'li');
INSERT INTO course (id, name, hours, teacher) VALUES ('002', 'english', 3, 'wang');
INSERT INTO course (id, name, hours, teacher) VALUES ('003', 'chinese', 4, 'zhang');
------------------------------------------------------------------------------------------
is_table_exists('student_course');
CREATE TABLE student_course
(
	s_id VARCHAR2(10),
	c_id VARCHAR2(10),
	grade NUMBER(4,2)
);
COMMENT ON TABLE student_course IS '课程表';
COMMENT ON COLUMN student_course.s_id IS '学生主键 student.id';
COMMENT ON COLUMN student_course.c_id IS '课程主键 course.id';
COMMENT ON COLUMN student_course.grade IS '分数';
ALTER TABLE student_course ADD CONSTRAINT uk_student_course UNIQUE (s_id, c_id);

INSERT INTO student_course (s_id, c_id, grade) VALUES ('005129', '001', 50);
INSERT INTO student_course (s_id, c_id, grade) VALUES ('005129', '003', 97);

INSERT INTO student_course (s_id, c_id, grade) VALUES ('005128', '001', 86);
INSERT INTO student_course (s_id, c_id, grade) VALUES ('005128', '002', 76);

INSERT INTO student_course (s_id, c_id, grade) VALUES ('005127', '002', 85);
INSERT INTO student_course (s_id, c_id, grade) VALUES ('005127', '003', 91);

INSERT INTO student_course (s_id, c_id, grade) VALUES ('005126', '001', 67);
INSERT INTO student_course (s_id, c_id, grade) VALUES ('005126', '002', 61);
INSERT INTO student_course (s_id, c_id, grade) VALUES ('005126', '003', 80);
------------------------------------------------------------------------------------------

SELECT * FROM student_course ORDER BY s_id, c_id;

SELECT s_id, COUNT(1) AS cnt FROM student_course GROUP BY s_id;
SELECT s_id, COUNT(1) AS cnt FROM student_course GROUP BY s_id HAVING COUNT(1) > 2

SELECT s_id FROM student_course GROUP BY s_id HAVING MIN(grade)> 80 AND MAX(grade) < 100
SELECT s_id FROM student_course GROUP BY s_id HAVING MAX(grade)> 60 

SELECT s_id, c_id, grade FROM student_course WHERE grade > 81
UNION 
SELECT s_id, c_id, grade FROM student_course WHERE grade < 60;
------------------------------------------------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值