笔记<一>
包含接口、异常、mysql、JDBC
1、接口不能被实例化 接口可以被继承 接口可以有多个实现类 接口中不能有私有成员 本身是抽象的,接口是方法特征的集合,但没有方法的实现 接口的全部方法都是抽象方法 接口不能定义变量,只能声明静态常量 接口中的方法没有方法体 一个接口可以继承多个接口:Interface3 Extends Interface0, Interface1, 抽象类单继承,接口多继承 2、SQL 1)MySQL设置表的默认字符集关键字是: 2)MySQL内连接 inner join 唯一索引:unique 3)数据类型:数值类型,日期和时间类型(DATETIME、DATE、TIMESTAMP、TIME和YEAR)字符串类型(CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET) 4)查看系统中可用的字符集命令:show character set 修改数据库级别的命令是:alter database edu character set utf-8 5)存储引擎:InnoDB引擎支持外键约束,支持事务。MyISAM不支持事务,不支持外键约束 6)port:客户端和服务器端的端口号;MySQL默认端口为3306 character_set_server:默认的内部操作字符集,服务器端默认字符集 character_set_client:客户端来源数据使用的字符集 character_set_connection:连接层字符集 character_set_results:查询结果字符集 character_set_database:当前选中数据库的默认字符集 character_set_system:系统元数据(字段名等)字符集 7)数据模型的三要素: 数据结构、数据操作、数据约束。 8)MySQL实现语句循环用while 9)DDL:数据定义语言,用于定义和管理 SQL 数据库中的所有对象的语言 ; CREATE---创建表;ALTER---修改表;DROP---删除表 DML:数据操纵语言,SQL中处理数据等操作统称为数据操纵语言 ; INSERT---数据的插入;DELETE---数据的删除;UPDATE---数据的修改;SELECT---数据的查询 DCL:数据控制语言,用来授予或回收访问数据库的某种特权,并控制 数据库操纵事务发生的时间及效果,对数据库实行监视等; GRANT--- 授权;ROLLBACK---回滚;COMMIT--- 提交 10)禁止自动提交:set autocommit=0; set autocommit = 1 开启自动提交 11)缺省模式下,MYSQL是autocommit模式的,所有的数据库更新操作都会即时提交,所以在缺省情况下,mysql是不支持事务的。如果你的MYSQL表类型是使用InnoDB Tables 或 BDB tables的话,你的MYSQL就可以使用事务处理,使用SET AUTOCOMMIT=0就可以使MYSQL允许在非autocommit模式,在非autocommit模式下,你必须使用COMMIT来提交你的更改,或者用ROLLBACK来回滚你的更改。 START TRANSACTION; SELECT @A:=SUM(salary) FROM table1 WHERE type=1; UPDATE table2 SET summmary=@A WHERE type=1; COMMIT; 12)事务管理(ACID):原子性、一致性、隔离性、持久性 13)数据库事务的隔离级别有4种,由低到高分别为Read uncommitted(可以看到未提交的数据) 、Read committed(读取提交的数据,数据会不一致) 、Repeatable read (默认隔离级别,可以重复读取)、Serializable(可读不可写) 。 查看当前会话隔离级别:select @@tx_isolation; 查看系统当前隔离级别:select @@global.tx_isolation; 设置当前会话隔离级别:set session transaction isolatin level repeatable read; 设置系统当前隔离级别:set global transaction isolation level repeatable read; 命令行,开始事务时:set autocommit=off 或者 start transaction 14)事务处理的步骤:开始事务(START TRANSACTION),执行,提交或回滚 15)创建普通索引CREATE INDEX index_name ON table_name(col_name); 创建唯一索引CREATE UNIQUE INDEX index_name ON table_name(col_name); 创建普通组合索引CREATE INDEX index_name ON table_name(col_name_1,col_name_2); 创建唯一组合索引CREATE UNIQUE INDEX index_name ON table_name(col_name_1,col_name_2); 16)删除表内容:truncate table 表名; 删除表结构:drop table 表名; 17)备份所有数据库:mysqldump -u root -p --all -databases>dbbak_all.sql mysqldump【选项】 --all-databases>/备份路径/文件名 导出一个或多个库:mysqldump【选项】 --databases 库名1【库名2】>…… 导出指定库的部分表:mysql【选项】库名【表名1】【表名2】。。>…… 使用tar命令对数据库安装目录下的data目录进行直接打包 18)对于mysqldump导出的SQL备份脚本,可以通过mysql命令恢复数据:mysql -u 用户名 -p密码 [库名]</备份路径/备份文件名 19)第一范式的目标是确保每列的原子性 20)VIsio会自动帮你添加实体外键。具体操作是:先添加两个有关联的实体,然后把两个实体用“关系”连接起来(连接时拖动“关系”线的一段到要链接的实体,实体框变红即表示两个实体建立了连接。如果两个实体有相同名字的列,会自动生成外键。如果没有自动生成,点击“关系”线下面设置的地方,就可以设置两个实体关联。选中关联线,然后指定是一对一关系,还是一对多关系。这样,就自动连接了生成外键。 矩形框:表示实体,记入实体名。;菱形框:表示联系,记入联系名。;椭圆形框:表示实体或联系的属性 21)数据库设计步骤包括收集信息,标识实体,标识实体之间的关系,标识实体属性之间的关系 22)数据库关系映射有三种一对一,一对多,多对多 23)分页查询“SELECT* FROM smbms_commodity limit 0,5"="SELECT* FROM smbms_commodity limit 5"; limit 记录索引,记录数。索引默认为0,所以limit 0,5 和limit 5等效 24)FIND找到;SELECT查询;ALTER修改;DESC; 修改表结构删除一列,删除表字段:alter table 表名 drop column 列名 查找表结构的语句是desc 表名; 显示数据表的表结构语法: describe 表名 显示数据库列表:show 表名 显示表中的记录:select * from 表名 删除数据库中已存在的表:DROP TABLE 表名 或者 Drop table if exists 表名 修改表列名:alter table 表名 change column 列名称 新列名称 数据类型[属性] 删除表记录:DELETE[FROM]表名[WHERE<删除条件>] 查看表中的列show columns from 表名; 查看所有表 show tables; 查看数据库 show databases 非空:SELECT * FROM 表 WHERE 字段 IS NOT NULL 授权用户访问数据库表:grant on …to 用来允许用户获得权限 25)AVG()返回某字段的平均值;COUNT()返回某字段的行数;MAX()返回某字段的最大值;SUM()返回某字段的和;求和用累加sum(),求行的个数用累计count()。 26)Mysql中的约束类型有:主键(primary key)、默认值(default)、唯一(unique)、外键(foreign key)和非空(not null) 27)ceil():向上取整 floor():向下取整 rand():生成0-1之间的随机数,不包括1 ceiling():四舍五入 28)between and 的取值为大于等于值1 并且小于等于值2 29)将字符串小写转换成大写 upper(),lower()转换为小写 30)CURDATE:获取当前日期(年月日)CURTIME:获取当前时间(时分秒)NOW:获取当前日期和时间(年月日,时分秒)DATEDIFF:获取两个日期的时间差 31)连接分为内链接、左外连接、右外连接(INNER JOIN、LEFT JOIN、RIGHT JOIN); 内链接:取两个表的交集,仅显示符合连接条件的记录; 左外连接:显示左表的全部记录及右表符合连接条件的记录; 右外连接:显示右表的全部记录及左表符合连接条件的记录。 32)in关键字实现子查询时,因为等号可以匹配一个值,所以子查询只返回唯一的一个结果时可以使用等号 33)子查询允许把一个查询嵌套在另一个查询当中。 3、异常 1)Java异常处理机制主要是为了捕获“运行期”错误,将引发异常,该异常由一个java代码块捕获。Java中可能出现运行异常的代码最佳的处理时期就是在编译的时候处理并且捕获。java中的错误处理是通过异常处理模型来完成的,那么异常处理模块可以处理的错误是运行时的错误 20Java中可能出现运行异常的代码最佳的处理时期就是在编译的时候处理并且捕获。throws用来声明方法内部可能有异常. 3)throws 声明(多个)异常;throw 抛出异常 4)Java的非检查异常(编译器不要求强制处置的异常):包括运行时异常(RuntimeException与其子类)和错误(Error)。 Java编译器不要求你一定要把它捕获或者一定要继续抛出,但是对checked exception(检查异常)要求你必须要在方法里面或者捕获或者继续抛出。 java.lang.ArithmeticException类是RuntimeException的子类,当出现异常的运算条件时,将会抛出java.lang.ArithmeticException异常。ArrayIndexOutOfBoundsException数组越界,也属于运行时异常。 5)Java中,所有的异常都有一个共同的祖先 Throwable。Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性。它有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类 6)遇到异常不处理,在声明方法时声明异常 4、JDBC 1)加载JDBC驱动;Connection接口用于建立数据库连接;Statement接口用于接收查询结果。DriverManger类用来管理数据库中的所有驱动程序。 2)可以使用Class.forName()方法把JDBC驱动类载入Java虚拟机中 3)PreparedStatement接口。继承了Statement,是预编译、效率高、可以绑定参数,防SQL注入问题。prepareStatement()方法的括号中要加参数,ResultSet接口的getInt()方法,下标从“1”开始。PreparedStatement对象的executeQuery()方法完成数据的查看 4)ResultSet接口被用来提供访问查询结果的数据表,查询结果被当成ResultSet对象而返回,ResultSet对象提供“指针”,指针每次访问数据库表的一行;提供大量的获得数据的方法,这些方法返回数据表中的数据,不论是基本数据类型或引用数据类型的数据;next()方法用来移动指针到数据表的下一行,如果到达表位,返回布尔值为false,否则为true。ResultSet 只负责查询结果集,增删改是返回一个int的的受影响行数的值。 5)正确的JDBC访问数据库的步骤是:加载JDBC驱动>与数据库建立连接>创建Statement或prepareStatement对象>发送SQL语句并得到返回结果>处理返回结果 6)PreparedStatement下的executeQuery 只能够用于查询;插入,删除,更新用executeUpdate 7)增加、修改、删除都用execute(),也可用executeUpdate(),针对于INSERT、UPDATE 或 DELETE 语句;查询调用executeQuery(),针对于SELECT语句