MySQL
- 数据库有哪些数据类型?
(1)整数: int(m) 和 bigint(m) m代表显示长度(补0),bigint等效java中的long。
(2)浮点数: double(m,d) m总长度 d小数长度 double(5,3) 26.378 ,decimal是一个超高精度的浮点数,精度远高于double,只有涉及到超高精度运算时才会使用,。
(3)字符串: char(m)不可变长度 char(5) "abc" 占5 最大字符长度255, varchar(m) 可变长度 节省空间 最大字符长度为65535 但是超过255建议使用text,text可变长度的字符串类型 长度65535。
(4) 日期类型: date: 只能保存年月日, time: 只能保存时分秒,datetime: 默认值null 最大值9999-12-31,timestamp: 时间戳 默认值当前系统时间 2038-1-19 。
- 怎么优化数据库的查询?
(1)对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
(2)应尽量避免在 where 子句中使用!=或<>操作符。
(3)应尽量避免在 where 子句中对字段进行 null 值判断。
(4)应尽量避免在 where 子句中使用 or 来连接条件。
(5)下面的查询也将导致全表扫描:“select id from t where name like '%abc%'” 若要提高效率,可以考虑全文检索。in 和 not in 也要慎用,否则会导致全表扫描,很多时候用 exists 代替 in 是一个好的选择。
(6)应尽量避免在 where 子句中对字段进行表达式操作。
(7)应尽量避免在where子句中对字段进行函数操作。
- 在数据库中条件查询速度很慢的时候,如何优化?
(1)建索引
(2)减少表之间的关联
(3)优化sql,尽量让sql利用索引定位数据,不要让sql做全表查询
(4)简化查询字段,没用的字段不要,已经对返回结果的控制,尽量返回少量数据
(5)利用分页查询减少返回的数据量
- 数据库中事务是什么,有哪些特性?
(1)事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序单元(unit)。事务通常由SQL语言或编程语言发起并控制。
(2)特性:事务是恢复和并发控制的基本单位。事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
- sql语句关键词的执行顺序?
(1)FROM 子句, 组装来自不同数据源的数据
(2)WHERE 子句, 基于指定的条件对记录进行筛选
(3)GROUP BY 子句, 将数据划分为多个分组
(4)使用聚合函数进行计算
(5)使用 HAVING 子句筛选分组
(6)计算所有的表达式
(7)使用 ORDER BY 对结果集进行排序
- 数据库有哪几种约束类型?
五种。
(1)主键约束 PRIMARY KEY
(2)外键约束 FOREIGN KEY
(3)唯一约束 UNIQUE
(4)检查约束 CHECK
(5)非空约束 NOT NULL
- 简述数据库执行计划?
SQL语句发送到数据库后需要翻译为执行计划,SQL语句到功能是利用执行计划执行实现的。数据库在执行完全一样的SQL语句时候会重用相同的执行计划。有 ?参数的SQL语言会重用相同的执行计划。
- 数据库建立索引常用的原则是什么?什么情况下不适合建立索引?
(1)在大数据量的表上建立索引才有意义
(2)在where子句或是连接条件上经常引用的列上建立索引,很少或从不引用的字段和逻辑型的字段,如男或女(是或否)等不要建立索引。
- 如果想对分组统计的结果信息进行筛选,用where 条件子句能实现吗?如果不行该用什么子句实现?
用where子句不能实现,应该用having 子句。
- 如果用户用UPDATE 命令修改了表中的数据值,是否可以恢复回来?
如果事务没有提交可以用ROLLBACK 恢复回来。
- where和having有什么区别?having能单独使用吗?
(1)where 后面只能写普通字段的条件,不能写聚合函数条件。 如果条件是聚合函数的条件 则必须使用having。
(2)having要和group by 结合使用。
- 数据库中各种关键字的顺序?
select ...... from 表名 where ....group by....having.... order by...... limit ....;
- 关联查询的查询方式有几种?怎么选择/使用?
关联查询的查询方式有三种。
(1)等值连接,格式: select * from A,B where A.x=B.x and xxx=xxx;
(2)内连接,内连接和等值连接查询的数据是一样的,select * from A join B on A.x=B.x where xxx=xxx;等值连接和内连接查询到的是两张表的交集数据。
(3)外连接,外连接查询的是一张表的全部数据和另外一张表的交集数据,格式: select * from A left/right join B on A.x=B.x where xxx=xxx;
(4)如何选择:如果需要查询两张表的交集数据使用等值连接或内连接(建议)、如果查询一张表的全部数据和另外一张表的交集数据则使用外连接.
JDBC
- 什么是JDBC?为什么要用JDBC?
(1)Java数据库连接, 是Sun提供的一套编程接口,用于通过Java语言连接数据库,对数据进行增删改查操作.
(2)为什么使用JDBC:因为Java语言需要连接多种数据库,如果没有JDBC,Java程序每一种数据库都需要学习一套API, 使用JDBC后,各个数据库厂商根据JDBC中方法声明写方法的实现类(驱动), 对于Java程序员而言,只需要掌握JDBC中的方法调用即可连接不同的数据库.
- 写出JDBC连接数据库的6个步骤?
(1)注册驱动
(2)获取连接
(3)创建一个Statement语句对象
(4)执行SQL语句
(5)处理结果集
(6)关闭资源
- 为什么要使用数据库连接池DBCP?
如果没有数据库连接池,一万次请求web服务器需要和数据库服务器建立一万次连接,频繁的开关连接非常浪费资源,使用连接池后可以将连接重用大大降低了连接的开关次数,从而提高执行效率。
- JDBC中的Statement 和PreparedStatement的区别?PreparedStatement的优点?
PreparedStatement 继承于 Statement.
(1)Statement 一般用于执行固定的没有参数的SQL语句。
(2)PreparedStatement 一般用于执行有?参数预编译的SQL语句。
(3)优点:PreparedStatement支持?操作参数,相对于Statement更加灵活。PreparedStatement可以防止SQL注入,安全性高于Statement。避免了拼接字符串,降低了出错的概率 。
- JDBC中大数据量的分页解决方法?
利用sql语句进行分页,这样每次查询出的结果集中就只包含某页的数据内容。
- 数据连接池的工作机制是什么?
J2EE 服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。
未完待续。。。