数据库学习
一、数据表设计图

二、创建语句
二、创建语句
/*==============================================================*/
/* DBMS name: ORACLE Version 9i */
/* Created on: 2008-11-10 23:39:24 */
/*==============================================================*/
alter table "emp"
drop constraint FK_EMP_REFERENCE_DEPT;
drop table "dept" cascade constraints;
drop table "emp" cascade constraints;
drop table "salgrade" cascade constraints;
/*==============================================================*/
/* Table: "dept" */
/*==============================================================*/
create table dept (
deptno NUMBER(11) not null,
dname VARCHAR2(15) not null,
loc VARCHAR2(15) not null,
constraint PK_DEPT primary key (deptno)
);
/*==============================================================*/
/* Table: "emp" */
/*==============================================================*/
create table emp (
empno NUMBER(11) not null,
deptno NUMBER(11),
ename VARCHAR2(15) not null,
sal NUMBER(11) not null,
job VARCHAR2(15) not null,
mgr NUMBER(11) not null,
hirdate DATE not null,
comm NUMBER(11) not null,
constraint PK_EMP primary key (empno)
);
/*==============================================================*/
/* Table: salgrade */
/*==============================================================*/
create table salgrade (
grade NUMBER(11) not null,
losal NUMBER(11) not null,
hisal NUMBER(11) not null,
constraint PK_SALGRADE primary key (grade)
);
alter table emp
add constraint FK_EMP_REFERENCE_DEPT foreign key (deptno)
references dept (deptno);
三、测试要求及语句
/**
*公司工资最高的员工列表 子查询
*/
select t.ename,t.sal from emp t where t.sal =
(
select max(sal) from emp
)
/**
*查询每一个员工的经理人及自己的名字
*/
select e1.ename,e2.ename from emp e1 join emp e2 on (e1.mgr = e2.empno)
/**
*查询公司平均薪水的等级
*/
select s.grade from salgrade s where
(select avg(t.sal) from emp t) between s.losal and s.hisal
/**
*求部门中那些人的工资最高
*/
select d.dname,ename,sal from
(select t.deptno,ename,sal from
(select deptno,max(sal) as max_sal from emp group by deptno) e
join emp t on (e.deptno = t.deptno and t.sal = max_sal)
) et
join dept d on (d.deptno = et.deptno)
/**
*查询部门平均薪水的等级
*/
select d.dname,avg_sal,grade from
(select deptno,avg_sal,grade from
(select deptno,avg(sal) as avg_sal from emp group by deptno) e
join salgrade s on (e.avg_sal between s.losal and s.hisal )
) es
join dept d on (es.deptno = d.deptno)
/**
*求部门的平均薪水等级
*/
select deptno,avg(grade) from
(select deptno,grade from emp e join salgrade s on (e.sal between s.losal and s.hisal)) t
group by t.deptno
/**
* 求那些人是经理人
*/
select ename from emp e
where empno in (select distinct mgr from emp)
/**
*不准用组函数 求薪水的最高值
*/
select ename from emp
where empno not in
(select distinct e1.empno from emp e1
join emp e2 on (e1.sal<e2.sal)
)
/**
*平均薪水最高的部门编号与名称
*/
select d.deptno,dname from
(select deptno,avg(sal) avg_sal from emp group by deptno) t1
join dept d on (d.deptno = t1.deptno)
where avg_sal =
(select max(avg_sal) from
(select deptno,avg(sal) avg_sal from emp group by deptno) t2
)
/**
*求平均薪水的等级最低的部门名称
*/
select dname from dept d
where d.deptno in (
select deptno from
(
select deptno,grade from
(select deptno,avg(sal) avg_sal from emp group by deptno) t1
join salgrade g on (avg_sal between g.losal and g.hisal)
) t2
where t2.grade =
(
select min(grade) from
(
select deptno,grade from
(select deptno,avg(sal) avg_sal from emp group by deptno) t1
join salgrade g on (avg_sal between g.losal and g.hisal)
) t3
)
)
/**
*求部门经理人中平均薪水最低的部门名称
*/
select d.dname,t1.avg_sal from dept d
join
(
select deptno,avg(sal) avg_sal from
(
select e2.deptno,e2.ename,e2.sal from emp e1
join emp e2 on (e1.mgr = e2.empno)
) t
group by deptno
) t1
on (d.deptno = t1.deptno)
where avg_sal =
(
select min(avg_sal) from
(
select deptno,avg(sal) avg_sal from
(
select e2.deptno,e2.ename,e2.sal from emp e1
join emp e2 on (e1.mgr = e2.empno)
) t
group by deptno
)
)
/**
*求必普通员工的最高薪水还要高的经理人名称
*/
select ename from
(
select e2.ename,e2.empno,e2.sal from emp e1
join emp e2 on (e1.mgr = e2.empno)
) t
where t.sal >
(
select max(e.sal) from emp e
where e.empno not in
(
select e1.mgr from emp e1
join emp e2 on (e1.mgr = e2.empno)
)
)
/**
*求薪水最高的第6名到10名雇员
*/
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM (select e1.ename,e1.sal from emp e1 order by e1.sal desc)) A
WHERE ROWNUM <= 10
)
WHERE RN >= 6
lunzi
2008-11-11 22:09:17
阅读:41
评论:0
引用:0
错误提示:Package Reference constraint name maximum length is limited to 15 characters
原因及解决方式:
导致生成建表SQL时通不过,是默认设置的问题,改下就可以了。
调整以下参数:
Database=>Edit current DBMS 数据库类型::Script\Objects\MaxConstLen value=>255
Database=>Edit current DBMS 数据库类型::Script\Objects\Table\Maxlen value=>255
Database=>Edit current DBMS 数据库类型::Script\Objects\Column\Maxlen value=>255
参考资料
原因及解决方式:
导致生成建表SQL时通不过,是默认设置的问题,改下就可以了。
调整以下参数:
Database=>Edit current DBMS 数据库类型::Script\Objects\MaxConstLen value=>255
Database=>Edit current DBMS 数据库类型::Script\Objects\Table\Maxlen value=>255
Database=>Edit current DBMS 数据库类型::Script\Objects\Column\Maxlen value=>255
参考资料
lunzi
2008-11-10 23:41:38
阅读:13
评论:0
引用:0
lunzi
2008-11-07 01:36:47
阅读:163
评论:0
引用:0
SQLServer2005SP1-KB913090-x86-CHS.exe,但是在安装时候,提示:此计算机上没有与此安装软件包匹配的产品。
原因:SQLServer2005SP1-KB913090-x86-CHS.exe只是个补丁
参考资料:
http://topic.csdn.net/t/20060527/23/4783538.html
原因:SQLServer2005SP1-KB913090-x86-CHS.exe只是个补丁
参考资料:
http://topic.csdn.net/t/20060527/23/4783538.html
lunzi
2008-10-21 10:43:49
阅读:136
评论:0
引用:0
SELECT Sysobjects.name AS TABLE_NAME, syscolumns.Id, syscolumns.name AS COLUMN_NAME,
systypes.name AS DATA_TYPE, syscolumns.length as CHARACTER_MAXIMUM_LENGTH,
sysproperties.[value] AS COLUMN_DESCRIPTION, syscomments.text as
COLUMN_DEFAULT,syscolumns.isnullable as IS_NULLABLE FROM syscolumns
INNER JOIN systypes
ON syscolumns.xtype = systypes.xtype
LEFT JOIN sysobjects ON syscolumns.id = sysobjects.id
LEFT OUTER JOIN sysproperties ON
( sysproperties.smallid = syscolumns.colid
AND sysproperties.id = syscolumns.id)
LEFT OUTER JOIN syscomments ON syscolumns.cdefault = syscomments.id
WHERE syscolumns.id IN
(SELECT id FROM SYSOBJECTS WHERE xtype = 'U') AND (systypes.name <> 'sysname')
ORDER BY syscolumns.colid
参考资料一
参考资料二
systypes.name AS DATA_TYPE, syscolumns.length as CHARACTER_MAXIMUM_LENGTH,
sysproperties.[value] AS COLUMN_DESCRIPTION, syscomments.text as
COLUMN_DEFAULT,syscolumns.isnullable as IS_NULLABLE FROM syscolumns
INNER JOIN systypes
ON syscolumns.xtype = systypes.xtype
LEFT JOIN sysobjects ON syscolumns.id = sysobjects.id
LEFT OUTER JOIN sysproperties ON
( sysproperties.smallid = syscolumns.colid
AND sysproperties.id = syscolumns.id)
LEFT OUTER JOIN syscomments ON syscolumns.cdefault = syscomments.id
WHERE syscolumns.id IN
(SELECT id FROM SYSOBJECTS WHERE xtype = 'U') AND (systypes.name <> 'sysname')
ORDER BY syscolumns.colid
参考资料一
参考资料二
lunzi
2008-10-09 15:32:43
阅读:11
评论:0
引用:0
Sever2000后1433端口未开放的处理
该文章转载自IT学习网:http://www.itstudy.cn/www/articleContent.asp?id=20
无法链接到SQL Server远程服务器的解决资料
该文章转载自IT学习网:http://www.itstudy.cn/www/articleContent.asp?id=20
无法链接到SQL Server远程服务器的解决资料
lunzi
2008-10-07 11:06:18
阅读:12
评论:1
引用:0
lunzi
2008-07-28 21:26:56
阅读:67
评论:0
引用:0
insert into A(字段一) select 字段一 from B
lunzi
2008-07-28 15:31:55
阅读:64
评论:0
引用:0
var fso = new ActiveXObject("Scripting.FileSystemObject");
var a = fso.CreateTextFile("c:\\testfile.txt", true);
a.WriteLine("This is a test.");
a.Close();
var a = fso.CreateTextFile("c:\\testfile.txt", true);
a.WriteLine("This is a test.");
a.Close();
lunzi
2008-07-22 12:22:28
阅读:93
评论:0
引用:0
set identity_insert B on
insert into B(字段一,字段二) select 字段一,字段二 from A
set identity_insert B off
lunzi
2008-07-21 13:35:17
阅读:58
评论:0
引用:0
