要求采用 SQL 语句及 JAVA 代码段判断 在 2003-3-10 下午 3:00~4:00 3 号会议室是否空闲。
请写出有关 SQL 语句以及相关 JAVA 的代码段。 答:
1)Sql 语句:
create table meeting( id number primary key , room_id varchar(10), isUsed char, begin timestamp, end timestamp );
insert into meeting values(1,'201',1,to_date('2003-03-10 15:00:00','yyyy-mm-dd hh24:mi:ss')
,to_date('2003-03-10 16:00:00','yyyy-mm-dd hh24:mi:ss'));
insert into meeting values(2,'201',1,to_date('2003-03-10 17:00:00','yyyy-mm-dd hh24:mi:ss')
,to_date('2003-03-10 22:00:00','yyyy-mm-dd hh24:mi:ss')); 2)
package com.tarena; import java.sql.*; public class Test {
public static void main(String[] args) {
String driverName = \ String url = \ String username = \ String pwd = \ Connection con = null; Statement stmt = null; ResultSet rs = null; try {
Class.forName(driverName);
con = DriverManager.getConnection(url, username, pwd); stmt = con.createStatement();
String sql = \ \
\ ((begin between to_date('2003-03-10 15:00:00','yyyy-mm-dd hh24:mi:ss') and to_date('2003-03-10 16:00:00','yyyy-mm-dd hh24:mi:ss')) \ \between to_date('2003-03-10 15:00:00','yyyy-mm-dd hh24:mi:ss')
and to_date('2003-03-10 16:00:00','yyyy-mm-dd hh24:mi:ss')))\ \ if (stmt.execute(sql)) {
rs = stmt.getResultSet();
}
StringBuffer sb = new StringBuffer(); while (rs.next()) {
sb.append(\ }
System.out.print(sb.toString()); } catch (Exception e) { e.printStackTrace(); } finally { try {
con.close();
} catch (Exception e1) { e1.printStackTrace(); } } } }
26、下面是两个数据库表,分别记录员工姓名和工资 T_EMPLOYEE
ID NAME 2 张三 3 李四 5 王五 ··· ·· ··· ·· T_SALARY
ID SALARY 2 3400 3 4300 5 2500 ··· ·· ··· ··
1.查询表 T_EMPLOYEE 中 id = 3 的员工记录 2.查询表 T_EMPLOYEE 中所有员工记录
3.联合查询表 T_EMPLOYEE 和 T_SALARY 中所有员工的姓名和工资记录,并按照薪水从高到低排列 答:
1).select * from t_employee where id = 3; 2).select * from t_employee; 3).select e.name,s.salary
from t_employee e,t_salary s where e.id=s.id
order by s.salary;
27、有三张表,学生表 S,课程表 C,学生课程表 SC,学生可以选修多门课程,一门课程可能被多个
学生选修,通过 SC 表关联。 1)写出建表以及插入语句;
2)写出 SQL 语句,查询选修了所有选修课程的学生;
3)写出 SQL 语句,查询选修了至少 2 门以上的课程的学生。 答: 1)
create table student (id number(10) primary key,name varchar2(20)); create table course (id number(10) primary key,name varchar2(20));
create table sc(sid number(10) references student(id),cid number(10) references course(id),grade number(4,2)); insert into student values(1,'feifei'); insert into student values(2,'jingjing'); insert into student values(3,'nannan'); insert into student values(4,'yuanyuan'); insert into student values(5,'jiejie'); insert into course values(1,'corejava'); insert into course values(2,'c++'); insert into course values(3,'jdbc'); insert into course values(4,'hibernate'); insert into sc values(1,1,98); insert into sc values(2,1,97); insert into sc values(3,1,94); insert into sc values(4,1,92); insert into sc values(5,1,93); insert into sc values(1,2,94); insert into sc values(2,2,92); insert into sc values(3,2,95); insert into sc values(5,2,97); insert into sc values(1,3,92); insert into sc values(2,3,92); insert into sc values(4,3,91); insert into sc values(1,4,99); insert into sc values(3,4,89);
2)select sid,count(*) from sc group by sid having count(*)=(select count(*) from course); 3)select sid,count(*) from sc group by sid having count(*)>=2; 28、SQL 题 --操作员表
select pkid,name,sys_corp_id '单位主键' from base_operator --角色表
select pkid,sys_corp_id '单位主键',name from base_role --角色与操作员的对应关系表
select pkid,base_role_id '角色主键',base_operator_id '操作员主键' from base_role_operator --单位表
select pkid,name from sys_corps --问题:
--1.显示出'开发'公司所拥有的操作员
--2.显示出'开发'公司每个角色所对应的操作员信息 --3.显示出'开发'公司每个角色所对应的操作员的个数 答:1).Select name from base_operator;
2).Select op.pkid,op.name,op.sys_corp_id
From base_operator op,base_role_operator ro ,base_role br Where ro.base_operator_id =op.pkid And br.pkid=ro.base_role_id; 3).Select max(br.name) ,count(*)
From base_role_operator ro,base_role br Where ro.base_role_id=br.pkid Group by br.base_role_id;
29、说明在一个系统中权限管理中应该有哪些表、表间关系、各表哪些功能? 答:
角色和权限表是 m:n 的关系 操作表和权限表是 1:m 的关系 模块表和操作表是 1:m 的关系 表的大体设计如下: -- 角色表
create table roles (
id number primary key, name varchar2(20) );
-- 系统模块表
create table modules (
id number primary key, name varchar2(50), url varchar2(50) );
-- 模块操作表
create table operations ( id number primary key, name varchar2(20), mid number,
constraint foreign key (mid) references modules(id) );
-- 权限表
create table rights (
id number primary key, name varchar2(20),
url varchar2(50),
operationid int references operations(id) );
-- 角色权限设置表 create table rolerights (
id number primary key, roleid number references roles(id), rightid number references rights(id) );
30、说出下面语句的作用: Select rownum,last_name,salary
From (select last_name,salary from s_emp order by salary desc) Where rownum<=10;
答:选出 s_emp 表中工资前 10 名员工的姓名和工资