返回首页
当前位置: 主页 > 网络编程 > Jsp实例教程 >

数据库系统工程师学习笔记汇总

时间:2011-03-26 00:25来源:知行网www.zhixing123.cn 编辑:麦田守望者

软考--数据库系统工程(数据库部分)学习笔记.因工作上使用的是MySQL,学习就没有使用教材上的SQL SERVER。当然SQL语法是差不多了。
首先建三张表:
CREATE TABLE `c` (
`CNO` int(11) NOT NULL default '0',
`CNAME` varchar(20) default NULL,
`TNAME` varchar(12) default NULL,
PRIMARY KEY (`CNO`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312 ROW_FORMAT=REDUNDANT;
CREATE TABLE `s` (
`SNO` int(11) NOT NULL default '0',
`SNAME` varchar(20) default NULL,
`AGE` int(11) default NULL,
`SEX` smallint(6) default NULL,
PRIMARY KEY (`SNO`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312 ROW_FORMAT=REDUNDANT;
CREATE TABLE `sc` (
`SNO` int(11) NOT NULL default '0',
`CNO` int(11) NOT NULL default '0',
`SCORE` decimal(3,2) default NULL,
PRIMARY KEY (`SNO`,`CNO`),
KEY `fk_c` (`CNO`),
CONSTRAINT `fk_c` FOREIGN KEY (`CNO`) REFERENCES `c` (`CNO`),
CONSTRAINT `fk_s` FOREIGN KEY (`SNO`) REFERENCES `s` (`SNO`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312 ROW_FORMAT=REDUNDANT;

OK,下面放一些记录进去:
INSERT INTO `s` VALUES (1,'jarwang',26,NULL);
INSERT INTO `s` VALUES (2,'IH',20,NULL);
INSERT INTO `s` VALUES (3,'josin',2,NULL);
INSERT INTO `c` VALUES (1,'os','liu');
INSERT INTO `c` VALUES (2,'db','xiao');
INSERT INTO `c` VALUES (3,'mis','test');
INSERT INTO `sc` VALUES (1,1,9.99);
INSERT INTO `sc` VALUES (1,2,5);
INSERT INTO `sc` VALUES (1,3,2);
INSERT INTO `sc` VALUES (2,1,9.99);
INSERT INTO `sc` VALUES (2,2,9.99);
INSERT INTO `sc` VALUES (3,3,2);

好了,具体的SQL操作语句开始:
1、计数count
计算行数:select count(*) form s
计算不重复的行数:select count(distinct sno) from s
2、In()函数
查询学习了os的学生号:
2.1 使用连接查询:
select sno from sc inner join c on sc.cno=c.Cno where cname="os"
2.2 使用嵌套查询:
select sno from sc where cno in(select cno from c where cname='os')
3、some()、unique()
集合成员算术比较,mysql没有提供此关键字。只用使用in了
4、exists()
谓词,也就是元组关系运算
select sno from sc where exists (select * from c where cname='os')
与2.1的结果是一样的。
5、交集
标准的SQL语句:
select sno from s intersect select sno from sc
但mysql 没有intersect这个关键字。要取交集可通过in或exists来实现
例:取sc与s表中的sno的交集
select sno from s where sno in(select sno from sc)
当然这种求法,没有什么实际意义!因为交集可以由差集来得,而差集又可由in来实现,所以很多数据库都没提供intersect、except.
6、导出表与临时视图
导出表:
select sno from sc,
(select cno from c where cname='os') as result(t)
where cno in result.t
临时视图:
with result(test) as select cno from sc
select * from c where c.cno=result.cno
可惜mysql5还不支持这两种写法。
7、domain
创建同一定义的列属性
create domain test varchar(20);
可惜mysql也不支持这个写法。说起也是,mysql这么重要功能居然也支持,反而 支持enum,set集合类别。真是怪事。
 

软考--数据库系统工程(数据库部分)学习笔记.上一篇讲的得SQL的标准语法,这是第二篇主要讲嵌入式SQL.
1、首先下载tc2.0(这个80年代的东东,现在还不好找,可以在下面这个网站找看看至于为什么要用这么原始的工具,主要是为了更好理解SQL与编程语言的接口。
tc2.0解压后设置一下目录就可使用.

测试一下,可否正常运行tc2.0
test.c
#include <stdio.h>
void main(){
printf("welcom c program");
}
2、加载mysql.h包,这个在安装MYSQL5时,选择安装include c,就可在mysql的安装目录找到mysql.h这个文件。复制到tc的INCLUDE目录下。

------分隔线----------------------------
标签(Tag):学习笔记 数据库系统工程师
------分隔线----------------------------
推荐内容
猜你感兴趣