Mysql是目前互联网使用最广的关系数据库,关系数据库的本质是将问题分解为多个分类然后通过关系来查询。 一个经典的问题是用户借书,三张表,一个用户,一个书,一个借书的关系表。当需要查询某个用户借书情况或者是书被那些人借了,就用关系查询来实现。
关系数据库范式
来自英文Normal form,简称NF。要想设计—个好的关系,必须使关系满足一定的约束条件,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update) *** 作异常。总共有六种范式:第一范式(1NF)、第二范式(2NF)、 第三范式 (3NF)、巴斯-科德范式(BCNF)、 第四范式 (4NF)和 第五范式 (5NF,又称完美范式)。
1NF是指数据库表的每一列都是不可分割的原子数据项。2NF必须满足1NF,要求数据库表中的每行记录必须可以被唯一地区分。3NF在2NF基础上,任何非主 属性 不依赖于其它非主属性(在2NF基础上消除传递依赖)。BCNF是在3NF基础上,任何非主属性不能对主键子集依赖(在3NF基础上消除对主码子集的依赖), 满足BCNF不再会有任何由于函数依赖导致的异常,但是我们还可能会遇到由于多值依赖导致的异常。4NF的定义很简单:已经是BC范式,并且不包含多值依赖关系。5NF处理的是无损连接问题,这个范式基本没有实际意义,因为无损连接很少出现,而且难以察觉。而域键范式试图定义一个终极范式,该范式考虑所有的依赖和约束类型,但是实用价值也是最小的,只存在理论研究中。
Catalog和Schema
是数据库对象命名空间中的层次,主要用来解决命名冲突的问题。从概念上说,一个数据库系统包含多个Catalog,每个Catalog又包含多个Schema,而每个Schema又包含多个数据库对象(表、视图、字段等)。但是Mysql的数据库名就是Schema,不支持Catalog。
Mysql的数据库引擎主要有两种MyISAM和InnoDB,MyISAM支持全文检索,InnoDB支持事务。
SQL中的通配符‘%’代表任意字符出现任意次数。‘_’代表任意字符出现一次。SQL与正则表达式结合查询一般用在WHERE table_name REGEXP '^12.34'。子查询是从里到外执行。
数据库联结(join)涉及到外键,外键是指一个表的列是另一个表的主键,那么它就是外键。笛卡尔积联结(不指定联结条件时)生成的记录条目是单纯的第一个表的行乘以第二个表的列数。用得最多的是等值联结也叫内部联结。
高级联结还有自连接,是指查询中的两张表是同一张表,它通常作为外部语句用来代替从相同表中检索数据时使用的子查询。自然联结使每个列只返回一次。外部联结是指联结包含了那些在相关表中没有关联行的行。例如列出所有产品及其订购数量,包括没有人订购的产品。LEFT OUTER JOIN指选择左边表的所有行。
组合查询是指采用UNION等将两个查询结果取并集。
视图是查看存储在别处的数据的一种工具,它本身并不包含数据,因此表的数据修改了,视图返回的数据也将随之修改,因此如果使用了复杂或嵌套视图会对性能有较大的影响。视图的作用之一是隐藏复杂的SQL通常会涉及到联结查询。
存储过程类似于批处理,包含了一条或多条SQL语句。语法:
CREATE PROCEDURE name()
BEGIN
SQL
END
-------------------------
CALL name()//来调用存储过程
游标有DECLARE定义,游标与存储过程是绑定的,存储过程处理完成,游标就会消失。游标被打开后可以使用FETCH语句访问每一行。
触发器是在某个时间发生时自动执行某条SQL语句。语法:
CREATE TRIGGER name AFTER INSERT ON talbe_name FOR EACH ROW
事务处理可以维护数据库的完整性,保证批量的 *** 作要么完全执行,要么完全不执行。包括事务、回退、提交、保留点几个关键术语。ROLLBACK只能在一个事务处理内使用。他不能回退CREATE和DROP *** 作。使用COMMIT保证事务提交。复杂的事务处理需要部分提交或回退,因此我们需要使用保留点SAVEPOINT。可以使用ROLLBACK TO savepoint_name。保留点越多越好。保留点在事务执行完成后自动释放。
国内五大论文数据库如下:
一、中国知网提供的《中国学术期刊(光盘版)》
也称中国期刊全文数据库由清华同方股份有限公司出版。
收录1994年以来国内6 600种期刊,包括了学术期刊于非学术期刊,涵盖理工、农业、医药卫生、文史哲、政治军事与法律、教育与社会科学综合、电子技术与信息科学、经济与管理。
收录的学术期刊同时作为“中国学术期刊综合评价数据库统计源期刊”。
但是收录的期刊不很全面,一些重要期刊未能收录。
二、中国生物医学文献数据库(CBMDISC)
数据库是中国医学科学院信息研究所开发研制,收录了自1978年以来1 600余种中国生物医学期刊。
范围涉及基础医学、临床医学、预防医学、药学、中医学及中药学等生物医学的各个领域。
三、中文生物医学期刊数据库(CMCC)
由中国人民解放军医学图书馆数据库研究部研制开发。
收录了1994年以来国内正式出版发行的生物医学期刊和一些自办发行的生物医学刊物1 000余种的文献题录和文摘。
涉及的主要学科领域有:基础医学、临床医学、预防医学、药学、医学生物学、中医学、中药学、医院管理及医学信息等生物医学的各个领域。
并具有成果查新功能医学全在线
四、万方数据资源系统(China Info)
由中国科技信息研究所,万方数据股份有限公司研制。
该数据库收录的期刊学科范围广,包括了学术期刊于非学术期刊,提供约2 000种的电子期刊的全文检索。
被收录的学术期刊都获得了“中国核心期刊(遴选)数据库来源期刊”的收录证书。
个别期刊甚至将“遴选”改成“精选”,或者干脆去掉。
很多作者因此误以为这就是核心期刊。
五、维普数据库
也称中文科技期刊数据库,维普科技期刊数据库,由中国科学技术信息研究所重庆分所出版。
收录了1989年以来我国自然科学、工程技术、农业科学、医药卫生、经济管理、教育科学和图书情报等学科9 000余种期刊,包括了学术与非学术期刊。
收录期刊数量很大,但不足之处是部分国家新闻出版总署公布的非法期刊也被收录了。
一般的,学术期刊都能进入至少1个国内期刊数据库。
期刊据数据库不是期刊的评价体系,对科研处的期刊性质评价也就缺乏足够的意义,故不宜作为期刊性质评价的依据。
另外还有:
1、万方数据
万方数据提供中国大陆科技期刊检索,是万方数据股份有限公司建立的专业学术知识服务网站。
隶属于万方数据资源系统,对外服务数据由万方数据资源系统统一部署提供。
2、全国报刊索引
收录全国包括港台地区的期刊8000种左右,月报道量在1.8万条以上,年报道量在44万条左右,书本式用户有3500多家,现又出版光盘数据库。
反映了中国政治、经济、军事、科学、文化、文学艺术、历史地理、科技等方面的发展情况,提供了国内外最新学术进展信息。
该索引是我国收录报刊种类最多,内容涉及范围最广,持续出版时间最长,与新文献保持同步发展的权威性检索刊物,也是查找建国以来报刊论文资料最重要的检索工具。
正文采用分类编排,先后采用过《中国人民大学图书分类法》和自编的《报刊资料分类表》,1980年起,仿《中国图书馆图书分类法》分21类编排,1992年全面改用《中国图书资料分类法》(第三版)编排,2000年开始用《中国图书馆分类法》(第四版)标引,计算机编排。
在著录上,《全国报刊索引》从1991年起采用国家标准——《检索期刊条目著录规则》进行著录,包括题名、著译者姓名、报刊名、版本、卷期标识、起止页码、附注等项。
同时,“哲社版”采用电脑编排,增加了“著者索引”、“题中人名分析索引”、“引用报刊一览表”,方便了读者的使用。
3、超星数字图书馆
为目前世界最大的中文在线数字图书馆,提供大量的电子图书资源提供阅读,其中包括文学、经济、计算机等五十余大类,数十万册电子图书,300万篇论文,全文总量4亿余页,数据总量30000GB,大量免费电子图书,并且每天仍在不断的增加与更新。
覆盖范围:涉及哲学、宗教、社科总论、经典理论、民族学、经济学、自然科学总论、计算机等各个学科门类。
本馆已订购67万余册。
收录年限:1977年至今。
4、维普资讯
维普资讯是科学技术部西南信息中心下属的一家大型的专业化数据公司,是中文期刊数据库建设事业的奠基人,公司全称重庆维普资讯有限公司。
目前已经成为中国最大的综合文献数据库。
从1989年开始,一直致力于对海量的报刊数据进行科学严谨的研究、分析,采集、加工等深层次开发和推广应用。
5、中宏数据库
中宏数据库由国家发改委所属的中国宏观经济学会、中宏基金、中国宏观经济信息网、中宏经济研究中心联合研创。
是由18类大库、74类中库组成,涵盖了九十年代以来宏观经济、区域经济、产业经济、金融保险、投资消费、世界经济、政策法规、统计数字、研究报告等方面的详尽内容,是目前国内门类最全,分类最细,容量最大的经济类数据库。
发展现状
在数据库的发展历史上,数据库先后经历了层次数据库、网状数据库和关系数据库等各个阶段的发展,数据库技术在各个方面的快速的发展。特别是关系型数据库已经成为目前数据库产品中最重要的一员,80年代以来,几乎所有的数据库厂商新出的数据库产品都支持关系型数据库,
即使一些非关系数据库产品也几乎都有支持关系数据库的接口。这主要是传统的关系型数据库可以比较好的解决管理和存储关系型数据的问题。随着云计算的发展和大数据时代的到来,关系型数据库越来越无法满足需要,
这主要是由于越来越多的半关系型和非关系型数据需要用数据库进行存储管理,以此同时,分布式技术等新技术的出现也对数据库的技术提出了新的要求,于是越来越多的非关系型数据库就开始出现,这类数据库与传统的关系型数据库在设计和数据结构有了很大的不同,
它们更强调数据库数据的高并发读写和存储大数据,这类数据库一般被称为NoSQL(Not only SQL)数据库。而传统的关系型数据库在一些传统领域依然保持了强大的生命力。
以上内容参考:百度百科——数据库
我就弄的用户登入的代码吧.这个挺简单的.这是题目:
用户登陆验证:
1.创建数据库Test,并新建用户表users
字段包含:username varchar(20) not null
userpwd varchar(20) not null
在JBUILDER中编写Long类,实现登陆界面,并在用户输入用户名和密码后,
完成按纽的单击事件,对用户输入的数据进行验证,
(需要严整数据是否为空,密码长度必须是15位),
并实现与数据库的连接,将用户输入的用户名密码与表中的记录比较,
若用户名正确且密码正确,d出提示框告知登陆成功,否则登陆失败。
这是代码:
//连接数据库
boolean isLogin(String name,String pwd){
boolean flag=false
Connection conn=null
PreparedStatement pst=null
ResultSet rs=null
//加载驱动
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")
} catch (ClassNotFoundException ex) {
ex.printStackTrace()
}
//连接数据库
try {
conn=DriverManager.getConnection("jdbc:odbc:login")
String sql="select * from [user] where username=? and userpwd=?"
pst=conn.prepareStatement(sql)
pst.setString(1,name)
pst.setString(2,pwd)
rs=pst.executeQuery()
if(rs.next())
flag=true
} catch (Exception ex) {
ex.printStackTrace()
}finally{
try {
conn.close()
} catch (Exception ex) {
ex.printStackTrace()
}
}
return flag
}
//验证方法
public void jButton1_actionPerformed(ActionEvent e) {
String name=jTextField1.getText()
String pwd=jTextField2.getText()
//错误处理
if(name.equals("")||pwd.equals(""))
JOptionPane.showMessageDialog(this,"请输入完整的信息")
else {
if(isLogin(name,pwd))
JOptionPane.showMessageDialog(this,"登陆成功")
else
JOptionPane.showMessageDialog(this,"用户名或密码错误")
}
}
}
.....
.....
这是在事件里写的,
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)