数据库

一 数据库
1.常问数据库查询、修改(SQL查询包含筛选查询、聚合查询和链接查询和优化问题,手写SQL语句,例如四个球队比赛,用SQL显示所有比赛组合;举例2:选择重复项,然后去掉重复项;) 数据库里的密码如何加密(md5);

(1)数据库的密码加密:单向加密,insert into users (username,password) values (‘mike’,MD5(‘guessme’));
(2)双向加密:insert into users (username ,password) values (‘mike’,ENCODE(‘guessme’,’abanaafn’));
(3)SQL筛选查询:select * from user where user_id in (select user_id from user group by user_id having count(user_id)>1) order by user_id desc;
(4)SQL聚合查询:select user_id from user group by user_id;
(5)SQL衔接查询:内连接.select s.name,m.mess from student s inner join mark m on s.id=m.studentid;左外连接:select s.name, m.mess from student s left join mark m on s.id=m.studentid;右外连接:select s.name, m.mess from student s right join mark m on s.id=m.studentid;全外连接:select s.name ,m.mess from student s full join mark m on s.id=m.studentid;
(6)球队比赛组合:select count() from department as a ,department as b a.name<>b.name;
(7)SQL选择重复语句:select id ,name from user where id in (select id from user group by id having count(1)>2);去除重复语句:select id from user group by id having count(
)>1;
(8)数据库优化:prepareStatement比Statement性能高,一个sql发给服务器去执行.涉及步骤:语法检查,语义定义,编译和缓存.有外检约束会影响插入和删除功能,如果程序能保证数据的完整性,那么设计数据库的时候就去掉外键.sql语句全部大写,特别是列名和表名.

  1. 如何实现数据库分页功能? SQL语句复杂的关联表查询,累计求和。
    在不使用框架情况下,如何连接数据库?
    数据库连接完之后,需要关闭的两个接口是什么?
    关闭数据库过程中最容易抛出的异常是什么?

(1)分页:”select * from user limit “+(pageNo-1)*pageSize+”,”+pageSize;
(2)求和:select * from user1 union select * from user2;
(3)手动连接数据库:Connection cn=null;PreparedStatement pst=null;Result rs=null;try{Class.forname(driverClassName);cn=DriverManager.getConnection(url,username,password);pst=cn.prepareStatement(“sql”);pst.setString(1,studentName);Result rs=pst.executeQuery();while(rs.next()){system.out.println();}catch(Exception e){e.printStackTrace();}finally{if(rs!=null){rs.close();}if(pst!=null){pst.close()}if(cn!=null){cn.close();}}}
(4)Result prepareStatement 结果集和sql传输
(5)Exception

  1. Oracle索引的优缺点、视图和存储过程、连接符是什么?默认端口是什么?MySQL什么是左链接、右链接和内链接?数据库中查询左链接、右链接和内链接结果是什么?
    数据库的存储原理,讲一讲?

(1)端口:1521;
(2)内连接就是左表和右表相同的数据.
外连接分为:左外连接、右外连接、全外连接
左外连接就是以左表为准,去匹配右表,左表有多少条数据,结果就是多少条数据
右外连接就是与左外连接反之,以右表为准,去匹配左表,右表有多少条数据,结果就是多少条数据。
全外连接数据条数不一定,相当与是左外连接 和右外连接 的综合。
(3)oracle索引分为:聚集索引,非聚集索引,唯一索引;优点:方便查询,在数据量大时排序更宜查询;缺点:查询时需要进行重新排序,减少了效率。物理索引缺点 建立索引效率低,只能建一个更有说服力的;
(4)连接符为”||”或CONCAT();
(5)视图:其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询 或一个虚拟表。视图来源于表,所有对视图数据的修改最终都会被反映到视图的基表中,这些修改必须服从基表的完整性约束,并同样会触发定义在基表上的触发器
(6)存储过程:oracle有系统存储过程和自定义存储过程,为了完成特定功能的sql语句集,经编译后存储在数据库中,用户通过特定的存储过程名来执行
(7)存储原理:当用户创建索引时,oracle会自动的在表空间里创建索引段来存储索引的数据;

  1. Char里面可以存放汉字吗?

(1)char型变量就是用来存储Unicode编码字符的,Unicode编码字符集中包含了汉字,所以可以存储汉字,如果某个特殊的汉字没有包含在Unicode编码字符集中,那么char型变量就不能存储,Unicode占用两个字节,所以char型的变量也是占用两个字节.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值