java面试数据库问题大全

数据库方面:1.存储过程和函数的区别存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。

2事务是什么?事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务:原子性,事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。一致性,事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。隔离性,由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。持久性,事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。

3游标的作用?如何知道游标已经到了最后?游标用于定位结果集的行,通过判断全局变量@@FETCH_STATUS可以判断是否到了最后,通常此变量不等于0表示出错或到了最后。

4触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。事前触发器运行于触发事件发生之前,而事后触发器运行于触发事件发生之后。通常事前触发器可以获取事件之前和新的字段值。语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。

你知道Object类中有那些方法?(随意说几个即可)

1`把一个对象作为一个方法的参数,在该方法中对该对象的属性做了修改,请问在外部调用该方法后,传入方法的对象是否发生了变化?例如:假设stephen是一个类int change value(Stephen Stephen) Stephen a=Spublic static void main(stringc( ) args)Stephen Stephen=new Stephen( )Int; P=change value (Stephen);请问对象stephen变化了吗?

许天岭面试题

在Jdbc进行数据库调用时,你经常采用什么方式执行sql语句?为什么不用其他方式(比较一下即可)

int类型在java中有多少位?(如果面试题目中有这样的问题,不是公司太牛就是公司太差)

你用过线程吗?请启动4个线程对一个静态变量进行加1操作。

线程是如何启动的?

每个类实力化时都调用父类的构造函数吗?如果是,那么都调用object类的构造函数吗?

你懂得Ftp协议吗?如果不懂请问我告诉你Ftp协议命令格式及数据包的解析方法,你能用多长时间用java基本apI搞定一个ftp客户端程序(是这样的问题主要看你个人学习能力,一般也就是一人五天的工作量,不必要害怕,一般他不会给你五天做的,就是想看一下你的自信心及对工作的理解能力)

你知道java与C的通信?吗你会用那些协议进行通信?(其实也就是问socret通信)

请问java中的网络通信有那些方式,有什么区别?

String a=“”For limit I=0;I<100000;I++)A=a+“A”把字符串成“A”连接100000次,上面方法不够好,请优化上面代码?(采用stringBuffer进行优化)

EJB的调用过程,请叙述一下。

对于EJB的面试,业界基本上是假的,咱们学的东西是够应付,但如果你能说的很有条理,你的档次就高了

如果遇到英文试题,也就是平时经常见的调试信息不用害怕

你在jsp中打印是如何实现的?还要说你用系统的打印方法,也就是说,在JSP中若有很多内容,而我只需要打印其中一个表格,是如何实现的?

你用java script做过树型菜单吗?(这样的问题你应该说没有做国,但是会用,当然你要是真做过也很好,那么将来你的就是做JSP界面的高手)

WEB服务器启动时,系统需要做一些初始化的工作,这些工作该怎么处理,在structs下又该怎样处理(不要只会用structs,而忘记了传统方式,外面还有很多项目没有人会用structs)

对structs,相信大家都很熟悉,但不要忘记传统的开发模式。

你写过tag吗?

你做过在jsp页面上下载一个文本文件吗?请描述你的方法?

你在数据库编程过程中,面临的数据量有多大?如果有一个项目中每天有三张结构完全相同的表,一个365天天天如此,每张表记录在100万条以上,现需要分页查询,根据这样的项目,采用你用过的分页原理,行吗?(这是考的是性能,一般的分页方式不行,遇到这样的题,你可以说,你需要了解更详细的业务,认真的研究一下,是可以的,当然,如果你认为你的方法可以,可以对这样的问题进行交流,等等。这样的题,说不好也行,不影响你的面试,主要是看一下你对问题的态度)

你用java调用过的存储过程吗?当一个存储过程有返回记录集时,该怎样在java中返回?

应该对oracle有所了解,对一些数据库的名词,应该知道词的解释。

分页一 前提  希望最新的纪录在开头给你的表建立查询: 表:mytable  

查询:create or replace view as mytable_view from mytable order by id desc 其中,最好使用序列号create sequence mytable_sequence 来自动增加你的纪录id号  二 源程序  <%String sConn="你的连接"  

Class.forName("oracle.jdbc.driver.OracleDriver");  Connection conn=DriverManager.getConnection(sConn,"你的用户名","密码");  

Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);  

Statement stmtcount=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);  

ResultSet rs=stmt.executeQuery("select * from mytable_view");  String sqlcount="select count(*) from mytable_view";  ResultSet rscount=stmtcount.executeQuery(sqlcount);  int pageSize=你的每页显示纪录数;  int rowCount=0; //总的记录数  while (rscount  int pageCount; //总的页数  int currPage; //当前页数  

String strPage;  strPage=request.getParameter("page");  if (strPage==null){  currPage=1;  }  else{  

currPage=Integer.parseInt(strPage);  if (currPage<1) currPage=1;  }  pageCount=(rowCount+pageSize-1)/pageSize;  if (currPage>pageCount) currPage=pageCount;  int thepage=(currPage-1)*pageSize;  

int n=0;  rs.absolute(thepage+1);  while (n<(pageSize)&&!rs  %>  <%rs.close();  rscount.close();  stmt.close();  stmtcount.close();  conn.close();  %>  //下面是 第几页等  

<form name="sinfo" method="post" action="sbinfo_index.jsp?condition=<%=condition%>&type=<%=type%>" onSubmit="return testform(this)">  第<%=currPage%>页 共<%=pageCount%>页 共<%=rowCount%>条  

<%if(currPage>1){%><a href="sbinfo_index.jsp?condition=<%=condition%>&type=<%=type%>">首页</a><%}%>  

<%if(currPage>1){%><a href="sbinfo_index.jsp?page=<%=currPage-1%>&condition=<%=condition%>&type=<%=type%>">上一页</a><%}%>  <%if(currPage<pageCount){%><a href="sbinfo_index.jsp?page=<%=currPage+1%>&condition=<%=condition%>&type=<%=type%>">下一页</a><%}%>  

<%if(pageCount>1){%><a href="sbinfo_index.jsp?page=<%=pageCount%>&condition=<%=condition%>&type=<%=type%>">尾页</a><%}%>  跳到<input type="text" name="page" size="4" style="font-size:9px">页  

<input type="submit" name="submit" size="4" value="GO" style="font-size:9px">  </form>  希望大家喜欢!!!!!!

托普集团程序员面试试一、选择题(每题1分,共20分)1. 下列那种语言是面向对象的(C)

A. C          B. PASCAL        C. C++          D. FORTRAN77

2.在 Windows9x 下,可以进入 MS-D0S 方式。当在 DOS 提示符下键入 ( B ) 命令后,系统将退出 MS-DOS方式,返回到 WIndows 方式。 A. CLOSE   B. EXIT       C. QUIT        D. RETURN

3.下面哪些是面向对象的基本特性:( ABC)A 多态      B 继承       C 封装         D 接口

4.在C++中经常要进行异常处理,下面哪些是异常处理常用到的关键词:(ABC)

    A try         B catch       C throw         D break E contiue

5.数据库技术中的“脏数据',是指(C)的数据。A.错误B.回返C.未提交D.未提交的随后又被撤消

6.TCP/IP是一种(A,B)A.标准       B.协议       C.语言        D.算法

7. 下面有关计算机操作系统的叙述中,不正确的是(B ) A 操作系统属于系统软件 B 操作系统只负责管理内存储器,而不管理外存储器 C  UNIX 是一种操作系统 D 计算机的处理器、内存等硬件资源也由操作系统管理

8.微机上操作系统的作用是( D) A 解释执行源程序          B 编译源程序

C 进行编码转换            D 控制和管理系统资源

9.下列存储器中存取速度最快的是( A) A 内存 B 硬盘 C 光盘 D 软盘

10.在计算机中,—个字节是由多少个二进制位组成的(B ) A. 4        B. 8        C. 16         D. 24

11. 存储16×16点阵的一个汉字信息,需要的字节数为( A )A 32        B 64        C 128        D 256

12. 以下选项中合法的字符常量是(BC)A."B"       B. '\010'     C. 68         D. D

13. 假定x和y为double型,则表达式x=2,y=x+3/2的值是(D)A. 3.500000  B. 3 C. 2.000000    D. 3.000000

14. 以下合法的赋值语句是(BCD)//In C++ ,choice D also is correct, but in C language, D is wrong.

A. x=y=100  B. d--;      C. x+y;        D. c=int(a+b);

15. 设正x、y均为整型变量,且x=10 y=3,则以下语句pprintf("%d,%d\n",x--,--y); 的输出结果是(D)

A.10,3      B. 9,3       C. 9,2         D.10,2

16. x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是(B)

A .INPUT x、y、z;  B. scanf("%d%d%d",&x,&y,&z);C. scanf("%d%d%d",x,y,z);     D. read("%d%d%d",&x,&y,&z);

17.以下数组定义中不正确的是(D)A) int a[2][3];            B) int b[][3]={0,1,2,3};C) int c[100][100]={0};    D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}};

18. 以下程序的输出结果是(A)main(){ int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};

printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0];

}A) 0650     B) 1470      C) 5430     D) 输出值不定

19 以下程序的输出结果是(B)main(){char st[20]= "hello\0\t\\\";printf(%d %d \n",strlen(st),sizeof(st));

}A) 9 9        B) 5 20       C) 13 20      D) 20 20

20. 当调用Windows API函数InvalidateRect,将会产生什么消息(A)A:WM_PAINT           B:WM_CREATE   C:WM_NCHITTEST      D:WM_SETFOCUS

二、填空题(每题3分,共30分)

1.请列举当前一些当前流行的数据库引擎,SQL SERVER,ORACLE,BDE,Microsoft Jet。

2. 为了将当前盘当前目录中的所有文本文件(扩展名为.TXT)的内容打印输出,正确的单条DOS命令为COPY  *.TXT  PRN。

3. 计算机网络分为局域网和广域网,因特网属于广域网。

4. 设y是int型变量,请写出判断y为奇效的关系表达y%2!=0。

5. 设有以下程序:main(){ int n1,n2;scanf("%d",&n2);while(n2!=0){ n1=n2%10;n2=n2/10;printf("%d",n1);}}

程序运行后,如果从键盘上输入1298;则输出结果为8921。

6.以下程序运行后的输出结果是:9876  876

main(){ char s[ ]="9876",*p;for ( p=s ; p<s+2 ; p++) printf("%s\n", p);}

7.以下函数的功能是:求x的y次方,请填空。double fun( double x, int y){ int i;double z;for(i=1, z=x; i<y;i++) z=z*  x  ;return z;}

8.以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。FILE *myf; long f1;myf=  fopen  ("test.t","rb");

fseek(myf,0,SEEK_END); f1=ftell(myf);fclose(myf);printf("%d\n",f1);

9. 以下程序输出的最后一个值是120。

int ff(int n){ static int f=l;f=f*n;return f;}main(){ int i;for(I=1;I<=5;I++ printf("%d\n",ff(i));)

10. 以下程序运行后的输出结果是52  main(){ int i=10, j=0;do{ j=j+i; i--;while(i>2);printf("%d\n",j);}

三、判断题(每题2分,共20分)

  1:动态链结库不能静态调用。     错误         

  2:UDP是面向无连接的网络连接     正确       

  3:ASP是一种数据库引擎           错误       

  4:队列是先进后出。                错误  

  5:Weblogic是分布式应用服务器。        正确

  6:TCP,UDP都是传输层的协议。       正确   

  7: 两个线程不能共存于同一地址空间       错误

  8: JAVA是一种跨平台的开发工具           正确

  9.在WINDOWS操作系统中对外设是以文件的方式进行管理   正确

  10. 虚拟内存实际是创建在硬盘上的  正确

四、问答题(每题10分,共30分)

1. 写出从数据库表Custom中查询No、Name、Num1、Num2并将Name以姓名显示、计算出的和以总和显示的SQL。SELECT  No ,  Name  AS  ‘姓名’ ,Num1 ,Num2,(Num1+Num2) AS  ‘总和’

FROM Custom

2. 何为“事务处理”,谈谈你对它的理解。事务处理是指一个单元的工作,这些工作要么全做,要么全部不做。作为一个逻辑单元,必须具备四个属性:自动性、一致性、独立性和持久性。自动性是指事务必须是一个自动的单元工作,要么执行全部数据的修改,要么全部数据的修改都不执行。一致性是指当事务完成时,必须使所有数据都具有一致的状态。在关系型数据库中,所有的规则必须应用到事务的修改上,以便维护所有数据的完整性。所有的内部数据结构,在事务结束之后,必须保证正确。独立性是指并行事务的修改必须与其他并行事务的修改相互独立。一个事务看到的数据要么是另外一个事务修改这些事务之前的状态,要么是第二个事务已经修改完成的数据,但是这个事务不能看到正在修改的数据。

3. 常用的数据结构有哪些?请枚举一些。(不少于5个)链表、堆栈、二叉树、队列、图、堆,集合。

4. 什么是OOP?什么是类?请对比类和对象实例之间的关系。OOP是Object_oriented Programming(面向对象编程)的缩写。这主要是为了区别于以前的面向过程的程序设计!指的是用对象的观点来组织与构建系统,它综合了功能抽象和数据抽象,这样可以减少数据之间的耦合性和代码的出错几率。使用面向对象编程技术可以使得软件开发者按照现实世界里人们思考问题的模式编写代码,可以让软件开发者更好地利用代码直接表达现实中存在的对象,将问题空间直接映射到解空间!类:即class 在面向对象的程序设计中,专门用“类”来表示用户定义的抽象数据类型(user_defined abstract type)。它将具有相同状态、操作和访问机制的多个对象进行了抽象。类具有继承、数据隐藏和多态三种主要特性。利用类的这三种特性可以更好地表示现实世界中事物。类是同一类对象实例的共性的抽象,对象是类的实例化。对象通常作为计算机模拟思维,表示真实世界的抽象,一个对象就像一个软件模块,可以为用户提供一系列的服务---可以改变对象的状态、测试、传递消息等。类定义了对象的实现细节或数据结构。类是静态的,对象是动态的,对象可以看作是运行中的类。类负责产生对象,可以将类当成生产对象的工厂(Object factory).

5. 有一组数字(3,10,6,8,98,22),请编程排序(升降序皆可),语言不限,算法不限,但须注明是何种算法。//下面使用简单的冒泡法进行排序!

#include "iostream.h"  template<class type>  class CBubble{

private: type *pArray; int size;public:CBubble(type a[],int sizeArray);void sort();void display();};

template <class type> CBubble<type>::CBubble(type a[],int sizeArray)

{ pArray=a; size=sizeArray/sizeof(type);}

template<class type>void CBubble<type>::sort(){  type temp;  for(int i=0;i<size-1;i++) for(int j=0;j<size-1-i;j++) if(pArray[j]>pArray[j+1])//升序{temp=pArray[j+1];pArray[j+1]=pArray[j];pArray[j]=temp;}}

template<class type>void CBubble<type>::display(){for(int i=0;i<size;i++)cout<<pArray[i]<<endl;}

void main(void){int a[]={3,10,6,8,98,22};CBubble<int> intData(a,sizeof(a));cout<<"The original data are :"<<endl;intData.display();intData.sort();cout<<"After sorting ,the data are:"<<endl;intData.display();

}

SQLhttp://www.jactiongroup.net/reference/html/index.html  //书

http://blog.csdn.net/hbuzhang/archive/2004/12/07/207202.aspx //书

connection connconn.setAuto(false)//表示手动提交conn.commit// 提交conn.rollback();//事务回滚

-内联接use pubsselect a.au_fname, a.au_lname, p.pub_name  from authors a inner join publishers p on a.city = p.city order by p.pub_name asc, a.au_lname asc,   a.au_fname asc

--左外联接use pubs  select a.au_fname, a.au_lname, p.pub_name  from authors a left join publishers p

on a.city = p.city  order by p.pub_name asc,  a.au_lname asc,   a.au_fname asc

-使用子查询USE pubs  GO  SELECT distinct pub_name  FROM publishers  WHERE pub_id IN  (SELECT pub_idFROM titlesWHERE type = 'business')  GO

--如果平均价格少于 $30,WHILE 循环就将价格加倍,然后选择最高价。

--如果最高价少于或等于 $50,WHILE 循环重新启动并再次将价格加倍。

--该循环不断地将价格加倍直到最高价格超过 $50  USE pubs  GO

WHILE (SELECT AVG(price) FROM titles) < $30

BEGIN

   UPDATE titles

      SET price = price * 2

   SELECT MAX(price) FROM titles

   IF (SELECT MAX(price) FROM titles) > $50

      BREAK

   ELSE

      CONTINUE

END

---如果平均价格少于 $30,WHILE 循环就将价格加倍,然后选择最高价。

--如果最高价少于或等于 $50,WHILE 循环重新启动并再次将价格加倍。

--该循环不断地将价格加倍直到最高价格超过 $50

USE pubs

GO

WHILE (SELECT AVG(price) FROM titles) < $30

BEGIN

   UPDATE titles

      SET price = price * 2

   SELECT MAX(price) FROM titles

   IF (SELECT MAX(price) FROM titles) > $50

      BREAK

   ELSE

      CONTINUE

END

CREATE PROCEDURE au_info

   @lastname varchar(40),

   @firstname varchar(20)

AS

SELECT au_lname, au_fname, title, pub_name

   FROM authors a INNER JOIN titleauthor ta

      ON a.au_id = ta.au_id INNER JOIN titles t

      ON t.title_id = ta.title_id INNER JOIN publishers p

      ON t.pub_id = p.pub_id

   WHERE  au_fname = @firstname

      AND au_lname = @lastname

GO

EXECUTE au_info 'Dull', 'Ann'--或者

EXECUTE au_info @lastname = 'Dull', @firstname = 'Ann'--创建存储过程CREATE PROCEDURE titles_sum @TITLE varchar(40),@SUM money OUTPUT

AS

SELECT @SUM = SUM(price)

FROM titles

WHERE title LIKE @TITLE

GO

DECLARE @TOTALCOST money

EXECUTE titles_sum 'The%', @TOTALCOST OUTPUT

select @TOTALCOST

go

CREATE PROCEDURE Oakland_authors

AS

SELECT au_fname, au_lname, address, city, zip

FROM authors

WHERE city = 'Oakland'

and state = 'CA'

ORDER BY au_lname, au_fname

GO

--sp_helptext Oakland_authors

ALTER PROCEDURE Oakland_authors

AS

SELECT au_fname, au_lname, address, city, zip

FROM authors

WHERE state = 'CA'

ORDER BY au_lname, au_fname

GO

--sp_helptext Oakland_authors

--提交事务后,所有书籍支付的版税增加 10%。

begin transaction MyTransaction

update roysched

set royalty = royalty * 1.10

commit transaction MyTransaction

--rollback transaction MyTransaction

select royalty from roysched

--select @@trancount

--1.创建试验实验表

create table temptrigger

( id_temp varchar(2) not null primary key,

  temp_name varchar(10) null,

  temp_age int null)go

insert temptrigger values('01','张三','10')

insert temptrigger values('02','李四','11')

insert temptrigger values('03','王五','12')

insert temptrigger values('04','赵六','11')

select * from temptrigger  go

--2.创建insert , update触发器

create trigger temptrigger_modify

on temptrigger

for insert,update

as

begin

  if (select temp_age from inserted) > 15

    begin

      rollback transaction

      print '年龄不能超过15岁!'

    end

end

--insert temptrigger values('04','大朋','17')

--insert temptrigger values('05','大朋','17')

--insert temptrigger values('05','大朋','14')

--update temptrigger set temp_age='18' where id_temp = '01'

--update temptrigger set temp_age='9' where id_temp = '01'

-3.创建delete 触发器--drop trigger temptrigger_delete

create trigger temptrigger_delete

on temptrigger

for delete

as

begin

  print @@rowcount

  if @@rowcount > 1

  begin

    rollback transaction

    print '一次删除记录不能多于1条'

  end

end

--delete from temptrigger

--delete from temptrigger where id_temp='01'

--创建聚集索引create clustered index clindx_titleid  on roysched(title_id)--sp_help roysched

--创建非聚集索引create nonclustered index unclindx_titleid  on roysched(title_id)--sp_help roysched

--查看索引统计dbcc show_statistics(roysched,titleidind)

--更新索引统计update statistics authors

--重建索引dbcc dbreindex('roysched',unclindx_titleid)

--删除索引drop index roysched.unclindx_titleid-sp_help roysched

1--创建ssn(社会保险号)的基于varchar的自定义数据类型。

--用于存储11位社会保险号(999-99-999)的列。该列不能

--为null。use pubs  exec sp_addtype ssn , 'varchar(11)' , 'NOT NULL'

--查看创建的数据类型--sp_help ssn

--使用创建的数据类型create table mytable( myid varchar(2) primary key, myssn ssn)  

4-删除创建的数据类型--drop table mytable--exec sp_droptype ssn

•批是包含一个或多个 Transact-SQL 语句的组,从应用程序一次性地发送到 Microsoft SQL Server 执行。批作为一个整体执行,以GO命令结束。批处理是客户端作为一个单元发出的一个或多个 SQL 语句的集合。每个批处理编译为一个执行计划。

触发器•触发器是在对表进行插入、更新或删除操作时自动执行的存储过程•触发器通常用于强制业务规则•触发器可以确保数据的完整性和一致性

事务是用户定义的一个操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位(构成单一逻辑工作单元的操作集合)如果某一事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中的永久组成部分。

如果事务遇到错误且必须取消或回滚,则所有数据更改均被清除

•锁 是在多用户环境中对数据访问的限制封锁就是事务 T 在对某个数据对象(如表、记录等)操作之前,先向系统发出请求,对其加锁。加锁后事务 T 就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。(锁蕴含的基本概念是用户需要对表的排它访问)•从程序员的角度看:分为乐观锁和悲观锁。乐观锁:完全依靠数据库来管理锁的工作。悲观锁:程序员自己管理数据或对象上的锁处理。

子查询:一个 SELECT 语句嵌套在另一个 SELECT 语句中。

—索引—是一个数据库对象,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单,然后根据指定的排序次序排列这些指针 —优点提高查询执行的速度。  强制实施数据的唯一性。  提高表之间联接的速度。 缺点 存储索引要占用磁盘空间。数据修改需要更长的时间,因为索引也要更新。 

•视图•是一种虚拟表,通常是作为来自一个或多个表 的行或列的子集创建的。•视图本质上讲,就是保存在数据库中的select查询•视图并不是数据库中存储的数据值的集合。•对最终用户的好处– 结果更容易理解– 获得数据更容易

•对开发人员的好处– 限制数据检索更容易– 维护应用程序更方便

存储过程•使用一个名称存储的预编译T-SQL语句和流程控制语句的集合•由数据库开发人员或数据库管理员编写

•用来执行管理任务或应用复杂的业务规则  优点•执行速度更快•首次运行时,进行优化和编译得到执行计划并将该计划存储在系统表中,以后直接运行。•实现多个程序共享应用程序逻辑•组件式编程•能够屏蔽数据库的结构,实现更高的安全性

•减少网络流通量

数据库设计和建模必要性•好的数据库结构有利于:-节省数据的存储空间-能够保证数据的完整性-方便进行数据库应用系统的开发•设计不好的数据库结构将导致-数据冗余、存储空间浪费-内存空间浪费

不管数据库的大小和复杂程度如何,可以用下列基本步骤来设计数据库:–收集信息–标识对象–设计数据模型–标识每个对象 存储的信息类型–标识对象之间的关系

•数据模型是一种标识实体类型及其实体间联系的模型。典型的数据模型由网状模型、层次模型和关系模型。

什么是规范化从关系数据库的表中,除去冗余数据的过程称为规范化。—精简数据库的结构—从表中删除冗余的列—标识所有依赖于其它数据的数据

三级范式

第一范式的定义: 如果一个表中没有重复组(即行与列的交叉点上只有一个值,而不是一组值),则这个表属于第一范式(常记成1NF)。简而言之:"每一字段只存储一个值"。例如:职工号,姓名,电话号码组成一个表(一个人可能有一个办公室电话 和一个家里电话号码)

第二范式的定义:如果一个表属于1NF,任何属性只依赖于关键字,则这个表属于第二范式(常记成2NF )。简而言之:必须先符合1NF的条件,且每一行都能被唯一的识别。 将1NF转换成2NF的方法是添加主键。学号,课程名,成绩

第三范式的定义:如果一个表属于2NF,且不包含传递依赖性,则这个表是第三范式(常记成3NF)。满足3NF的表中不包含传递依赖。简而言之:没有一个非关键属性依赖于另一个非关键属性。学号,课程号,成绩,学分学号,姓名,所在系,系名称,系地址一、连接各种数据库方式速查表

    下面罗列了各种数据库使用JDBC连接的方式,可以作为一个手册使用。

1、Oracle8/8i/9i数据库(thin模式)

Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();

String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID

String user="test";

String password="test";

Connection conn= DriverManager.getConnection(url,user,password);

 2、DB2数据库

Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();

String url="jdbc:db2://localhost:5000/sample"; //sample为你的数据库名

String user="admin";

String password="";

Connection conn= DriverManager.getConnection(url,user,password);

3、Sql Server7.0/2000数据库

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();

String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";

//mydb为数据库

String user="sa";

String password="";

Connection conn= DriverManager.getConnection(url,user,password);

 4、Sybase数据库

Class.forName("com.sybase.jdbc.SybDriver").newInstance();

String url =" jdbc:sybase:Tds:localhost:5007/myDB";//myDB为你的数据库名

Properties sysProps = System.getProperties();

SysProps.put("user","userid");

SysProps.put("password","user_password");

Connection conn= DriverManager.getConnection(url, SysProps);

5、Informix数据库

Class.forName("com.informix.jdbc.IfxDriver").newInstance();

String url =

"jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver;

user=testuser;password=testpassword"; //myDB为数据库名

Connection conn= DriverManager.getConnection(url);

6、MySQL数据库

Class.forName("org.gjt.mm.mysql.Driver").newInstance();

String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"

//myDB为数据库名

Connection conn= DriverManager.getConnection(url);

 7、PostgreSQL数据库

Class.forName("org.postgresql.Driver").newInstance();

String url ="jdbc:postgresql://localhost/myDB" //myDB为数据库名

String user="myuser";

String password="mypassword";

Connection conn= DriverManager.getConnection(url,user,password);

 8、access数据库直连用ODBC的

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;

String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb");

Connection conn = DriverManager.getConnection(url,"","");

 Statement stmtNew=conn.createStatement() ;

 

 

 

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值