1. Oracle和MySQL的区别?
1、Oracle是大型数据库,而MySQL是中小型数据库。但是MySQL是开源的,但是Oracle是收费的,而且比较贵。
2、Oracle的内存占有量非常大,而mysql非常小
3、MySQL支持主键自增长,指定主键为auto increment,插入时会自动增长。Oracle主键一般使用序列。
4、MySQL字符串可以使用双引号包起来,而Oracle只可以单引号
5、MySQL分页用limit关键字,而Oracle使用rownum字段表明位置,而且只能使用小于,不能使用大于。
6、Oracle在处理长字符串的时候,长度是小于等于4000个字节,如果要插入更长的字符串,考虑用CLOB类型,插入修改记录前要做进行修改和 长度的判断,如果为空,如果长度超出返回操作处理.(CLOB类型是内置类型,它一般都作为某一行中的一列,有些数据库也有别名)
7、MySQL中0、1判断真假,Oracle中true false
8、MySQL中命令默认commit,但是Oracle需要手动提交
9、MySQL在windows环境下大小写不敏感 在unix,linux环境下区分大小写,Oracle不区分
2. Oracle的行转列
行转列 pivot 列转换 unpivot
pivot(聚合函数 for 列名 in(类型))
3. sql的执行顺序
开始->FROM子句->WHERE子句->GROUP BY子句->HAVING子句->ORDER BY子句->SELECT子句->LIMIT子句->最终结果
4. oracle实现分组查询
roup by 要分组的列名 对数据集合处理的函数,可以处理多行数据
--5个分组函数
--count --计数函数,用于数量的统计
--sum 求和函数,对数据进行求和
--avg 求评平均,对一组数据求平均值
--min ,求最小值
--max ,求最大值
5. 左连接怎么使用的
select * from table_1 left join table_2 on table_1.id = table_2.id
6. 索引怎么用,在一张表上创建很多索引可以吗,为什么?
create index 索引名 on 表名(列名) tablespace 表空间名
可以。因为.......(待补充)
7. 如果想查某个时间段的数据,该怎么查?
select * from table_1 where date between 时间段1 AND 时间段2
8. 数据库怎么优化查询?
1.尽量少用in操作符
2.尽量用not exists或者外连接替代not in操作
3.尽量不使用<>或者!=运算符
4.在设计表的时候,把索引列设置为not null
5.尽量不使用通配符%或者_作为查询字符串的第一个字符
6.where字句避免在索引列上计算使用
7.用>=代替>
8.利用SGA共享池,避开parse阶段
9.where后面的条件,表连接的语句在前,可以过滤掉最大数量记录的条件居后
10.使用表的别名,并将之作为每列的前缀
11.显式或者隐式运算的字段不能索引
12.用Union all 代替union
13.通过改变Oracle的SGA的大小
9. 索引的实现方式
btree索引 hash索引 R-tree索引 full-text 全文索引
10. MySQL的索引是是用什么数据结构,并介绍内部如何实现?
btree结构:
又叫多路平衡搜索数,一颗m叉的btree特性如下
1.树中每个节点最多包含m个孩子
2.除跟节点与叶子节点外,每个节点 只是有[ceil(m/2)]个孩子
3.若个节点不是 叶子节点,则至少有两个孩子
4.所有的叶子节点都在同一层
5.每个非叶子节点由n个key与n+1个指针组成,其中[ceil(m/2)-1]<=n<=m-1
11. 索引会对更新造成影响吗,为什么
会。因为虽然索引大大提高了查询效率,同时也降低了更新表的速度
12. 视图索引的创建
create unique index index_name on test(id);
13. 视图为什么比一般的语句好用?
因为是一种虚拟存在的表,不在数据中实际存在。可以简化查询
14. MySQL存储引擎有哪些,默认用哪个
myisam和innodb 默认innodb
15. 创建存储过程
create procedure 存储过程名(参数列表)
BEGIN
存储过程体(一组合法的sql语句)
END
16. 给出一个内查询的例子
select xxx from table_1 where id in (select id from table_2 where name = 'jack');
17. 数据库查询优化
同8.
18. 介绍一下innodb 和MyIsam,他们的区别
INNODB存储引擎是mysql的默认存储引擎,提供了具有提交,回滚,崩溃恢复能力的事务安全。但是对于MYLSAM的存储引擎,INNODB写的处理效率差一些,并且会占用更多的磁盘空间以保留数据和索引.
MyIsam不支持事务,也不支持外键,其优势就是访问速度快。对事务的完整性没有要求或者以select,为主的应用基本都可以使用这个引擎来创建表.
19. 数据库索引怎么使用?分类?在哪些地方使用过?
create [unique|fulltext] INDEX index_name
[USING index_type]
on tb_name;
索引的分类 :
单值索引:即一个索引只包含单个列一个表可以有多个单列索引
唯一索引:索引的列的值必须唯一,但允许有空值
复合索引:即一个索引包含多个列
在大量数据中查找等操作的时候,可以使用索引提高检索效率。
20. 事务,事务的特性?
- 事务就是用户定义的一系列执行SQL语句的操作, 这些操作要么完全地执行,要么完全地都不执行, 它是一个不可分割的工作执行单元。
- 原子性,一致性,隔离性,持久性
21. truncate、delete、drop的区别?
1.delete可以加where ,truncate不可以
2.truncate删除,效率高一点点
3.加入要删除的表中有自增长列
如果用delete删除后,在插入数据,自增长的列值从断点 开始
而truncate删除后,再插入数据 自增长的列的值从1开始.
4.truncate删除没有返回值的,delete是有返回值
5.truncate删除不能回滚,delete删除可以回滚
6.drop
语句将表所占用的空间全释放掉。
22. oracle提供的内置函数?
- 字符函数:
length() 返回str长度
trim() 去除字符串两边空格
lower() 转小写
upper() 转大写
concat() 拼接两个字符串
instr(str,find_str) 查询find_str在str是否存在
substr() 截取字符串
- 转换函数:
1、to_number(str)
:将字符类型转换成number类型。
2、to_char(time,format)
:将time时间类型按照format的格式转换成字符类型。
3、to_date(str,format)
:将str类型的时间按照format的格式转换成date时间类型
- 数值型函数
1、round(num,length)
:num小数保留length位长度,并且四舍五入。
2、ceil(num)
:返回向上取整num的结果。
3、floor(num)
:返回向下取整num的结果。
23. 连接表的时候是怎么操作的
select * from table_1 join table_2 on table_1.id=table_2.id where 限制条件
24. 有两个数组 任意类型 怎么最快做到查询其中有哪些数据是重复的
(不知道)
25. mysql怎么做全连接
select 查询列表
from 表1 别名 [full outer]
join 表2 别名
on 连接条件
[where 筛选条件]
26. 如何实现多条修改
可以使用while循环语句,或者IF--THEN语句结合。
27. 分页组件怎么是实现,在sql中怎么实现
在Oracle中,使用rownum进行分页,在MySQL中,使用limit关键字。
28. C3P连接池的使用和好处
ComboPooledDataSource source = new ComboPooledDataSource();
source.setDriverClass("com.mysql.jdbc.Driver");
source.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/aa?useUnicode=true&characterEncoding=utf-8");
source.setUser("root");
source.setPassword("000");
//获取链接
System.out.println(source.getConnection());
好处:C3P0连接池不仅可以自动清理不再使用的Connection,还可以自动清理Statement和ResultSet。
29. 手机端数据库的了解
主要有5种。
BerkeleyDB Couchbase-lite LevelDB SQLite UnQlite
30. oracle实例和用户的关系
用户是在oracle实例下建立的。不同实例可以建相同名字的用户。
31. JDBC怎么连接数据库
//1.加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
//2.获得数据库链接
Connection conn=DriverManager.getConnection(URL, USER, PASSWORD);
//3.通过数据库的连接操作数据库,实现增删改查(使用Statement类)
Statement st=conn.createStatement();
ResultSet rs=st.executeQuery("select * from user");
//4.处理数据库的返回结果(使用ResultSet类)
while(rs.next()){
System.out.println(rs.getString("user_name")+" "+rs.getString("user_password"));
}
//关闭资源
rs.close();
st.close();
conn.close();
32. MySQL创建和删除表的关键字
创建:create 删除:drop
33. 比较表和视图的区别
是一种虚拟存在的表,不在数据中实际存在。视图可以简化查询。
34. oracle中的五个约束条件是什么?
主键约束 唯一约束 检查约束 默认约束 外键约束
35. 事物的传播属性有哪几种?分别有什么作用(Spring)
1、mandatory 表示当前方法必须在事务中进行,当前事务不存在,则抛出异常
2、required (默认的)当前方法必须在事务中进行,如果当前事务存在,则在当前事务中执行,如果不存在当前事务,则启动一个新的事务。
3、required_new 这个方法要求在新的事务中执行,会启动一个新的事务,如果存在当前事务,则该事务会先被挂起。
4、support 该方法可以不在事务中,但是如果在存在当前事务,那就在当前事务中执行。
5、never 给方法不可以在事务中执行,如果存在当前事务则抛出异常。
6、not_support 该方法不可以在事务中执行,如果存在当前事务,则该事务会被挂起。
7、nest,嵌套事务。如果当前事务不存在,则nest和requied相同。
你的文章让我学到了很多知识,非常感谢。 https://www.yonboz.com/video/2006.html
你的文章让我感受到了无尽的欢乐,谢谢分享。 http://www.55baobei.com/FxKPUXQ9Vu.html
《智齿2021》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/29169.html
mycaizhi.com
你的文章让我感受到了不一样的视角,非常精彩。 https://www.4006400989.com/qyvideo/41311.html
不错不错,我喜欢看 www.jiwenlaw.com
不错不错,我喜欢看 https://www.ea55.com/
想想你的文章写的特别好
叼茂SEO.bfbikes.com
继续整理吧
嘿嘿好滴嗷~~