mysql面试必会6题经典_经典sql面试题及答案第7期

mysql面试必会6题经典_经典sql面试题及答案第7期deletefromsalarywherenotexists(selectwidfromworkerwhereworker.wid=salary.wid)a.直接创建索引和间接创建索引直接创建:使用sql语句创建间接创建:定义主键约束或者唯一性键约束,可以间接创建索引,主键默认为唯一索引。b.普通索引和唯一性索引普通索引:CREATEINDEXmycolumn_i…

大家好,又见面了,我是你们的朋友全栈君。

delete from salary where not exists (

select wid from worker where worker.wid = salary.wid)

a. 直接创建索引和间接创建索引

直接创建:使用sql语句创建

间接创建:定义主键约束或者唯一性键约束,可以间接创建索引,主键默认为唯一索引。

b. 普通索引和唯一性索引

普通索引:

CREATE INDEX mycolumn_index ON mytable (myclumn)

唯一性索引:保证在索引列中的全部数据是唯一的,对聚簇索引和非聚簇索引都可以使用:

CREATE UNIQUE COUSTERED INDEX myclumn_cindex ON mytable(mycolumn)

c. 单个索引和复合索引

单个索引:索引建立语句中仅包含单个字段,如上面的普通索引和唯一性索引创建示例。

复合索引:又叫组合索引,在索引建立语句中同时包含多个字段:

CREATE INDEX name_index ON username(firstname, lastname)

其中firstname为前导列。

d. 聚簇索引和非聚簇索引(聚集索引,群集索引)

聚簇索引:物理索引,与基表的物理顺序相同,数据值的顺序总是按照顺序排列:

CREATE CLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn) WITH ALLOW_DUP_ROW

其中WITH ALLOW_DUP_ROW表示允许有重复记录的聚簇索引。

非聚簇索引:

CREATE UNCLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn)

索引默认为非聚簇索引。

a. 对于复合索引,把使用最频繁的列做为前导列(索引中第一个字段)。如果查询时前导列不在查询条件中则该复合索引不会被使用。如:

create unique index PK_GRADE_CLASS on student (grade, class)

select * from student where class = 2 未使用到索引

select * from dept where grade = 3 使用到了索引

b. 避免对索引列进行计算,对where子句列的任何计算如果不能被编译优化,都会导致查询时索引失效。

c. 比较值避免使用NULL

d. 多表查询时要注意是选择合适的表做为内表。连接条件要充份考虑带有索引的表、行数多的表,内外表的选择可由公式:外层表中的匹配行数*内层表中每一次查找的次数确定,乘积最小为最佳方案。实际多表操作在被实际执行前,查询优化器会根据连接条件,列出几组可能的连接方案并从中找出系统开销最小的最佳方案。

e. 查询列与索引列次序一致。

f. 用多表连接代替EXISTS子句。

g. 把过滤记录数最多的条件放在最前面。

h. 善于使用存储过程,它使sql变得更加灵活和高效。

update B set B.value =

(select A.value from A where A.key = B.key)

where B.id in(select B.id from B, A where B.key = A.key);

事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。

在所以的DBMS中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。

select * from EMPLOYEE where FIRST_NAME not in (‘John’,’Roy’);

游标是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。

数据库一般的操作是集合操作,也就是对由WHERE子句和选择列确定的结果集作集合操作,游标是提供的一个非集合操作的途径。一般情况下,游标实现的功能往往相当于客户端的一个循环实现的功能,所以,大部分情况下,我们把游标功能搬到客户端。

游标是把结果集放在服务器内存,并通过循环一条一条处理记录,对数据库资源(特别是内存和锁资源)的消耗是非常大的,所以,我们应该只有在没有其他方法的情况下才使用游标。

select cid, cname, score, (case when score<60 then ‘fail’ else ‘pass’ end) as mark from course;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153442.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • LCD1602接线图_srd继电器接线图

    LCD1602接线图_srd继电器接线图转载于:https://my.oschina.net/surenpi/blog/481697

    2022年9月2日
  • 数字图像处理标准图像Lena的故事「建议收藏」

    数字图像处理标准图像Lena的故事「建议收藏」熟悉图像处理或者压缩的工程师、研究人员和学生经常在他们的实验或者项目任务里使用“Lenna”或者“Lena”的图像。Lenna图像已经成为被广泛使用的测试图像。今天,Lenna图像的使用被认为是数字图像历史上最重要的事件之一。然而,很少有人看过原始的图像并知道完整的关于Lenna的故事。这里3sBeta将综合收集的材料对此做一个详细的梳理。。。1.Lena图像的来源在数

    2022年6月19日
  • 一致性(Consistency),可用性(Avilable),分区容错性(Tolerance of network Partition)

    一致性(Consistency),可用性(Avilable),分区容错性(Tolerance of network Partition)网络摘抄理解:一致性:读操作总是能读取到之前完成的写操作结果,满足这个条件的系统称为强一致系统,这里的“之前”一般对同一个客户端而言;可用性:读写操作在单台机器发生故障的情况下仍然能够正常执行,而不需要等待发生故障的机器重启或者其上的服务迁移到其他机器;分区可容忍性:机器故障、网络故障、机房停电等异常情况下仍然能够满足一致性和可用性。自己的理解:一致性:如下图1中所示,Clie

    2022年7月25日
  • Redis入门_redis菜鸟教程

    Redis入门_redis菜鸟教程Redis文章目录Redis一、Redis概述二、Redis应用场景三、Redis的下载和安装四、Redis服务的启动五、Redis命令行工具六、Redis基础知识七、Redis数据类型1.key(键)2.String(字符串)3.List(列表)4.Set(集合)5.Zset(有序集合)6.Hash(哈希)八、实践案例九、Redis常用查询指令十、Jedis的使用十一、Redis可视化工具十二、持久化概念十三、RDB十四、AOF十五、AOF重写十六、RDB与AOF的选择一、Re

    2022年9月14日
  • java保留小数_Java保留两位小数的几种做法「建议收藏」

    java保留小数_Java保留两位小数的几种做法「建议收藏」页面或界面上展示的数据保留小数点后两位。为了达到这样的展示效果,本文列举了几个方法:1.使用java.math.BigDecimal2.使用java.text.DecimalFormat3.使用java.text.NumberFormat4.使用java.util.Formatter5.使用String.format……另外可以自己实现或者借用封装好的类库来实现,在这篇文章中…

    2022年9月24日
  • android常用布局详解「建议收藏」

    android常用布局详解「建议收藏」view和布局在一个Android应用程序中,用户界面通过View和ViewGroup对象构建。Android中有很多种View和ViewGroup,他们都继承自View类。View对象是Android平台上表示用户界面的基本单元。View的布局显示方式直接影响用户界面,View的布局方式是指一组View元素如何布局,准确的说是一个ViewGroup中包含的一些View怎么样布局。ViewGr…

    2022年6月2日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号