数据库操作技术.ppt
数据库操作技术主要内容n数据定义语言DDLn利用DDL操作数据表nDDL的其他功能n结果集元数据(ResultSetMetaData)n数据库元数据(DatabaseMetaData)数据定义语言DDLn数据定义语言用于创建(CREATE)、修改和删除数据库(database)以及数据库中的数据表(table);数据表可以操作的属性包括表的名称、字段名称、字段的数据类型以及数据表的完整性限制等。n操作数据库的SQL语法各DBMS有一定差异,且大部分DBMS都提供了GUI来操作,所以操作数据库的SQL语法不作介绍;了解创建数据库的语法:CREATE DATABASE database_namen了解操作数据表的SQL语法是很有必要的,即使很多DBMS同样提供了操作数据表的GUI。利用DDL操作数据表n创建数据表q基本语法:CREATETABLEtable_name(column_namedatatypeNULL|NOTNULL,column_namedatatypeNULL|NOTNULL)q例如:CREATETABLEemployees1(idvarchar(3)NOTNULL,namevarchar(10)NOTNULL,emailvarchar(30),ageinteger,)利用DDL操作数据表n修改数据表q基本语法:ALTERTABLEtable_nameADDnew_column_namedatatypeALTERCOLUMNcolumn_namenew_datatypeq例如:ALTERTABLEemployeesADDhometownchar(10)ALTERTABLEemployeesALTERCOLUMNhometownvarchar(10)n删除数据表q基本语法:DROPTABLEtable_nameq例如:DROPTABLEemployees注意:DROPTABLE会将数据表及表中所有数据全部删除,慎用!利用DDL操作数据表nDDL操作数据表程序举例q为SQLServer2000的yinhe数据库创建一个数据表:testtableq为testtable添加一条数据纪录q为testtable增加两个字段q修改testtable的某个字段的数据类型q删除testtableDDL的其他功能n操作视图q视图最终是定义在基本表之上的,它可以简化用户的操作,对机密数据提供安全保护等(对不同的用户定义不同的视图),DDL可以定义、查询以及更新视图n操作索引q索引的主要用途是提供了一种无需扫描每个页面,而能够快速访问数据页的方法,从而提高查询效率,通过DDL可以创建、删除索引。元数据(MetaData)nMetaDataDataaboutData,描述数据的数据。nDatabaseMetaData,纪录了数据库及用户所使用的驱动的相关信息,并向用户提供了获取这些信息的方法。nResultSetMetaData,记录了结果集的相关描述性信息,如结果集中字段的名称、类型及数目等,此类在编写通用性的数据库应用程序时非常有用。结果集元数据(ResultSetMetaData)n大多数情况下,我们对于获得的结果集的形式和结构是很清楚的;但有时也可能在获得结果前对结果集不甚了解,此时就需要用到ResultSetMetaData来获得对该结果集的列的数目、列值类型及其他特性的描述信息。n通过ResultSet接口的getMetaData可获得对应结果集的ResultSetMetaData对象。n常用方法:qintgetColumnCount()结果集的总列数qintgetColumnDisplaySize(intcolumn)字段的最大字符数qStringgetColumnName(intcolumn)字段的名称qintgetColumnType(intcolumn)数据库字段的类型,返回值定义在Types类中qStringgetColumnTypeName(intcolumn)数据库字段的类型名称qbooleanisReadOnly(intcolumn)字段是否只能读取qbooleanisWritable(intcolumn)字段是否可以写入qintisNullable(intcolumn)字段是否允许Null值qbooleanisCaseSensitive(intcolumn)字段值是否大小写一样结果集元数据(ResultSetMetaData)n举例,使用ResultSetMetaData获取对应结果集的常用描述信息。复习与实践n使用ResultSetMetaData编写通用的数据查询程序:q写一个函数,用于输出任意结果集到屏幕终端上,输出信息中必须包含字段名称和字段类型。q执行任意查询语句,调用上面写的函数将结果集打印出来。n复习内容:ResultSetMetaData数据库元数据(DatabaseMetaData)n通过Connection对象的getMetaData方法返回正在连接的数据库的DatabaseMetaData对象。nDatabaseMetaData接口提供了数量众多的方法,这些方法可分为两大类,一类返回值为boolean型,多用于检查数据库或驱动器是否支持某项功能;另一类是用来获取数据库或者驱动器本身的某些特性值,返回值可能为int、String,甚至可能为ResultSet对象。n返回值为boolean的常用方法:qbooleanisReadOnly()检查数据库是否只读qbooleansupportsGroupBy()检查数据库是否支持GroupBy子句qbooleansupportsOuterJoins()检查数据库是否支持外联接qbooleansupportsStoredProcedures()检查是否支持存储过程qbooleansupportsTransactions()检查是否支持事务q数据库元数据(DatabaseMetaData)n获取数据库或驱动信息的常用方法:qStringgetURL()返回用于连接数据库的URL地址qStringgetUserName()qStringgetDriverName()qStringgetProcedureTerm()返回DBMS对存储过程的特定称呼qintgetMaxColumnNameLength()返回字段名允许的最大长度qq最重要的方法:ResultSetgetTables(Stringcatalog,StringschemaPattern,StringtableNamePattern,Stringtypes)数据库元数据(DatabaseMetaData)nResultSetgetTables()方法说明q取得当前所连接的数据库中所有数据表的信息,每一个数据表的信息作为返回的ResultSet的一个记录行,这些信息包括:数据库元数据(DatabaseMetaData)q形参说明ncatalog是数据库的目录名称,可以传入想要获取的数据表所在的目录名称,如果要获取所有目录名称下的数据表则传入null。nschemaPattern是数据库的模式,它用来做数据库组件的分类;通常数据库以用户作为一个模式,可以传入想要获取的数据表所属的模式,若想获取所有模式下的数据表,传入null。ntableNamePattern数据库的数据表名称,如果只想获取某一个数据表,传入此表的名称;否则以null代表所有的数据表。ntypes数据库的数据表类型,可能的类型有:”TABLE”,“VIEW”,“SYSTEM_TABLE”,n举例:使用DatabaseMetaData的getTables()方法,获取数据库中的所有数据表的信息。数据库元数据(DatabaseMetaData)n既然已经知道了如何获取数据库中所有数据表的信息,可进一步利用DatabaseMetaData的getColumns方法获取各数据表的字段信息:ResultSetgetColumns(Stringcatalog,StringschemaPattern,StringtableNamePattern,StringcolumnNamePattern)q参数说明:ncatalog,schemaPattern,tableNamePattern与getTables()的形参意义一样。ncolumnNamePattern要获取的字段名称,若想获取数据表中所有字段,传入null。数据库元数据(DatabaseMetaData)q返回的结果集中,每一个记录行是一个字段的信息,部分信息如下表:q举例:先利用getTables方法获取数据库中所有数据表,然后循环获取每一个数据表中的所有字段信息(getColumn方法)并打印。复习与实践n利用DatabaseMetaData获取数据库及所用驱动的常用信息(使用前面介绍的常用方法)n复习内容:DatabaseMetaDatan思考:结合GUI知识(或者以后要学的JSP),怎样利用DatabaseMetaData为MySQL做一个图形化的数据库浏览器。