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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • NYOJ129 决策树 【并检查集合】

    NYOJ129 决策树 【并检查集合】

    2022年1月1日
    54
  • ubuntu16.04 下 卸载CUDA9.1

    ubuntu16.04 下 卸载CUDA9.1网上很多教程删除都全安装其他还会出错在这把它删除,在命令行中输入sudoapt-getremovecuda*sudoapt-getremove–purgecuda*sudoapt-getupdate然后在目录切换到/usr/local/下cd/usr/local/sudorm-rcuda-9.1搞定啦可以重新安装其他版本啦…

    2022年6月16日
    55
  • markersize是什么意思_Marker

    markersize是什么意思_Marker为什么80%的码农都做不了架构师?>>>…

    2022年10月22日
    0
  • Linux 修改文件权限

    Linux 修改文件权限目录:1、介绍:2、权限说明3、用户4、权限设置5、权限设置格式:(1)增加权限:(2)撤销权限(3)无任何权限1、介绍:​ Linux系统中,每个文件或目录都有访问许可权限,用它来确定以何种方式对文件或目录进行访问和操作。在Linux中,如果要对文件的权限进行修改,那么可在终端中使用chmod命令对其文件的权限进行修改,但是chmod命令修改文件权限有两种方式:1、字母法,2、数字法2、权限说明​ (1)只读:表示只允许读取内容,而禁止其对该文件做其他任何操作​ 字母法:‘r’

    2022年9月11日
    0
  • animation rotate_canvas scale

    animation rotate_canvas scaleScaleAnimation、RotateAnimation、ScaleAnimation、TranslateAnimation详解

    2022年10月15日
    0
  • 查看linux系统版本命令

    查看linux系统版本命令一。查看内核版本命令:1)[root@SOR_SYS~]#cat/proc/versionLinuxversion2.6.18-238.el5(mockbuild@x86-012.build.bos.redhat.com)(gccversion4.1.

    2022年4月29日
    43

发表回复

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

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